ubuntu 为USB串口绑定固定的设备名

参考
下固定USB串口设备号(防止设备重复挂载、保证对外接设备信息稳定读取)
linux下多个usb设备固定名称方法
为 USB设备绑定固定的设备名

最近,研究下了如何在linux绑定串口号,不然每次插拔后串口号可能变,就特别麻烦.
在csdn上参考了一些博客发现了两种方式,但都有各自的弊端.

1. 串口信息查询

查看有哪些串口

python -m serial.tools.list_ports 

查看串口信息,测试了发现没有USB串口独立的特征信息, 唯一一个不变的3-3:1.0, 而这个实际上是代表电脑上这个USB口编号,也就是说只是连在这个USB端口上的串口都叫这个ID.

udevadm info /dev/ttyUSB0

ubuntu 为USB串口绑定固定的设备名_第1张图片

2. 创建配置文件

创建规则, 文件名称随意.其中配置文件有两种方式,各有缺点

2.1 绑定USB端口号

sudo vi /etc/udev/rules.d/com_port.rules

内容, KERNELS表示硬件的usb接口名,不同编号,表示不同的usb接口.
下面是添加修改了三个USB端口

ACTION=="add",KERNELS=="1-1.2:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="imu"
ACTION=="add",KERNELS=="3-3:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="lidar"
ACTION=="add",KERNELS=="3-2:1.0",SUBSYSTEMS=="usb",MODE:="0777",SYMLINK+="my_serial3"

查看变换后的情况

ll /dev | grep ttyUSB

在这里插入图片描述
缺点: 只要是插到这个USB端口的串口都会被改为指定名.

2.2 绑定USB串口号

查看设备ID

lsusb

ubuntu 为USB串口绑定固定的设备名_第2张图片
例如第四行的那个ID 10c4:ea60表示TTRS{idVendor}==10c4, ATTRS{idProduct}==ea60

sudo vi /etc/udev/rules.d/com_port.rules

内容, KERNELS表示硬件的usb主分类,.
下面是添加修改了两个个USB端口

KERNEL==”ttyUSB*”, ATTRS{idVendor}==”10c4”, ATTRS{idProduct}==”ea60”, MODE:=”0666”, SYMLINK+=”lidar”
KERNEL==”ttyUSB*”, ATTRS{idVendor}==”1a86”, ATTRS{idProduct}==”7523”, MODE:=”0666”, SYMLINK+=”base”

缺点: 当两个串口芯片相同时会出现ID完全相同的情况, 例如上图的两个串口芯片都为
Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
ID也都为10c4:ea60.

你可能感兴趣的:(linux,硬件)