如果我在 Linux 上使用修改后的 usb 框架驱动程序,并且我在已插入 USB 设备的情况下安装模块,则不会调用探测函数。我需要拔下并重新插入设备才能激活驱动程序。这不是例如串行驱动程序的情况,我做了一些测试。是否有一个原因?如何让探测函数被调用?
问问题
3869 次
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
于 2013-05-05T07:11:33.933 回答
1
我们的某些软件正在从 /proc/bus/usb 打开设备,并且该设备已被 usbfs 驱动程序声明,因此新驱动程序无法声明该设备。
于 2010-03-29T13:28:25.833 回答