27

我有一块 USB 硬件,我知道它的驱动程序。但是,vendor id 和 product id 与驱动程序中注册的 VID、PID 对不匹配。linux中有没有办法强制驱动程序与已知设备相关联,不涉及内核模块重新编译以添加PID / VID对?

4

3 回答 3

28

在 sysfs 树中找到该模块。在这种情况下,它在

/sys/bus/usb-serial/drivers/cp2101

在此目录中,有一个new_id文件条目可用于动态添加 VID PID 对,如下所示:

echo VID PID >new_id

这是有关此功能的LWN 条目

于 2009-01-14T13:07:08.530 回答
5

如果您想永久更改此更改并将特定驱动程序分配给设备(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)

于 2018-10-23T07:46:42.483 回答
1

您实际上不需要重新编译整个内核,仅使用更新的匹配表重新编译相关的内核模块就足够了,以防这个答案不适用于您的内核。

于 2009-01-14T13:48:26.997 回答