我有一块 USB 硬件,我知道它的驱动程序。但是,vendor id 和 product id 与驱动程序中注册的 VID、PID 对不匹配。linux中有没有办法强制驱动程序与已知设备相关联,不涉及内核模块重新编译以添加PID / VID对?
3 回答
在 sysfs 树中找到该模块。在这种情况下,它在
/sys/bus/usb-serial/drivers/cp2101
在此目录中,有一个new_id
文件条目可用于动态添加 VID PID 对,如下所示:
echo VID PID >new_id
这是有关此功能的LWN 条目
如果您想永久更改此更改并将特定驱动程序分配给设备(VID、PID),您可能会发现此答案很有用。
例如创建/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'"
替换1345
为您的 VID 和6005
您的 PID。
更换xpad
合适的驱动程序。
运行以下命令:
$ sudo udevadm control --reload
拔下并重新插入设备并检查是否加载了新驱动程序。
此处显示的示例用于修复驱动程序问题Speedlink Strike FX Gamepad (SL-6537-BK)
您实际上不需要重新编译整个内核,仅使用更新的匹配表重新编译相关的内核模块就足够了,以防这个答案不适用于您的内核。