ftdi d2xx 与 linux 上的 ftdi_sio 冲突 - 如何自动删除 ftdi_sio

ftdi d2xx conflict with ftdi_sio on linux - How to remove ftdi_sio automatically

我有一个带有 ftdio usb 转串口芯片的 rf-reader。我能够使用 ftdi d2xx 库编写一个程序来控制它。到目前为止一切顺利。

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

sudo rmmod ftdi_sio
sudo rmmod usbserial

如果我没有 运行 代码,我无法使用 ftdi d2xx 库连接到 reader。

我希望能够添加一个 udev 规则,这样每当 reader 连接时内核卸载 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'"

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

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'"

我没有添加新文件 .rules,而是在 70-persistent-ipoib.rules 已经存在并且对我有用的文件中添加了新规则行。 :)

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

不敏感