对于工程实践中碰到多个设备开机后串口号不固定的问题,通过配置udev别名进行解决。
通过以下命令查看设备udev信息。
lsusb
查看插入设备信息
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0e0f:0008 VMware, Inc. Virtual Bluetooth Adapter
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
ID 1d6b:0002 表示usb设备的ID(由芯片制造商设置,可以唯一表示该设备)
1d6b表示idVendor,0002表示idProduct。
根据上面信息撰写udev文件,这里以px4飞控设备为例。
sudo gedit /etc/udev/rules.d/px4.rules
写入
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0002", MODE:="0777", SYMLINK+="px4"
创建好后重新插拔USB口。并输入
ls -l /dev |grep ttyUSB
可以看到px4指向ttyUSB口,通过打开/dev/px4使用px4设备。
注意:若存在两个设备有相同的idVendor和idProduct。需要添加devpath信息!!!
通过插拔设备确定插入设备端口号,并输入以下命令
udevadm info --attribute-walk /sys/class/tty/ttyUSB0 |grep devpath
确定端口的devpath值,并加入规则
KERNEL=="ttyUSB*", ATTRS{devpath}=="1", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0002", MODE:="0777", SYMLINK+="px4"
继续通过命令查看
ls -l /dev | grep ttyUSB