如何在 Linux 中强制驱动程序与设备匹配?

问题描述 投票:0回答:3

我有一个 USB 硬件,我知道它的驱动程序。

但是,供应商 ID 和产品 ID 与驱动程序中注册的 VID、PID 对不匹配。

Linux 中是否有一种方法可以强制驱动程序与已知设备关联,并且不涉及内核模块重新编译来添加 PID / VID 对?

linux usb kernel
3个回答
32
投票

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

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

在此目录中,有一个

new_id
文件条目,可用于动态添加 VID PID 对,如下所示:

echo VID PID >new_id

这里有一个关于此功能的LWN 条目


9
投票

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


1
投票

您实际上不需要重新编译整个内核,仅重新编译具有更新的匹配表的相关内核模块就足够了,以防 this 答案在您的内核上不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.