绑定端口
- 打开终端,输入以下命令查看USB端口信息:
bash
udevadm info -a -n /dev/ttyUSB0
执行后,可以看到部分输出如下:
找到第一个,a-b:c格式的KERNELS,记住这个值,后面会用到。
bash
lin@lin-B660M-D2H-DDR4:~$ udevadm info -a -n /dev/ttyUSB0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.1/1-11.1:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11.1/1-11.1:1.0':
KERNELS=="1-11.1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ch341"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bAlternateSetting}==" 0"
ATTRS{authorized}=="1"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceProtocol}=="02"
ATTRS{supports_autosuspend}=="1"
ATTRS{bNumEndpoints}=="03"
其中需要用到的信息有:
- KERNELS=="1-11.1:1.0"
同样的,另一个端口如下:
- KERNELS=="1-11.2:1.0"
- 添加udev规则:
bash
sudo vim /etc/udev/rules.d/test_usb.rules
添加以下内容:
如果是/dev/ttyUSB*
,则KERNEL要改为KERNEL=="ttyUSB*"
:
如果是/dev/video*
,则KERNEL要改为KERNEL=="video*"
:
bash
KERNEL=="ttyUSB*", KERNELS=="1-11.2:1.0", MODE:="0777", SYMLINK+="ttyUSB_test_back"
KERNEL=="ttyUSB*", KERNELS=="1-11.1:1.0", MODE:="0777", SYMLINK+="ttyUSB_test_front"
保存并退出,执行以下命令:
bash
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo service udev reload
sudo service udev restart
- 重启后,就可以通过以下命令查看端口号:
bash
ls /dev/ttyUSB*
输出:
bash
/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB_test_back /dev/ttyUSB_test_front