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

时间:2015-11-29 08:59:18

标签: linux udev usbserial ftdi

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

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

sudo rmmod ftdi_sio
sudo rmmod usbserial

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

我希望能够添加一个udev规则,这样每当读者连接时内核卸载ftdi_sio和usbserial(或者不首先加载它们)

我在/etc/udev/rules.d上添加了一个新的udev rul,名称为99-ftdi-sio.rule

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

但它没有用。任何人都有任何想法如何解决这个问题?

3 个答案:

答案 0 :(得分: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'"

答案 1 :(得分:0)

我能够通过使用不同的库来解决问题。 我开始使用基于d2xx的{​​{1}}而不是pylibftdi来代替libftdi库。

答案 2 :(得分:-1)

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