这个教程在Ubuntu18.04上实现了对USB设备的绑定。
查看USB设备ID
lsusb
结果如下图所示
我们要查看设备的ID,如果现在看不出哪个是我们需要的设备的ID,我们可以通过拔掉设备运行一次这个命令,再把设备插入再运行一次,进行对比可以确定出我们拔插的设备的ID号,这里我通过拔插知道我要固定的设备是下图中箭头指出来的那个。
以我这里为例,我已经确定我的设备ID是 1a86:7523
查看设备的详细信息
输入以下命令查看设备的详细信息
udevadm info --attribute-walk --name=/dev/ttyUSB0
这里要注意,命令中的“/dev/ttyUSB0”是系统识别出来的设备名称,以串口为例输入以下命令可以查看USB所有串口名字
ls /dev/ttyUSB*
如果是摄像头设备则是下面这个命令。
ls /dev/video*
确定设备名称后,我们继续运行命令“ udevadm info --attribute-walk --name=/dev/ttyUSB0”,结果如下图
这时会出现很多个“looking at parent device” ,它下面有很多ATTRS开头的信息,在出现的这么多个“looking at parent device”中我们找到ATTRS{idVendor}=="1a86"和ATTRS{idProduct}=="7523"这两个值和我们刚刚找到的设备ID一致的那一部分, 在这两个参数的上面一行有一个ATTRS{devpath}=="2.4",这个值是就是区分其他设备的,ID号有出现一样的情况,这就是为什么会跳设备号的原因。
进行绑定
在终端输入以下命令
sudo gedit /etc/udev/rules.d/usb.rules
此时打开了一个文本,往文本里输入以下内容
KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86",
ATTRS{idProduct}=="7523", MODE:="0777",
ATTRS{devpath}=="2.4", SYMLINK+="IMU_Serial"
其中 “KERNEL”参数是搜索系统设备名前缀为ttyUSB的设备,ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523"是ID参数,就是上面我们找出来的,ATTRS{devpath}=="2.4"就是我们刚刚确认要绑定的唯一特性, SYMLINK+="IMU_Serial"参数是重新映射的名字。
保存
文件编辑完之后进行保存关闭。
输入以下命令让设置生效
sudo udevadm control --reload-rules
sudo udevadm trigger
验证
在终端输入指令
ls /dev/
就会发现刚刚设置新映射的名字那个串口可以在终端中找到。
到这里就绑定成功了。我们在调用这个USB设备的时候通过“/dev/IMU_Serial”去索引就可以找到我们绑定的设备,可以解决直接索引设备号多设备接入时接入顺序不同,设备名字就不一样的问题和跳设备号的问题。