Ubuntu下解决同一型号USB串口设备的绑定问题

文章讲述了Ubuntu系统中当多个同型号USB设备连接时可能导致串口通信问题。通过创建udev规则文件,利用devpath属性区分端口,解决了USB设备共享ttyUSB0的问题,确保每个设备都能独立通信。
摘要由CSDN通过智能技术生成

当两个及以上同型号的USB设备(并且他们的Vendor ID和Product ID都一样)连接至电脑时,Ubuntu系统会默认把他们都挂载在同一个端口ttyUSB0上,此时导致先连接至电脑的USB设备可以进行正常的串口通信,其他USB设备不能进行数据的收发。
通过lsusb命令查看已连接至电脑的两个USB设备,如下会发现除了设备序号不同,其他都相同
在这里插入图片描述
为解决上诉问题,我们可以创建一个udev规则文件,把它放在Ubuntu的/etc/udev/rules.d/目录下,
如下是我创建的一个myUSB.rules里的内容:

KERNEL=="ttyUSB*",ATTRS{devpath}=="2",ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523",MODE:="0777",SYMLINK+="master"
KERNEL=="ttyUSB*",ATTRS{devpath}=="3",ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523",MODE:="0777",SYMLINK+="slave"

KERNEL=="ttyUSB*"表示只对ttyUSB*设备进行匹配,ATTRS{idVendor}和ATTRS{idProduct}分别指定设备的Vendor ID和Product ID;SYMLINK使用+=,是设备的链接或叫别名
其中最重要的一条信息:devpath!不同USB设备对应的devpath不同,故可以用来区分端口。
我们可以通过每次只连接一个USB设备,然后在终端输入udevadm info --attribute-walk /sys/class/tty/ttyUSB0 | grep devpath去查阅USB设备的devpath信息。如下为两个同型号USB设备的devpath信息:
在这里插入图片描述

最后重载udev规则,使其生效:sudo udevadm control --reload-rules

重新插入设备,使用命令ls -l /dev | grep ttyUSB查看如下,可以发现两个同型号的USB设备分别挂载在ttyUSB0和ttyUSB1端口上,此时两个设备都可以进行正常的串口通信。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

The heart of gratitude

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

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

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

打赏作者

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

抵扣说明:

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

余额充值