Linux 绑定USB设备端口
Linux 綁定USB設備端口
- 1 根據設備ID綁定
- 2 根據電腦USB硬件端口綁定,只要插入該USB端口即為設定設備名
1 根據設備ID綁定
方法特點:按照ID綁定的話不需要固定USB接口,它是根據設備自身的ID進行綁定,但是如果有多個設備的串口使用同一款串口芯片的話,會出現紊亂
查看需要綁定的設備的idVendor 和idpProduct,例如我要綁定一個rplidar的激光雷達
$ lsusb
新建一個規則文件:
自定義打開文件寫入自定義規則。這里最好新建一個文件,不要覆蓋以前的文件了。如果是相同設備還需要額外的辨別參數也可以添加額外的參數。我們只取前面的數值10c4,ea60,,后面的描述不要。
KERNEL=="ttyUSB*" , ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60",MODE:="0777" ,SYMLINK+="ttyRplidar"然后使其作用:
$ sudo udevadm trigger查看是否成功
$ ls -l /dev/ttyRplidar lrwxrwxrwx 1 root root 7 Nov 12 22:22 /dev/ttyRplidar -> ttyUSB0或者
ls /dev/tty*
如圖,可以看到新增了一個設備,正是我們在規則文件中設置的別名。
如果不行的話先檢測規則文件的格式有沒有錯誤,接著將USB拔了再重插。
還有其他額外的設備需要則加一行,方法一樣。
2 根據電腦USB硬件端口綁定,只要插入該USB端口即為設定設備名
方法特點:按照USB硬件ID綁定的話必須固定接口對應的設備,因為它只根據電腦自身的USB硬件地址確定,但是它可以解決設備使用同一款串口芯片導致ID相同的問題
有時候我們兩個串口設備使用了痛苦的USB芯片,例如激光雷達和機械臂使用了同款的USB芯片,在終端中輸入
$ lsusb會發現兩者的USB端口的VID和PID是相同的(10c4:ea60),所以開啟了機械臂后,激光雷達啟動時會指向到機械臂的端口。
將USB設備的接入的端口進行名稱綁定,拔出或關閉USB設備后,在端口中輸入
$ ls /dev再插入或打開USB設備,輸入
$ ls /dev找到USB設備的名稱(確定當前各個設備的串口名字,如機械臂是ttyUSB1,激光雷達是ttyUSB0),然后輸入
$ udevadm info --attribute-walk --name=/dev/ttyUSB1可以看到
... looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.4/1-2.4.4/1-2.4.4:1.0/ttyUSB1/tty/ttyUSB1':KERNEL=="ttyUSB1"SUBSYSTEM=="tty"DRIVER==""looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/ 1-2/1-2.4/1-2.4.4/1-2.4.4:1.0/ttyUSB1':KERNELS=="ttyUSB1"SUBSYSTEMS=="usb-serial"DRIVERS=="cp210x"ATTRS{port_number}=="0"looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/ 1-2/1-2.4/1-2.4.4/1-2.4.4:1.0':KERNELS=="1-2.4.4:1.0"SUBSYSTEMS=="usb"DRIVERS=="cp210x"ATTRS{authorized}=="1"ATTRS{bAlternateSetting}==" 0"ATTRS{bInterfaceClass}=="ff"ATTRS{bInterfaceNumber}=="00"ATTRS{bInterfaceProtocol}=="00"ATTRS{bInterfaceSubClass}=="00"ATTRS{bNumEndpoints}=="02"ATTRS{interface}=="CP2102 USB to UART Bridge Controller"ATTRS{supports_autosuspend}=="1"...可以得知該設備現在使用的端口號為“1-2.4.4:1.0”,接下來開始編寫綁定規則
$ sudo gedit /etc/udev/rules.d/ttyUSBLink.rules在文件中添加
ACTION=="add",KERNELS=="1-2.4.4:1.0",SUBSYSTEMS=="usb",MODE:="0777", SYMLINK+="rplidar"保存文件并重啟PC,在終端中輸入
$ ls -l /dev |grep ttyUSB查看是否成功修改
注意:因為是綁定固定的端口,所以usb的接口不能隨意更換位置,考慮以后在HUB上標注各個位置插的設備。
總結
以上是生活随笔為你收集整理的Linux 绑定USB设备端口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用kubeadm安装k8s集群的完整步
- 下一篇: FPU异常分类