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