如何将驱动程序与USB设备绑定?

时间:2010-10-15 23:17:04

标签: linux usb driver bind device

我正在为linux编写USB设备驱动器。这是一个操纵杆。 每次插入时,linux都会加载一个hid驱动程序。有什么方法可以告诉Linux在我插入时加载我的?或者至少不加载默认值?

我可以在默认驱动程序的unbind中回显id,并在我的驱动程序绑定中回显它;但我想要一些更自动的东西.. 感谢

3 个答案:

答案 0 :(得分:11)

自己的USB驱动程序优先于usbhid

如果要阻止绑定到usbhid驱动程序,可以使用其HID_QUIRK_IGNORE(= 4)设置。要坚持使用Karl Bielefeldt的例子,添加

options usbhid quirks=0x15c2:0x0043:0x04

到某个/etc/modprobe.d/*.conf文件(也许重新创建你的initramfs)。这将告诉hid-core忽略该设备。所以usbhid会看一下它,但是留给其他司机代替。

自己的HID驱动程序优先于hid-generic

但是,如果您的其他驱动程序是HID驱动程序而不是USB驱动程序,那么您需要 usbhid绑定到USB级别的驱动程序,并且您需要自己的HID驱动程序优先于hid-generic。这是我面临的问题,我还没有找到解决方案,缺少解绑和重新绑定设备。

答案 1 :(得分:4)

Here's一个针对类似问题修复的线程。总而言之,您可以在/etc/udev/rules.d个文件中添加以下内容:

SYSFS{idVendor}=="15c2", SYSFS{idProduct}=="0043", MODE="0666", PROGRAM="/bin/sh -c 'echo -n $id:1.0 >/sys/bus/usb/drivers/usbhid/unbind;\
echo -n $id:1.1 >/sys/bus/usb/drivers/usbhid/unbind'"

答案 2 :(得分:1)

http://lwn.net/Articles/143397/与上述答案非常相似,可能还有一些细节。