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

ftdi d2xx与linux上的ftdi_sio冲突-如何自动删除ftdi_sio,linux,udev,usbserial,ftdi,Linux,Udev,Usbserial,Ftdi,我有一个射频读卡器,带有ftdio usb到串行芯片。我能够用ftdi d2xx库编写一个程序来控制它。到目前为止还不错 问题是,当读卡器重新连接到PC时,我必须使用以下命令删除ftdi_sio和usbserial mods: sudo rmmod ftdi_sio sudo rmmod usbserial 如果不运行代码,我无法使用ftdi d2xx库连接到读卡器 我希望能够添加一个udev规则,以便在读卡器连接时卸载ftdi_sio和usbserial(或者不首先加载它们) 我在/etc/

我有一个射频读卡器,带有ftdio usb到串行芯片。我能够用ftdi d2xx库编写一个程序来控制它。到目前为止还不错

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

sudo rmmod ftdi_sio
sudo rmmod usbserial
如果不运行代码,我无法使用ftdi d2xx库连接到读卡器

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

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

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

我没有添加新的file.rules,而是在已经存在的70-persistent-ipoib.rules中添加了新的规则行,并为我工作。:)

我通过使用不同的库解决了这个问题。
我开始使用基于
libftdi
pylibftdi
库,而不是
d2xx
库,它对
ftdi\u-sio
不敏感。我将其添加到
99 ftdi sio.rule
,然后尝试使用
sudo udevadm控件重新加载规则-重新加载规则
,然后再次连接设备,
lsmod | grep ftdi
仍然显示加载的ftdi sio和USB串行MOD。此外,我从lsusb获得了供应商和产品:
Bus 002 Device 006:ID 0403:6001 Future Technology Devices International,Ltd FT232 USB串行(UART)IC
0403用于供应商,6001用于产品。文件应称为somename.rules而不是。rule首先尝试仅卸载ftdi。这对我有用。rmmod是否可见或应该是/sbin/rmmod?