FTDI 的 UDEV 规则未完全发挥作用

Jav*_*avi 5 permissions usb udev

我知道这个问题已被问过很多次,但我无法使其发挥作用。我有一个 FTDI 串行 USB 转换器。我已经生成10-fhss-usb.rules/etc/udev/rules.d/

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="FTTA5DMA", SYMLINK+="fhss", GROUP="dialout", MODE="0777", RUN+="echo USB CONNECTED!"
Run Code Online (Sandbox Code Playgroud)

我还将我的用户添加到dialout组中:

sudo usermod -a -G 拨出 $USER

groups $USER返回:

jvgomez : jvgomez adm dialout sudo plugdev lpadmin sambashare
Run Code Online (Sandbox Code Playgroud)

(plugdev 组是在另一篇文章之后创建的)现在,当我连接 USB 并运行时,ls -al我可以看到:

$ ls -al /dev/fhss
lrwxrwxrwx 1 root root 7 Jun  4 17:13 /dev/fhss -> ttyUSB0

$ ls -al /dev/ttyUSB0 
crw-rw-r-- 1 root dialout 188, 0 Jun  4 17:13 /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

echo USB CONNECTED!消息永远不会显示。当我使用screen /dev/fhss/它时,立即说[screen is terminating]。为了让它发挥作用,我还得跑chmod

$ sudo chmod a+rwx /dev/fhss 
Run Code Online (Sandbox Code Playgroud)

现在:

$ ls -al /dev/ttyUSB0 
crwxrwxrwx 1 root dialout 188, 0 Jun  4 17:13 /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)

1)我缺少什么?我仍然必须运行 chmod,这是我试图避免的。SUBSYSTEM=="tty"2)使用和之间有什么区别SUBSYSTEM=="usb"

欢迎任何帮助!

编辑:按照USB udev 规则中的建议添加 NAME="my_device" 对我来说从未起作用,没有改变任何内容。

kal*_*ast 3

我在 Bit Bang 模式下使用 FT232RL 芯片并遇到了相同的权限问题。由于我不明白的原因,上面建议的规则对我不起作用。然而,经过一些修改,我让它工作了。

希望这对某人有帮助:

$ lsusb:

Bus 001 Device 023: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

如上所述,我将用户添加到dialouttty $ sudo usermod -aG dialout $USER $ sudo usermod -aG tty $USER

但是, , 中的行/etc/udev/rules.d/99-libftdi.rules有所不同:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS={idProduct}=="6001", OWNER="user", MODE="0777", GROUP="dialout"

关键的区别可能是SUBSYSTEM=="usb"


GTR*_*ICK 2

要在 Ubuntu 上进行 FTDI 突破:

使用root权限打开文件/etc/group:

sudo nano /etc/group
Run Code Online (Sandbox Code Playgroud)

之后,搜索tty:x5:dialout:x20:

将您的用户添加到此组中,在每行前面输入您的用户名:

tty:x5:<user>

dialout:x20:<user>

您还可以使用接下来的两个命令来避免搜索该文件:

sudo usermod -aG tty <user>
sudo usermod -aG dialout <user>
Run Code Online (Sandbox Code Playgroud)

在哪里<user>, 是您的用户名。

最后,重新启动计算机。

如果您想使用 udev 规则,请连接 FTDI 模块,然后运行:

lsusb
Run Code Online (Sandbox Code Playgroud)

这将显示供应商 ID 和产品 ID。例如:

Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Run Code Online (Sandbox Code Playgroud)

其中 8087 是供应商 ID,0024 是产品 ID。

然后,创建一个像这样的规则:

ATTRS{idVendor}="8087", ATTRS{idProduct}="0024", MODE="0660", GROUP="dialout"
Run Code Online (Sandbox Code Playgroud)

  • 有一个拼写错误,应该是 `ATTRS{idVendor}="8087", ATTRS{idProduct}="0024", MODE="0660", GROUP="dialout"`,而不是第二个“ATRRS”。 (2认同)