この質問が最初に回答されてから、usbfs のやり取りは何度も変更されたようです。そこで、Bash シェルから Ubuntu Oneiric Ocelot のハブ ポートの電源を入れ直す方法を次に示します。
バスとデバイス番号を検索します:
sudo lsusb -v|less
バスとデバイス番号を使用して、バス/ハブ ポート階層でデバイスを見つけます:
sudo lsusb -t|less
構文は 'bus-port.port.port.port.port...' のようです。たとえば、私のマウスは、ルート ハブに内部的に接続するコンピューターのハブに接続する外部ハブに接続されています:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ehci_hcd/2p, 480M
|__ Port 1: Dev 2, If 0, Class=hub, Driver=hub/6p, 480M
|__ Port 1: Dev 3, If 0, Class=hub, Driver=hub/3p, 480M
|__ Port 1: Dev 6, If 0, Class=HID, Driver=usbhid, 1.5M
したがって、上記の場合は「2-1.1.1」です。最後に、ポートの電源を入れ直します:
echo '2-1.1.1'|sudo tee /sys/bus/usb/drivers/usb/unbind
sleep 1
echo '2-1.1.1'|sudo tee /sys/bus/usb/drivers/usb/bind
バスで実際に何が起こっているかを確認するためにプロトコル アナライザーを接続したことはありませんが、バインドを解除するとマウスのライトが消えることはわかっています。下位層では、これが EHCI ホスト コントローラーとやり取りして、実際にポートの電源をオフにしていると推測しています。これは、UVC Web カメラなどの組み込みデバイスで特に役立ちます。これらのデバイスは、正常に機能していないように見え、リセットするためにシステムの再起動が必要になる場合があります。
udevadm
も参照してください コマンド。
Linux には、このための sys エントリがあります。 Documentation/usb/power-management.txt から:
<ブロック引用>パワー/レベル
This file contains one of three words: "on", "auto",
or "suspend". You can write those words to the file
to change the device's setting.
"on" means that the device should be resumed and
autosuspend is not allowed. (Of course, system
suspends are still allowed.)
"auto" is the normal state in which the kernel is
allowed to autosuspend and autoresume the device.
"suspend" means that the device should remain
suspended, and autoresume is not allowed. (But remote
wakeup may still be allowed, since it is controlled
separately by the power/wakeup attribute.)
次のようなもの:echo on > /sys/bus/usb/devices/usb5/power/level
自動サスペンド設定も試してみる必要があるかもしれません。カーネルに試行を停止するように指示しないと、ポートが自動的に一時停止される場合があります。
頑張ってください!