【Linux】下固定USB串口设备号(防止设备重复挂载、保证对外接设备信息稳定读取)
查询串口号
- python -m serial.tools.list_ports
查询串口号后,根据串口号列出串口详细信息,如:
- udevadm info /dev/ttyUSB0
返回:
根据这些信息重写串口设备命名规则,采用Linux的udev来自定义规则来管理设备名称
打开文件sudo vi /etc/udev/rules.d/98-com.rules
如98-com.rules文件,根据串口信息
E: ID_SERIAL_SHORT=FTH7R3JS
E: SUBSYSTEM=tty
修改里面内容为下面
SUBSYSTEM=="tty",
ENV{ID_SERIAL_SHORT}=="A1051JVT",
SYMLINK+="ttyUSBname" #这里为自定义的串口名字
注意:这里自定义名称不能跟原来的ttyUSB0等之类的相同,不然会错误的!!!!!!
参考网址:http://superuser.com/questions/536478/how-to-lock-device-ids-to-port-addresses
-----------------------------
为 USB设备绑定固定的设备名
移动机器人上有两个USB串口设备,分别是激光雷达和机器人底盘,Ubuntu为这两个设备的设备名分配的设备名ttyUSB0和ttyUSB1,但是设备名与设备之间的对应关系并不是固定的,是按设备接入系统的顺序依次分配的。先插入一个设备再插另一个设备可以确定设备与设备名的关系,但每次系统启动都需要插拔设备,十分麻烦。
可以将串口映射到一个固定的设备名上,不论插入顺序如何都会讲设备映射到新的设备名上,我们只要使用新的设备名对设备进行读写操作就可以了。
实现步骤如下:
(1) 查看USB端口信息
第一个设备是移动机器人底盘,第二个设备是激光雷达。我们需要的是这两个设备的ID,分别是1a86:7523和10c4:ea60。
(2) 建立端口映射关系
$ sudo touch /etc/udev/rules.d/base.rules
$ sudo vim /etc/udev/rules.d/base.rules
1
2
在文件中添加如下内容:
KERNEL==”ttyUSB*”, ATTRS{idVendor}==”1a86”, ATTRS{idProduct}==”7523”, MODE:=”0666”, SYMLINK+=”base”
$ sudo touch /etc/udev/rules.d/lidar.rules
$ sudo vim /etc/udev/rules.d/lidar.rules
1
2
在文件中添加如下内容:
KERNEL==”ttyUSB*”, ATTRS{idVendor}==”10c4”, ATTRS{idProduct}==”ea60”, MODE:=”0666”, SYMLINK+=”lidar”
查看映射结果:
————————————————