当先锋百科网

首页 1 2 3 4 5 6 7

参考

下固定USB串口设备号(防止设备重复挂载、保证对外接设备信息稳定读取)

linux下多个usb设备固定名称方法

为 USB设备绑定固定的设备名

最近,研究下了如何在linux绑定串口号,不然每次插拔后串口号可能变,就特别麻烦.

在csdn上参考了一些博客发现了两种方式,但都有各自的弊端.

1. 串口信息查询

查看有哪些串口

python -m serial.tools.list_ports

112174598a99a6e4ba78299b0ad98ebd.png

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

udevadm info /dev/ttyUSB0

cd26281d6b1c5a4fe7e4f9c7f3acc8d2.png

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

2efb942d61530496291a77f09fdb2f22.png

缺点: 只要是插到这个USB端口的串口都会被改为指定名.

2.2 绑定USB串口号

查看设备ID

lsusb

9e88cf2986be10a84fffc2812d46070b.png

例如第四行的那个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.