我知道这个问题已经被问过很多次了,但我无法让它发挥作用。我有一个 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!"
我还将我的用户添加到dialout
组:
sudo usermod -a -G dialout $USER
并groups $USER
返回:
jvgomez : jvgomez adm dialout sudo plugdev lpadmin sambashare
(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
消息echo USB CONNECTED!
从未显示。当我使用screen /dev/fhss/
它时,它立即显示[screen is terminating]
。为了使其工作,我仍然必须运行chmod
$ sudo chmod a+rwx /dev/fhss
现在:
$ ls -al /dev/ttyUSB0
crwxrwxrwx 1 root dialout 188, 0 Jun 4 17:13 /dev/ttyUSB0
SUBSYSTEM=="tty"
1) 我遗漏了什么?我仍然必须运行 chmod,而这正是我试图避免的。 2) 使用和有什么区别SUBSYSTEM=="usb"
?
欢迎任何帮助!
编辑:按照建议添加 NAME="my_device"Usb udev 规则对我来说从来没起作用沒有改變任何内容。
答案1
我在 Bit Bang 模式下使用 FT232RL 芯片,遇到了同样的权限问题。由于我不明白的原因,上面建议的规则对我来说不起作用。不过,经过一些修改,我让它工作了。
希望这可以帮助到别人:
$ lsusb
:
Bus 001 Device 023: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
如上所述,我将用户添加到dialout
和tty
:
$ 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"
。
答案2
要使 FTDI 分线在 Ubuntu 上工作:
使用 root 权限打开文件 /etc/group:
sudo nano /etc/group
之后,搜索tty:x5:
并dialout:x20:
将您的用户添加到此组并在每行前面输入您的用户名:
tty:x5:<user>
dialout:x20:<user>
您还可以使用接下来的两个命令来避免搜索文件:
sudo usermod -aG tty <user>
sudo usermod -aG dialout <user>
其中<user>
, 是您的用户名。
最后,重新启动计算机。
如果要使用 udev 规则,请连接 FTDI 模块,然后运行:
lsusb
这将显示供应商 ID 和产品 ID。例如:
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
其中 8087 是供应商 ID,0024 是产品 ID。
然后,创建如下规则:
ATTRS{idVendor}="8087", ATTRS{idProduct}="0024", MODE="0660", GROUP="dialout"