在ubuntu系统下给串口起别名

项目场景:

ubuntu22.04


问题描述

当你使用的传感器多了,会发现当串口插入的顺序不同,串口号会随之变化,如果每次都在程序中修改串口号又太麻烦,有没有一种好的解决方案呢?


原因分析:

因此重新给串口设置别名,本文利用串口起别名来避免这种问题!


解决方案一:

方案一我们根据这个传感器芯片的ID来固定串口号

 使用下面命令查询串口号

ls /dev | grep ttyUSB

查看USB端口详细信息

lsusb

以下是我的信息

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

这个就是镭神N10激光雷达的usb信息

Bus 002 Device 004: ID 10c4:ea60 Silicon Labs CP210x UART Bridge

创建自定义rules

sudo gedit /etc/udev/rules.d/rplidar_port.rules

写入以下内容

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"  

对上面的规则进行分析

KERNEL==”ttyUSB*”            kernel代表设备在内核的名称,ttyUSB*代表ttyUSB开头的USB端口总称
ATTRS{idVendor}==”10c4”      "10c4"对应激光雷达串口模块端口信息中ID 10c4:ea60中:前的地址
ATTRS{idProduct}==”ea60”     "ea60"对应激光雷达串口模块端口信息中ID 10c4:ea60中:后的地址
MODE:=”0777”                  MODE代表赋予串口端口的权限,"0777"是具体的权限
SYMLINK+=”rplidar”            SYMLINK代表别名,"rplidar"=是具体的别名

重新插拔一下激光雷达 并且刷新一下

service udev restart
ls -l /dev/ | grep ttyUSB

可以看到 rplidar 映射到了ttyUSB0上,到此说明你配置成功了!同样你也可以给你的USB相机设置别名!

解决方案二:

问题描述:

如果说是同款型号的雷达或者是同款型号的相机,这样他们的芯片是相同的这种情况怎么解决呢?

linux设备的每个USB口的(KERNELS)是不同的且固定的,我们通过传感器接在固定USB口也可以避免串口号总是变动。

udevadm info -a -n /dev/ttyUSB0

在ubuntu系统下给串口起别名_第1张图片 

 可以看到ttyUSB0的KERNELS值是:2-2.1:1.0

sudo gedit /etc/udev/rules.d/usb.rules

写入以下内容:

这里的得参考你的usb具体信息填写

# 第一个设备
KERNEL=="ttyUSB*", KERNELS=="2-2.1:1.0", MODE:="0777", SYMLINK+="mylaser01"
# 第二个设备
KERNEL=="ttyUSB*", KERNELS=="2-2.2:1.0", MODE:="0777", SYMLINK+="mylaser02"

重新加载一下udev

sudo service udev reload
sudo service udev restart

你可能感兴趣的:(ubuntu)