【问题标题】:ftdi d2xx conflict with ftdi_sio on linux - How to remove ftdi_sio automaticallyftdi d2xx 与 Linux 上的 ftdi_sio 冲突 - 如何自动删除 ftdi_sio
【发布时间】:2015-11-29 08:59:17
【问题描述】:

我有一个带有 ftdio usb 到串行芯片的射频阅读器。我能够编写一个程序来使用 ftdi d2xx 库来控制它。到目前为止一切顺利。

问题是当阅读器重新连接到 PC 时,我必须使用以下命令删除 ftdi_sio 和 usbserial 模块:

sudo rmmod ftdi_sio
sudo rmmod usbserial

如果我不运行代码,我将无法使用 ftdi d2xx 库连接到阅读器。

我希望能够添加一个 udev 规则,以便在连接阅读器时内核卸载 ftdi_sio 和 usbserial(或不首先加载它们)

我已将新的 udev 规则添加到 /etc/udev/rules.d,名称为 99-ftdi-sio.rule

ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",  RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"

但它不起作用。有人知道如何解决这个问题吗?

【问题讨论】:

    标签: linux udev usbserial ftdi


    【解决方案1】:

    idVendor 和 idProduct 是否正确?

    那就试试吧:

    ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666",  RUN+="/bin/sh -c 'rmmod ftdi_sio && rmmod usbserial'"
    

    如果您知道设备编号,则可以尝试使用此脚本:

    RUN+="/bin/sh -c 'echo -n 1-1:1.0 > /sys/bus/usb/drivers/ftdi_sio/unbind'"
    

    【讨论】:

    • 不走运。我已将其添加到99-ftdi-sio.rule,然后尝试使用sudo udevadm control --reload-rules 重新加载规则,然后再次连接设备,lsmod | grep ftdi 仍然显示加载了 ftdi_sio 和 usbserial 模块。
    • 另外,我从 lsusb 获得了供应商和产品:Bus 002 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC 0403 为供应商,6001 为产品。
    • 文件应该被称为 somename.rules 而不是 .rule 首先尝试仅卸载 ftdi_sio。它对我有用。 rmmod 也是可见的还是应该是 /sbin/rmmod
    【解决方案2】:

    我能够通过使用不同的库来解决这个问题。 我开始使用基于libftdipylibftdi 而不是d2xx 库,它对ftdi_sio 不敏感。

    【讨论】:

      【解决方案3】:

      为了添加一个新文件 .rules,我在 70-persistent-ipoib.rules 中添加了新的规则行,并为我工作。 :)

      【讨论】:

        猜你喜欢
        • 2018-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多