Linux 绑定USB设备端口

1 根据设备ID绑定

方法特点:按照ID绑定的话不需要固定USB接口,它是根据设备自身的ID进行绑定,但是如果有多个设备的串口使用同一款串口芯片的话,会出现紊乱

查看需要绑定的设备的idVendoridpProduct,例如我要绑定一个rplidar的激光雷达

$ lsusb

在这里插入图片描述
新建一个规则文件:

$ sudo gedit /etc/udev/rules.d/com_rplidar.rules

自定义打开文件写入自定义规则。这里最好新建一个文件,不要覆盖以前的文件了。如果是相同设备还需要额外的辨别参数也可以添加额外的参数。我们只取前面的数值10c4ea60,,后面的描述不要。

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上标注各个位置插的设备。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值