目录
一、绑定设备ID
1.查看设备ID
2.编写usev规则
3.重新加载usev规则
4.查看
二、绑定USB端口号
1.先插入一个串口,查看USB设备信息
2.查看USB转串口信息
3.编写usev规则
4.重新加载usev规则
5.查看
在Ubuntu环境下,有时候工控机或者arm开发板需要连接多个传感器,而这些传感器通过不同的串口来采集数据,由于Ubuntu上电会导致串口别名错乱,所以需要为串口设置别名。
设置别名就是 设置软链接,它可以链接到原始文件,类似于windows下的快捷方式。它实际上是一个特殊的文件,其中包含了另一个文件的位置信息。如果原始文件被删除或移动,软连接将失效。
为串口设置别名主要分为绑定设备ID和绑定USB端口号两种方法。
一、绑定设备ID
绑定设备ID适用于USB转串口的设备ID唯一的情况,这时为了程序编写的方便,为串口指定一个特殊的名称做标识。具体方法如下:
1.查看设备ID
要绑定到具体的串口设备,必须知道其VID,PID。命令行下输入:
lsusb
显示:
查看到我们要操作的USB转串口的VID:1a86,PID:7523。此处可以看到四个串口的VID和PID一样,证明串口属于同一厂家,所以第一种方法绑定设备ID不合适,下面的步骤为假设只有一个串口,而不是四个。
2.编写usev规则
命令行下输入:
sudo vi /etc/udev/rules.d/89-usb-serial.rules
“89-usb-serial.rules”名称可根据实际情况自行指定,在此文件中增加:
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", SYMLINK+="myserial"
PID,VID为我们在步骤1)中查看到的,“myserial”为我们为此串口设备起的别名,可根据实际情况指定。
3.重新加载usev规则
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger
4.查看
ls /dev/my*
可以看到输出/dev/myserial
这样,绑定设备ID给USB转串口起别名功能就实现好了。这里要注意,因绑定的是USB转串口的设备ID,因此同一种USB转串口是不能同时使用的(它们的ID相同)。
二、绑定USB端口号
由上面我打印串口信息可知,绑定设备ID有个缺陷,当使用多个相同厂家的USB转串口设备时会出现问题,因为他们的VID,PID是一样的。这时就需要绑定到具体的USB端口号,毕竟端口号是可以唯一确定的。具体方法如下:
1.先插入一个串口,查看USB设备信息
ls /dev/ttyUSB*
2.查看USB转串口信息
udevadm info -a -n /dev/ttyUSB0
显示:
我们可以将USB转串口的别名绑定到“2-3.2:1.0”这个层级,名称根据实际情况不同。
3.编写usev规则
sudo vi /etc/udev/rules.d/rotation_detector.rules
“rotation_detector.rules”名称可根据实际情况自行指定,在此文件中增加:
KERNELS=="2-3.2:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="rotation_detector"
“rotation_detector”为我们为此串口设备起的别名,可根据实际情况指定。
4.重新加载usev规则
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger
5.查看
这样,绑定USB端口号给USB转串口起别名功能就实现好了。这里要注意,USB口接口不能随意变动,否则会引起问题。
类比上述方法,我们在.rules文件夹里加入所有的串口
再次给工控机重新上电,查看软连接:
此时可以看到/dev/rotation_detector由前面的ttyUSB0切换为了ttyUSB1,但是我的上层代码里面定义的串口是/dev/rotation_detector,所以不影响使用/dev/rotation_detector串口。
总结,本文介绍Ubuntu环境下为串口设置别名的方法,可根据实际使用场景进行选择。
参考链接:
Ubuntu环境下为串口设置别名_mode="0666", symlink+=-CSDN博客
在ubuntu系统下给串口起别名_ubuntu串口别名-CSDN博客