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

news/2024/10/17 22:27:18/

: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线也可以正常映射了。


http://www.ppmy.cn/news/101911.html

相关文章

TypeScript实现贪吃蛇游戏

TS实现贪吃蛇游戏 文章目录 TS实现贪吃蛇游戏[toc]1.项目效果2.项目梳理3.项目准备4.主体页面结构5.CSS样式6.TS逻辑6.1 食物逻辑6.2 蛇逻辑6.3 记分板逻辑6.4 游戏控制器逻辑6.5 程序入口ts 1.项目效果 项目体验 2.项目梳理 这个小游戏主要包括积分面板,食物&…

腾讯云服务器CVM和轻量应用服务器区别

关于腾讯云轻量应用服务器和云服务器CVM的区别,之前腾讯云百科写过一篇文章来对比,如今2023阿腾云又更新了一篇新的区别对比文章,比之前的要更加详细,包括轻量服务器的使用限制、CPU型号、公网限制月流量、内网连通性、硬盘存储等…

测试类型(单元、集成、系统或手动测试)

测试类型(单元、集成、系统或手动测试) 单元测试 单元是系统的单个组件,例如类或单个方法。孤立地测试单元称为单元测试。 优点:速度快/易控/易写 缺点:缺乏现实性/无法捕获所有错误(例如与其他组件或服务的交互) 单元…

Unity 反射探针

反射射探针 是用来模拟反射周边物体的光照信息的一种解决方案让物体,受周围物体的光照或材质进行影响的一种模拟光照效果。如下图效果: 反射探针属性截图 反射探针类型 Baked 烘焙模式,此种模式需要反射的物体是静态的不能移动,但…

客户案例 | 思腾合力GPU算力节点助力实时云渲染

客户介绍 平行云是国内领先的云化XR概念倡导者与技术先行者,LarkXR是平行云研发的云化XR PaaS平台。LarkXR能够帮助XR领域企业级客户快速实现技术、产品及平台的云化转型,高效使能企业的云化XR业务,有效保护客户的内容安全,让多种…

充分发挥C/C++test的价值(上)

对于开发测试来说,最有效的环境就是能够深度集成到开发人员IDE中的统一测试解决方案。例如,团队可能会将测试工作集中在最近更新的、高风险的代码上,而Parasoft C/Ctest这样的集成工具就是最合适的解决方案。 软件验证和确认(Ver…

初识设计模式

设计模式的思想 来自日常生活 设计模式的好处六大原则类别创建型(创建对象)结构型(构建模块之间的关系)行为型(交互) 重要模式详述单例模式工厂模式抽象工厂模式建造者模式装饰器模式适配器模式代理模式迭代…

知乎新财报,商业化难题有解了?

不知从什么时候开始,商业化好似成为了一朵乌云,笼罩在内容平台头顶,而为摆脱这一困局,内容平台也是屡屡出招。作为种草内容平台的小红书,最近更是动作频频。比如,小红书先是上线了团购功能,入局…