This question was migrated from Unix & Linux Stack Exchange because it can be answered on Stack Overflow. Migrated去年。Learn more
为了调用USB驱动程序的探测函数,我需要防止usbhid首先声明它。为此,我写了一个udev规则来解除设备的绑定。
子系统=“usb”,驱动程序=“usbhid”,属性{idvendor}=“ffff”,
attrs{idproduct}=“ffff”,运行=“/bin/sh-c”echo-n$id:1.0>
/sys/bus/usb/drivers/usbhid/unbind''
虽然这样做有效,但分发驱动程序的标准做法是什么?我还需要打包这个规则吗?有没有办法让我自己的司机优先于usbhid?

最佳答案

内核根据MODULE_DEVICE_TABLEs为每个设备选择驱动程序。hid设备表被认为比通用usb设备表更具体,因此如果您的设备声明usb hid设备类,那么您的驱动程序可能也应该包括hid类模块设备表。
匹配算法倾向于特定的匹配,而不是基于类的通用匹配,因此,如果设备表条目包含其特有的某些USB或HID设备属性,则驱动程序应优先于通用usbhid驱动程序。
如果您的idvendor和idproduct标识符实际上都是0xffff,那么我猜您处理的是一个原型设备,它还没有正确的usb供应商/设备标识符。你会想修好的。

07-24 12:54