參考
下固定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
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
例如第四行的那個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.