udevadm info --query=all --name=/dev/ttyUSB1
查看usb对应得设备信息
我输入以上命令后,我的终端出现以下内容
a@ubuntu:~$ udevadm info --query=all --name=/dev/ttyUSB1
P: /devices/platform/3610000.xhci/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1:1.0/ttyUSB1/tty/ttyUSB1
N: ttyUSB1
L: 0
S: serial/by-path/platform-3610000.xhci-usb-0:1.4.1:1.0-port0
S: serial/by-id/usb-1a86_USB_Serial-if00-port0
E: DEVPATH=/devices/platform/3610000.xhci/usb1/1-1/1-1.4/1-1.4.1/1-1.4.1:1.0/ttyUSB1/tty/ttyUSB1
E: DEVNAME=/dev/ttyUSB1
E: MAJOR=188
E: MINOR=1
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=13754570
E: ID_VENDOR=1a86
E: ID_VENDOR_ENC=1a86
E: ID_VENDOR_ID=1a86
E: ID_MODEL=USB_Serial
E: ID_MODEL_ENC=USB\x20Serial
E: ID_MODEL_ID=7523
E: ID_REVISION=0264
E: ID_SERIAL=1a86_USB_Serial
E: ID_TYPE=generic
E: ID_BUS=usb
E: ID_USB_INTERFACES=:ff0102:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=ch341
E: ID_USB_CLASS_FROM_DATABASE=Vendor Specific Class
E: ID_VENDOR_FROM_DATABASE=QinHeng Electronics
E: ID_MODEL_FROM_DATABASE=HL-340 USB-Serial adapter
E: ID_PATH=platform-3610000.xhci-usb-0:1.4.1:1.0
E: ID_PATH_TAG=platform-3610000_xhci-usb-0_1_4_1_1_0
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-path/platform-3610000.xhci-usb-0:1.4.1:1.0-port0 /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
E: TAGS=:systemd:
可以在此路径下 /etc/udev/rules.d/ 创建一个.rules 文件根据以上内容可以添加以下内容
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", SYMLINK+="yuntai_usb", MODE="0666"
其中以上输出的 ID_VENDOR_ID=1a86 ID_MODEL_ID=7523 分别对应ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523" yuntai_usb就是自定义的设备名MODE="0666":设置设备节点的权限,这里表示所有用户都有读写权限。根据需要调整权限。
保存之后 输入以下两条命令重新加载udev规则
sudo udevadm control --reload-rules
sudo udevadm trigger
然后输入ls -l /dev/yuntai_usb 测试是否成功
a@ubuntu:~$ ls -l /dev/yuntai_usb
lrwxrwxrwx 1 root root 7 1月 7 11:55 /dev/yuntai_usb -> ttyUSB1
也可以终端输入 ll /dev 进行查看 会输出以下片段
crw-rw----+ 1 root video 81, 1 1月 7 11:55 video1
crw------- 1 root root 10, 130 1月 7 11:55 watchdog
crw------- 1 root root 241, 0 1月 7 11:55 watchdog0
lrwxrwxrwx 1 root root 7 1月 7 11:55 yuntai_usb -> ttyUSB1
crw-rw-rw- 1 root root 1, 5 1月 7 11:55 zero
brw-rw---- 1 root disk 251, 0 1月 7 11:55 zram0
brw-rw---- 1 root disk 251, 1 1月 7 11:55 zram1
问题解决!
也可以在.rules文件中加入KERNEL(不过我没有加入)
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="0003", MODE:="0777", GROUP:="dialout", SYMLINK+="fdilink_ahrs"
KERNEL=="ttyUSB*":这一部分指定了规则应适用于所有以ttyUSB开头的设备节点。*是一个通配符,表示任何后续字符都可以匹配。因此,这条规则会匹配如/dev/ttyUSB0、/dev/ttyUSB1等设备。