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博客

相关推荐
前进的李工3 小时前
Agent 学习笔记 05:系统提示词应该怎么写
笔记·学习·prompt·agent·个人开发·few-shot·ai应用开发
vibecode3 小时前
网站服务器失去响应怎么解决?我把连接超时和读超时这两段计时拆开跑了一遍
运维·服务器
工业一体机老司机4 小时前
Docker部署工控机采集服务 Compose编排与开机自启
运维·docker·容器
迪康Defender5 小时前
终端供应链安全:应用白名单与软件正版化检测落地|终端安全治理实践
运维·服务器·网络·安全·web安全·自动化·运维开发
lzx_0025 小时前
Linux 进程(二) 深入理解进程
linux
蒸蒸yyyyzwd5 小时前
后端学习笔记三个知识
笔记·八股
沫璃染墨5 小时前
从零入门计算机网络系列(十二):HTTP长连接与会话管理详解——从Connection到Cookie与Session
linux·服务器·c++·tcp/ip·ubuntu·http·交互
温暖小土5 小时前
在 CentOS 上安装 Redis Stack
linux·redis·centos
GeW7 小时前
国产化替代进入深水区之后Linux 与数据库为什么必须走向重建
linux
Zhao-Jichao7 小时前
AI Prompting for Everyone 课程笔记 - P19 数据分析 Data Analysis
人工智能·笔记·数据分析