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

相关推荐
万山y38 分钟前
1penl配置
运维
Linux-palpitate43 分钟前
集群与存储-lvs-nat实验
运维·服务器·lvs
qq_282195311 小时前
内核spi驱动流程图
linux·流程图·driver
czhc11400756631 小时前
Linux53 百度网盘运行(下载devtoolset11后仍提示stdc++3.0.29缺失 计划用docker容器隔离运行,计划后续再看)
运维·docker·容器
柚个朵朵2 小时前
Docker Compose:服务编排:批量管理多个容器
运维·docker·容器
Gui林2 小时前
ros2 humble 控制真实机械臂(以lerobot为例)
linux·python
hi0_63 小时前
Linux 第六讲 --- 工具篇(一)yum/apt与vim
linux·服务器·c++·vim·yum
ronshi3 小时前
Linux 内核升级问题
linux·运维·服务器
green_pine_3 小时前
Vue3学习笔记2——路由守卫
前端·vue.js·笔记·学习
hanpfei3 小时前
我写了一个分析 Linux 平台打开文件描述符跨进程传递的工具
linux