Linux串口ttyUSB修改别名
1|0背景
Linux环境下经常会遇到USB设备节点不固定的问题。通常设备节点名为ttyUSBx(x代表任意数字)
,Linux内核会根据设备插入的先后顺序进行编号的分配,即第一个插入的设备编号为ttyUSB0
、第二个插入的设备编号为ttyUSB1
,依次类推。
然而,当我们重启Linux系统或者重新插拔USB设备后,Linux内核会重新分配每个设备的编号,原来的设备编号会发生改变。我们无法保证设备A的设备节点就是ttyUSB0,设备B的设备节点就是ttyUSB1,在设备文件/dev
目录下没有提供固定显示ttyUSB
的方法。因此,如果仅仅以设备节点ttyUSBx
来区分具体是哪个设备,很容易造成程序的混乱。
其实,Linux主机或者服务器的每个USB端口都有一个唯一的端口号,相当于每个员工的工位。因此,我们可以根据端口号来区分每个设备。简单来说,就是固定设备插入到指定的USB端口(如:设备A插入到端口1),然后根据端口号找到挂载在这个端口号上面的USB设备节点。(这个就好比我们可以通过员工工位来找到对应的员工)。
按照以上逻辑,我们还可以根据端口号来自定义串口设备节点的名称,如自定义设备A的节点为ttyUSB_A
。
2|0具体方法
-
插入串口设备,查看
/dev
目录下系统自动分配的设备节点[root@linux ~]# ls -l /dev/ttyUSB* crw-rw---- 1 root dialout 188, 0 Aug 30 15:13 /dev/ttyUSB0 可以看出,当前设备的节点为
ttyUSB0
-
输入以下命令查看当前设备节点(ttyUSB0)所在的USB端口号
udevadm info -a -n /dev/ttyUSB0 | grep KERNELS 结果如下:
KERNELS=="ttyUSB0" KERNELS=="1-1.1:1.0" KERNELS=="1-1.1" KERNELS=="1-1" KERNELS=="usb1" KERNELS=="0000:01:00.0" KERNELS=="0000:00:00.0" KERNELS=="pci0000:00" KERNELS=="fd500000.pcie" KERNELS=="scb" KERNELS=="platform" 其中,第三行的值为当前设备节点
ttyUSB0
所在的端口号:1-1.1
-
输入以下指令新增udev规则文件,自定义端口别名
sudo vim /etc/udev/rules.d/usb-serial.rules 写入内容如下:
SUBSYSTEM=="tty", KERNELS=="1-1.1", SYMLINK+="ttyUSB_A", MODE="0666" 上面
KERNELS
的值为端口号1-1.1
,SYMLINK
的值为我们自定义的设备节点别名ttyUSB_A
,保存并退出 -
重新加载udev规则
sudo udevadm control --reload-rules sudo service udev restart sudo udevadm trigger -
加载完毕后,再次查看
/dev
下的设备节点[root@linux ~]# ls -l /dev/ttyUSB* crw-rw-rw- 1 root dialout 188, 0 Aug 30 15:38 /dev/ttyUSB0 lrwxrwxrwx 1 root root 7 Aug 30 15:38 /dev/ttyUSB_A -> ttyUSB0 可以看出,上面出现了我们自定义的设备节点
ttyUSB_A
,ttyUSB_A
实际上是ttyUSB0
设备节点的端口映射,之后我们就可以通过使用ttyUSB_A
节点来对串口设备进行打开、关闭等操作了。
__EOF__

本文链接:https://www.cnblogs.com/blueberry-mint/p/17667487.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报