【Ubuntu设备端口绑定】

发布于:2025-03-29 ⋅ 阅读:(31) ⋅ 点赞:(0)

查看设备

通过插拔设备,找到要绑定设备的ID号和设备号。
设备ID查看 lsusb
设备号查看 ll /dev/
查看绑定USB设备 ll /dev | grep ttyUSB*

绑定步骤

将绑定规则【*.rules】文件放在根目录的/etc/udev/rules.d 目录下。

  1. 进入rules.d目录下
    cd /etc/udev/rules.d/
  2. 新建一个【usb.rules】文件并编辑
    sudo vim usb.rules
  3. 写入以下内容
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"
  1. 保存退出,使规则生效,主控上执行:
    sudo udevadm control --reload-rules && sudo udevadm trigger
  2. 查看绑定成功与否
    ll /dev | grep ttyUSB*

规则文件语法简介

KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial"
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"

解析:

KERNEL          # 匹配事件的设备名
ATTR{filename}  # 匹配事件设备的sysfs属性。
idVendor        # 生产商编号
idProduct       # 产品号
SYMLINK         # 为/dev/下的设备文件产生符号链接。就是给这个设备取一个别名。
MODE            # 为设备设定权限。

看到PCB的设备号是【ttyUSB0】容易跳变,ID号是【1a86,7523】固定不变,【ttyUSB*】代表无论以后该设备号变成【ttyUSB】后面跟着【0、1、2、3、4、…】都绑定为【myserial】;雷达设备【ttyUSB1】同理;需要绑定其他设备也同理。

注意:取别名的时候,不要取一些系统已经存在的设备名,否则会失败。

相同ID号设备绑定

有两款及以上的相同ID的设备,上述的绑定就会出现混乱。

  1. 先查看ttyUSB0对应的设备:
    ll /dev | grep ttyUSB*
  2. 查看USB端口号
    udevadm info --attribute-walk --name=/dev/ttyUSB0 | grep devpath
  3. 在rules文件里修改规则
# 修改前:
# KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial"    
# 修改后:
KERNEL=="ttyUSB*", ATTRS{devpath}=="2.4",  ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0777", SYMLINK+="myserial" 

新增了, ATTRS{devpath}=="2.4"
4. 保存退出,使规则生效
sudo udevadm control --reload-rules && sudo udevadm trigger