Ich habe eine USB-Lampe, die ich speziell gekauft habe, um sie zu einem bestimmten Zeitpunkt programmgesteuert auszuschalten. Daher muss ich die Stromversorgung für den USB-Anschluss unterbrechen.
Ich glaube, ich habe einen USB-Hub bei USB6. Die Lampe ist an einen der Anschlüsse in diesem Hub angeschlossen:
#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
Folgendes habe ich versucht:
Zwei Lösungen sind hier , die erste schon sagt:
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup
echo suspend > /sys/bus/usb/devices/usb1/power/level # turn off
aber ich bekomme write error: Invalid argument
beim Versuch zu schreiben /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
Die zweite Lösung:
sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'
Dadurch wird die Stromversorgung des USB-Hub-Geräts ausgeschaltet.
Ich versuche auch zu folgen , dies :
Aber die Ausgabe von lsusb -t
hängt nur:
$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C
Das hindert mich daran, diese Methode zu verwenden, um den '2-1.1'-Teil dazu zu bringen:
echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind
Gibt es eine alternative Möglichkeit, diese Informationen zu erhalten?
Alternativ gibt es eine Möglichkeit, das gesamte USB-Subsystem auszuschalten? So etwas wie modprobe -r usb_etc
?
Mein Kernel ist:
$uname -r
3.2.0-4-amd64
lsusb -t
Anruf zu verfolgen , und habe in der Zeit, in der ich ihn debuggen musste, nichts Nützliches gefunden. Ich habe momentan ehrlich gesagt keine Zeit, Fehler in lsub zu finden, und ich kann sie momentan nicht einmal reproduzieren. Das hängt also wahrscheinlich von den angeschlossenen Geräten ab. Ich muss warten, bis ich nach Hause komme, um es zu versuchen reproduziere es.