1

如果我在 Linux 上使用修改后的 usb 框架驱动程序,并且我在已插入 USB 设备的情况下安装模块,则不会调用探测函数。我需要拔下并重新插入设备才能激活驱动程序。这不是例如串行驱动程序的情况,我做了一些测试。是否有一个原因?如何让探测函数被调用?

4

3 回答 3

4

几乎所有 USB HID 设备都由 usbhid 驱动程序自动管理。尝试以下操作:

sudo rmmod usbhid
sudo insmod your_driver
sudo insmod usbhid
于 2010-11-17T13:05:22.487 回答
3

您可能需要从 usbhid 取消绑定您的设备并将其绑定到您的驱动程序:

  • 尝试在以下位置找到小偷司机:/sys/bus/usb/drivers/usbhid/
  • 解绑它:echo -n "1-1:1.0" > /sys/bus/usb/drivers/usbhid/unbind
  • 绑定您的设备:
    • echo <vendor> <product> > /sys/bus/usb/drivers/my_driver/new_id 或者如果您已经有一个总线 ID:
    • echo -n "1-1:1.0" > /sys/bus/usb/drivers/my_driver/bind

http://www.ha19.no/usb/http://lwn.net/Articles/143397/

于 2013-05-05T07:11:33.933 回答
1

我们的某些软件正在从 /proc/bus/usb 打开设备,并且该设备已被 usbfs 驱动程序声明,因此新驱动程序无法声明该设备。

于 2010-03-29T13:28:25.833 回答