Interaksi usbfs tampaknya telah berubah beberapa kali sejak pertanyaan ini awalnya dijawab. Jadi, inilah cara saya memutar daya port hub di Ubuntu Oneiric Ocelot dari Bash Shell.
Telusuri nomor bus dan perangkat:
sudo lsusb -v|less
Temukan perangkat di hierarki port bus / hub menggunakan nomor bus dan perangkat:
sudo lsusb -t|less
Sintaksnya sepertinya 'bus-port.port.port.port.port...' Misalnya, mouse saya terhubung ke hub eksternal yang terhubung ke hub komputer saya yang terhubung secara internal ke hub root:
/: 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
Jadi, '2-1.1.1' dalam kasus di atas. Terakhir, putar daya port:
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
Saya belum memasang penganalisis protokol untuk melihat apa yang sebenarnya terjadi di bus, tetapi saya tahu lampu mouse saya mati saat saya melepaskannya. Saya menduga pada lapisan bawah ini berinteraksi dengan pengontrol host EHCI untuk benar-benar mematikan daya di port. Hal ini sangat berguna untuk perangkat yang disematkan, seperti webcam UVC, yang sepertinya tidak pernah berfungsi dengan baik dan sebaliknya akan memerlukan booting ulang sistem untuk menyetel ulang.
Lihat juga udevadm
perintah.
Ada entri sys untuk ini di Linux. Dari Dokumentasi/usb/power-management.txt:
kekuatan/tingkat
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.)
Sesuatu seperti:echo on > /sys/bus/usb/devices/usb5/power/level
Anda mungkin perlu bermain dengan pengaturan penangguhan otomatis juga. Tanpa memberi tahu kernel untuk berhenti mencoba, itu mungkin menangguhkan port secara otomatis.
Semoga berhasil!