Linux系统固定USB串口设备名称

概述

Linux系统下使用多个USB转串口设备或一个USB设备拥有多个串口时,经常会遇到多个串口对应的设备名称无法区分的问题。Linux系统下的串口名称分配和硬件的上电顺序有关,如果是开机启动或者接在同一HUB下面,则由系统枚举各USB设备的顺序相关。以下介绍通过udev工具实现为USB转串口设备固定串口名称的实现原理与方法,该方法也适用于其他USB设备驱动。

关于udev

udev运行在用户态,脱离驱动层的关联,基于这种设计实现,用户可以通过编写规则来动态删除和修改/dev下的设备文件,任意命名设备。除了设备重命名外,还拥有修改设备访问权限的功能,可以实现在普通用户模式下操作/dev下系统设备,无需root模式下进行。

每当udevd收到uevent事件时就会去匹配规则,匹配成功后执行规则对应的操作。用户自定义规则放到/etc/udev/rules.d/目录下,以rules为扩展名。

通过udevadm命令(udevadm info -a -n /dev/ttyUSB0)或者sysfs(ls -la /sys/class/tty)可以查看USB串口芯片详细信息,以CH340为例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7awq2aUn-1617783644861)(Linux系统固定USB串口设备名称.assets/1.jpg)]
规则匹配主要基于几个字段:

KERNELS:kernel对设备的命名。此处为USB设备路径名。

ATTR / ATTRS:设备的属性,如idProduct/idVendor

SUBSYSTEMS:设备类型

ACTION:设备触发的操作,如add/change/remove

场景一:固定某个USB口的串口设备名称

Linux系统获取到USB设备路径后,然后使用udev工具为USB串口设备创建匹配规则,生成固定名称的串口名称。这样可以实现插入某个USB口的设备生成固定名称的tty串口名称,而不受插入顺序的限制。

如:接入两个相同的CH340设备,查看信息如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Wy8Y26i-1617783644865)(Linux系统固定USB串口设备名称.assets/2.jpg)]
在/etc/udev/rules.d/创建自定义规则70-usb.rules,内容如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-goGuMa8X-1617783644867)(Linux系统固定USB串口设备名称.assets/3.jpg)]
通过命令:udevadm control --reload-rules && udevadm trigger让规则生效或重启后自动生效。

设备接入后即可在/dev下查看到SYMLINK中重命名的串口设备。

场景二:固定USB转多串口设备的各串口名称

如:接入一个USB转双串口的CH342设备,查看信息如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dspDwHmw-1617783644870)(Linux系统固定USB串口设备名称.assets/4.png)]
同样在/etc/udev/rules.d/创建自定义规则71-usb.rules,内容如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hLZuVVya-1617783644872)(Linux系统固定USB串口设备名称.assets/72-rules.png)]
如上规则使用了设备的VID和PID,与接口号。(每个串口分别对应一个USB接口)然后通过命令:udevadm control --reload-rules && udevadm trigger让规则生效或重启后自动生效。

设备接入后即可在/dev下查看到SYMLINK中重命名的串口设备。也即上例中的ttyGPS与ttyBLE串口设备。

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PC技术小能手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值