ubuntu下绑定USB,包括同型号设备名称---CP210*系列

:ubuntu下绑定USB,包括同型号设备名称—CP210*系列

链接: 参考链接

一、问题描述
在ROS中使用串口通讯时,由于传感器插入树莓派端口时间顺序不同,导致其对应的端口号也不同。先插上的是/dev/ttyUSB0,后插上的是/dev/ttyUSB1等等,依次递推。每次插入顺序不同,对应的串口号就不同,要想正常使用就得修改对应的串口配置文件。针对这一问题,我们可以通过将串口映射到固定端口的别名上来解决这一问题。

参考博客

【ROS学习】修改串口的别名_Q小鑫的博客-CSDN博客_串口名称怎么修改

二、查看串口号
lsusb
我们可以看到我们插入的设备的对应信息。

三、编写rule文件
进入rules.d文件夹,创建自己需要的传感器的.rules文件。

cd /etc/udev/rules.d
sudo vim rplidar.rules
编写规则,其中10ce,ea60就对应着之前查到的传感器串口信息。

KERNEL==“ttyUSB*”, ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”, MODE:=“0777”, SYMLINK+=“rplidar”
KERNEL:设备在内核的名称(ttyUSB*)

ATTRS{idVendor}以及ATTRS{idProduct}:(之前查询到的号)

MODE:权限,(7代表设置读、写、执行权限,3个7代表给所有用户、群组用户、其他用户都设置可读可写可执行的权限)

r(读) 4
w(写) 2
x(执行) 1
SYMLINK:设置别名(我设置的为rplidar)

四、查看串口别名
由于修改串口规则,所以需要重新加载服务

sudo service udev reload
sudo service udev restart
经过我自己测试,重新加载后不行,需要对usb线重新插拔才能正确显示。

使用以下命令进行查看

ll /dev | grep ttyUSB*

但是存在一个问题,STM32的芯片和思岚A1的芯片好像用的是同款芯片,他们的ATTRS{idVendor}以及ATTRS{idProduct}信息是一样的。这样在没有固定端口号的情况下,无法确定传感器与其别名是否是对应的。

KERNEL==“ttyUSB*”, ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”, MODE:=“0777”, SYMLINK+=“rplidar”
KERNEL==“ttyUSB*”, ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”, MODE:=“0777”, SYMLINK+=“robot”
如上所示,编写的规则文件中只有我们自己起的别名不同,无法使芯片ID一样的设备正常映射别名。

方法一:
其中通过查询命令,也可以将KERNEL值固定。

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
先插上一个传感器,记住树莓派上对应的端口,通过上述命令可以查到对应的KERNELS号,英雌可以将规则文件修改成固定端口号。

KERNELS==“1-1.2”, KERNEL==“ttyUSB*”, ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”, MODE:=“0777”, SYMLINK+=“rplidar”
这时候这个传感器就只能插在这个端口上了,同理在测一下树莓派的其它端口的KERNELS值,对应修改,这时相同芯片ID号的传感器无论谁先插,都会正常映射到对应别名上。

方法二:
同样是使用方法一的命令去查询端口信息。

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
操作同上,只是这次修改的是ATTRS{devpath}值。

KERNEL==“ttyUSB*”, ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”, ATTRS{devpath}“1.2”, MODE:=“0777”, SYMLINK+=“rplidar”
KERNEL
"ttyUSB*", ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”, ATTRS{devpath}==“1.3”, MODE:=“0777”, SYMLINK+=“robot”
修改完规则文件后,重新加载,再插拔usb线,这时候我们就可以看到无论怎么插拔先后顺序,串口别名都能正常映射。

五、机器人重启串口别名失效
但是根据我自身实验,重启机器人后串口别名规则失效,需要重新插拔usb线才能正常工作。这个问题目前采取的解决办法是,通过CP210xSetIDs.exe软件,将对应设备的ATTRS{serial}值给改了。修改之前,这些芯片的ATTRS{serial}值默认都是0001。

2022.9.13更新

以上方法需要重新插拔可能是传感器供电不足导致的。

下面举例修改思岚A1的ATTRS{serial}值。将雷达插在电脑上,按下图修改即可。

这时,我们回到ubuntu系统重新修改规则文件。

KERNEL==“ttyUSB*”, ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”,ATTRS{serial}“0002”, MODE:=“0777”, GROUP:=“dialout”, SYMLINK+=“rplidar”
KERNEL
"ttyUSB*", ATTRS{idVendor}“10c4”, ATTRS{idProduct}“ea60”,ATTRS{serial}==“0001”, MODE:=“0777”, GROUP:=“dialout”, SYMLINK+=“robot”

这时我们无论如何插拔usb都可以正常映射,并且重新开机后不需要重新插拔usb线也可以正常映射了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

南京超维空间智能科技有限公司

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

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

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

打赏作者

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

抵扣说明:

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

余额充值