我的 USB 设备有时会挂起。由于拔出/插入它确实很痛苦(桌子下、东西后面的电缆......),有没有一种方法可以虚拟地拔出/插入设备?例如关闭其电源然后再将其恢复?
谢谢
答案1
尝试使用USBDEVFS_RESET
ioctl。
如果您的系统没有附带usbreset
实用程序作为 的一部分usbutils
,您可以从https://github.com/gregkh/usbutils/blob/master/usbreset.c与只是cc usbreset.c -o usbreset
.
在某些设备(例如我的路由器)上,您必须重置它所连接的集线器而不是设备才能使其生效。
# ./usbreset
Usage:
usbreset PPPP:VVVV - reset by product and vendor id
usbreset BBB/DDD - reset by bus and device number
usbreset "Product" - reset by product name
Devices:
Number 001/004 ID 062a:4101 2.4G Keyboard Mouse
Number 001/006 ID 03f0:e111 DeskJet 2130 series
Number 001/002 ID 05e3:0608 USB2.0 Hub
Number 001/005 ID 248a:8514 Wireless Receiver
Number 001/003 ID 05e3:0608 USB2.0 Hub
$ ./a.out 062a:4101
答案2
接受的USBDEVFS_RESET
解决方案不如重新插入(基于内核消息)。最好使用“端口”接口,例如:
echo 1 > /sys/bus/usb/devices/3-2.1/port/disable
在我的网站上查看更多相关内容其他答案。