Ubuntu 绑定设备串口的两种方式

前言

在Ubuntu中,有时使用多个USB设备时,出现USB端口号混乱;
比如:A设备本来对应 /dev/ttyUSB0,B设备对应 /dev/ttyUSB1;
发现重启系统后,A设备本来对应 /dev/ttyUSB1,B设备对应 /dev/ttyUSB0,两个设备的分配的端口号不固定的情况

Linux是按照插入顺序对设备进行编号的;这种不稳定因素

参考了网上帖子和资料后,测试了两种绑定设备的方式:
二选一即可,根据绑定设备的情况选择

一、通过设备 ID 信息绑定

终端输入:

lsusb

输出信息:

...skip...
Bus 003 Device 005: ID 1a86:55d4 QinHeng Electronics CP2102 USB to UART Bridge Controller
...skip...

绑定串口,需要在 /etc/udev/rules.d/ 路径下,创建一个 *.rules文件

首先,在 /etc/udev/rules.d/目录下,创建或打开文件

数字-文件名.rules ,数字会影响加载文件的优先级,数字越大,越优先加载 例如:99-myusb.rules

root 权限打开 99-myusb.rules 文件

sudo vim /etc/udev/rules.d/99-myusb.rules
or
sudo vi /etc/udev/rules.d/99-myusb.rules

将输出信息中的 ID 1a86:55d4 按如下格式写入 /etc/udev/rules.d/99-myusb.rules 文件 在最后一行添加

SUBSYSTEM=="tty" ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d4", GROUP="dialout", MODE="0777", SYMLINK+="lidar"

敲击键盘的 ESC后输入:wq 保存退出,重新激活绑定规则

sudo udevadm control --reload && sudo udevadm trigger
sudo udevadm trigger

二、通过设备的内核编号绑定

终端输入:

sudo udevadm info /dev/ttyCH343USB0

输出信息:

P: /devices/pci0000:00/0000:00:14.0/usb3/3-3/3-3.1/3-3.1:1.0/tty/ttyCH343USB0
...skip...

root 权限打开 99-myusb.rules 文件

sudo vim /etc/udev/rules.d/99-myusb.rules
or
sudo vi /etc/udev/rules.d/99-myusb.rules

将输出信息中的 P: .../3-3.1:1.0/... 按如下格式写入 /etc/udev/rules.d/99-myusb.rules 文件 在最后一行添加

KERNELS=="3-3.1:1.0", MODE:="0777", GROUP:="dialout", SYMLINK+="lidar"

敲击键盘的 ESC后输入:wq 保存退出,重新激活绑定规则

sudo udevadm control --reload && sudo udevadm trigger
sudo udevadm trigger

三、查看是否绑定成功

上面两种绑定的方式,根据自己设备的情况,选择一种即可

ll /dev
>>
...skip...
lrwxrwxrwx   1 root  root            12 1月  15 17:10 lidar -> ttyCH343USB0
crw-rw-rw-   1 root  root      1,     5 1月  15 17:10 zero
crw-------   1 root  root     10,   249 1月  15 17:10 zfs
...skip...

参考资料

  1. https://blog.csdn.net/qq_41204464/article/details/115694264