我有一块USB硬件,我知道它的驱动程序。 但是,供应商ID和产品ID与驱动程序中注册的VID,PID对不匹配。在linux中是否有办法强制驱动程序与已知设备关联,而不涉及内核模块重新编译以添加PID / VID对?
答案 0 :(得分:21)
在sysfs树中查找模块。在这种情况下,它在
/sys/bus/usb-serial/drivers/cp2101
在此目录中,有一个new_id
文件条目可用于动态添加VID PID对,如下所示:
echo VID PID >new_id
以下是关于此功能的LWN entry
答案 1 :(得分:1)
您不需要实际重新编译整个内核,仅使用更新的匹配表重新编译相关内核模块就足够了,以防this回答,对您的内核无效。
答案 2 :(得分:0)
如果要永久保留此更改并将特定的驱动程序分配给设备(VID,PID),您可能会发现this答案很有用。
例如,创建包含内容的新文件/etc/udev/rules.d/98-joystick.rules
ACTION ==“ add”,ATTRS {idVendor} ==“ 1345”,ATTRS {idProduct} ==“ 6005”,RUN + =“ / sbin / modprobe xpad” RUN + =“ / bin / sh -c'echo 1345 6005> / sys / bus / usb / drivers / xpad / new_id'“
用您的VID替换1345
,用PID替换6005
。
用适当的驱动程序替换xpad
。
运行以下命令:
$ sudo udevadm控件--reload
拔下设备插头,然后检查是否已加载新的驱动程序。
此处显示的示例用于解决Speedlink Strike FX Gamepad (SL-6537-BK)
的驱动程序问题