【问题标题】:Forcing driver to device match强制驱动程序与设备匹配
【发布时间】:2018-10-24 18:08:29
【问题描述】:

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

【问题讨论】:

    标签: linux usb kernel


    【解决方案1】:

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

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

    在这个目录下,有一个new_id文件入口,可以像这样动态添加VID PID对:

    echo VID PID >new_id

    这是一个关于此功能的LWN entry

    【讨论】:

    • +1:很好的答案。在我的 USB 机器上,我发现路径为:/sys/bus/usb/drivers/usb/usb4/idVendor 和 /sys/bus/usb/drivers/usb/usb4/idProduct
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-14
        • 1970-01-01
        • 2012-08-02
        • 2011-03-24
        • 2019-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多