特定の時間にプログラムでオフにするために特別に購入したusbランプがあります。そのため、USBポートの電源を切る必要があります。
usb6にusb-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
私が試したものは次のとおりです。
2つのソリューションがここにあり、最初の提案は次のとおりです。
echo disabled > /sys/bus/usb/devices/usb1/power/wakeup
echo suspend > /sys/bus/usb/devices/usb1/power/level # turn off
しかし、私はwrite error: Invalid argument
に書き込もうとすると/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
2番目の解決策:
sudo bash -c 'echo 0 > /sys/bus/usb/devices/usb6/power/autosuspend_delay_ms; echo auto > /sys/bus/usb/devices/usb6/power/control'
これにより、usb-hubデバイスの電源がオフになります。
しかし、出力がlsusb -t
ハングするだけです:
$lsusb -t
4-1:0.0: No such file or directory
4-1:0.1: No such file or directory
^C
これにより、このメソッドを使用して「2-1.1」の部分を取得できなくなります:
echo '2-1.1' > /sys/bus/usb/drivers/usb/unbind
この情報を取得する別の方法はありますか?
あるいは、USBサブシステム全体の電源を切る方法はありますか?のようなものmodprobe -r usb_etc
?
私のカーネルは:
$uname -r
3.2.0-4-amd64
lsusb -t
呼び出しを追跡しようとしましたが、デバッグしなければならなかった時間内に有用なものが見つかりませんでした。正直なところ、lsubのバグを見つける時間がないので、すぐに再現することすらできないので、プラグインされているデバイスに依存する可能性があります。それを再現します。