USB:在 Linux 上禁用和重新启用设备

USB:在 Linux 上禁用和重新启用设备

我的 USB 设备有时会挂起。由于拔出/插入它确实很痛苦(桌子下、东西后面的电缆......),有没有一种方法可以虚拟地拔出/插入设备?例如关闭其电源然后再将其恢复?

谢谢

答案1

尝试使用USBDEVFS_RESETioctl。

如果您的系统没有附带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

在我的网站上查看更多相关内容其他答案

相关内容