ubuntu下给不同串口设置别名

目录

一、绑定设备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。命令行下输入:

bash 复制代码
lsusb

显示:

查看到我们要操作的USB转串口的VID:1a86,PID:7523。此处可以看到四个串口的VID和PID一样,证明串口属于同一厂家,所以第一种方法绑定设备ID不合适,下面的步骤为假设只有一个串口,而不是四个。

2.编写usev规则

命令行下输入:

bash 复制代码
sudo vi /etc/udev/rules.d/89-usb-serial.rules

"89-usb-serial.rules"名称可根据实际情况自行指定,在此文件中增加:

bash 复制代码
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", SYMLINK+="myserial"

PID,VID为我们在步骤1)中查看到的,"myserial"为我们为此串口设备起的别名,可根据实际情况指定。

3.重新加载usev规则

bash 复制代码
sudo udevadm control --reload-rules
sudo service udev restart
sudo udevadm trigger

4.查看

bash 复制代码
ls /dev/my*

可以看到输出/dev/myserial

这样,绑定设备ID给USB转串口起别名功能就实现好了。这里要注意,因绑定的是USB转串口的设备ID,因此同一种USB转串口是不能同时使用的(它们的ID相同)。

二、绑定USB端口号

由上面我打印串口信息可知,绑定设备ID有个缺陷,当使用多个相同厂家的USB转串口设备时会出现问题,因为他们的VID,PID是一样的。这时就需要绑定到具体的USB端口号,毕竟端口号是可以唯一确定的。具体方法如下:

1.先插入一个串口,查看USB设备信息

bash 复制代码
ls /dev/ttyUSB*

2.查看USB转串口信息

bash 复制代码
udevadm info -a -n /dev/ttyUSB0

显示:

我们可以将USB转串口的别名绑定到"2-3.2:1.0"这个层级,名称根据实际情况不同。

3.编写usev规则

bash 复制代码
sudo vi /etc/udev/rules.d/rotation_detector.rules

"rotation_detector.rules"名称可根据实际情况自行指定,在此文件中增加:

bash 复制代码
KERNELS=="2-3.2:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="rotation_detector"

"rotation_detector"为我们为此串口设备起的别名,可根据实际情况指定。

4.重新加载usev规则

bash 复制代码
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博客

相关推荐
Wang's Blog36 分钟前
Linux小课堂: 网络配置详解之DHCP动态分配与静态IP地址设置
linux·网络·tcp/ip
colus_SEU2 小时前
【编译原理笔记】3.4 Tokens Recognization
笔记·编译原理
摇滚侠2 小时前
Spring Boot3零基础教程,KafkaTemplate 发送消息,笔记77
java·spring boot·笔记·后端·kafka
CS Beginner3 小时前
【Linux】Tomcat基本配置
linux·运维·tomcat
..Move...3 小时前
快速搭建Docker私有仓库指南
运维·docker·容器
小小的木头人4 小时前
Windows Docker desktop 部署
运维·kafka
黑翼杰克斯4 小时前
如何裁剪u-boot,保留其必要功能,使体积尽可能小
linux·1024程序员节
wanhengidc5 小时前
云手机和虚拟机的区别都有哪些?
运维·服务器·安全·智能手机·玩游戏
码农周5 小时前
从零搭建vsftpd服务器:避坑指南+实战解决方案
运维·服务器
jingshaoyou6 小时前
ubuntu 搭建SVN服务器
服务器·ubuntu·svn