J'ai une lampe USB que j'ai spécifiquement achetée afin de l'éteindre par programme à un certain moment, j'ai donc besoin de couper l'alimentation de son port USB.
Je crois que j'ai un hub USB sur USB6. La lampe est connectée à l'un des ports de ce concentrateur:
#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
Voici ce que j'ai essayé:
Deux solutions sont là , la première suggère:
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup
echo suspend > /sys/bus/usb/devices/usb1/power/level # turn off
mais j'obtiens write error: Invalid argument
en essayant d'écrire à /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 deuxième solution:
sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'
ce qui coupe l'alimentation du périphérique hub USB.
J'essayais également de suivre ceci :
Mais la sortie de lsusb -t
se bloque simplement:
$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C
Ce qui m'empêche d'utiliser cette méthode pour obtenir la partie '2-1.1':
echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind
Existe-t-il un autre moyen d'obtenir ces informations?
Sinon, existe-t-il un moyen de couper l'alimentation de l'ensemble du sous-système USB? Quelque chose comme ça modprobe -r usb_etc
?
Mon noyau est:
$uname -r
3.2.0-4-amd64
lsusb -t
appel et je n'ai rien trouvé d'utile dans le temps que j'ai dû le déboguer. Honnêtement, je n'ai pas le temps pour l'instant de trouver des bogues dans lsub, et je ne peux même pas le reproduire maintenant, donc cela dépend probablement des appareils qui sont branchés. Je vais devoir attendre pour rentrer à la maison pour essayer de reproduisez-le.