Ho una lampada USB che ho acquistato appositamente per spegnerla a livello di programmazione in un determinato momento, quindi devo togliere l'alimentazione alla sua porta USB.
Credo di avere un hub USB su USB6. La lampada è collegata a una delle porte di questo hub:
#myhost$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 008 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
...
...
Bus 008 Device 006: ID 050d:0234 Belkin Components F5U234 USB 2.0 4-Port Hub
Ecco cosa ho provato:
Due soluzioni sono qui , la prima suggerisce:
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup
echo suspend > /sys/bus/usb/devices/usb1/power/level # turn off
ma ottengo write error: Invalid argument
quando provo a scrivere a /sys/bus/usb/devices/usb1/power/level
:
$sudo bash -c 'echo disabled > /sys/bus/usb/devices/usb6/power/wakeup'
$echo suspend|sudo tee /sys/bus/usb/devices/usb6/power/level suspend
tee: /sys/bus/usb/devices/usb6/power/level: Invalid argument
$sudo bash -c 'echo suspend> /sys/bus/usb/devices/usb6/power/level'bash: line 0: echo: write error: Invalid argument
La seconda soluzione:
sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'
che spegne il dispositivo hub USB.
Stavo anche cercando di seguire questo :
Ma l'output di si lsusb -t
blocca:
$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C
Il che mi impedisce di utilizzare questo metodo per ottenere la parte '2-1.1' a questo:
echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind
Esiste un modo alternativo per ottenere queste informazioni?
In alternativa, c'è un modo per spegnere l'intero sottosistema USB? Qualcosa del genere modprobe -r usb_etc
?
Il mio kernel è:
$uname -r
3.2.0-4-amd64
lsusb -t
chiamata e non ho trovato nulla di utile nel tempo in cui ho dovuto eseguire il debug. Onestamente non ho tempo in questo momento per trovare bug in lsub e non riesco nemmeno a riprodurlo in questo momento, quindi probabilmente dipende dai dispositivi che sono collegati. Dovrò aspettare per tornare a casa per provare a riproducilo.