Linux 绑定USB设备端口
Linux 綁定USB設(shè)備端口
- 1 根據(jù)設(shè)備ID綁定
- 2 根據(jù)電腦USB硬件端口綁定,只要插入該USB端口即為設(shè)定設(shè)備名
1 根據(jù)設(shè)備ID綁定
方法特點(diǎn):按照ID綁定的話不需要固定USB接口,它是根據(jù)設(shè)備自身的ID進(jìn)行綁定,但是如果有多個(gè)設(shè)備的串口使用同一款串口芯片的話,會(huì)出現(xiàn)紊亂
查看需要綁定的設(shè)備的idVendor 和idpProduct,例如我要綁定一個(gè)rplidar的激光雷達(dá)
$ lsusb
新建一個(gè)規(guī)則文件:
自定義打開文件寫入自定義規(guī)則。這里最好新建一個(gè)文件,不要覆蓋以前的文件了。如果是相同設(shè)備還需要額外的辨別參數(shù)也可以添加額外的參數(shù)。我們只取前面的數(shù)值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*
如圖,可以看到新增了一個(gè)設(shè)備,正是我們?cè)谝?guī)則文件中設(shè)置的別名。
如果不行的話先檢測(cè)規(guī)則文件的格式有沒有錯(cuò)誤,接著將USB拔了再重插。
還有其他額外的設(shè)備需要?jiǎng)t加一行,方法一樣。
2 根據(jù)電腦USB硬件端口綁定,只要插入該USB端口即為設(shè)定設(shè)備名
方法特點(diǎn):按照USB硬件ID綁定的話必須固定接口對(duì)應(yīng)的設(shè)備,因?yàn)樗桓鶕?jù)電腦自身的USB硬件地址確定,但是它可以解決設(shè)備使用同一款串口芯片導(dǎo)致ID相同的問題
有時(shí)候我們兩個(gè)串口設(shè)備使用了痛苦的USB芯片,例如激光雷達(dá)和機(jī)械臂使用了同款的USB芯片,在終端中輸入
$ lsusb會(huì)發(fā)現(xiàn)兩者的USB端口的VID和PID是相同的(10c4:ea60),所以開啟了機(jī)械臂后,激光雷達(dá)啟動(dòng)時(shí)會(huì)指向到機(jī)械臂的端口。
將USB設(shè)備的接入的端口進(jìn)行名稱綁定,拔出或關(guān)閉USB設(shè)備后,在端口中輸入
$ ls /dev再插入或打開USB設(shè)備,輸入
$ ls /dev找到USB設(shè)備的名稱(確定當(dāng)前各個(gè)設(shè)備的串口名字,如機(jī)械臂是ttyUSB1,激光雷達(dá)是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"...可以得知該設(shè)備現(xiàn)在使用的端口號(hào)為“1-2.4.4:1.0”,接下來開始編寫綁定規(guī)則
$ 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查看是否成功修改
注意:因?yàn)槭墙壎ü潭ǖ亩丝?#xff0c;所以u(píng)sb的接口不能隨意更換位置,考慮以后在HUB上標(biāo)注各個(gè)位置插的設(shè)備。
總結(jié)
以上是生活随笔為你收集整理的Linux 绑定USB设备端口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用kubeadm安装k8s集群的完整步
- 下一篇: linux需要wifi网络认证,无线80