linux USB设备调试
usb外设调试
KERNEL==”ttyUSB*”,KERNELS==”3-1.3”,ATTRS{idVendor}==”0403”, ATTRS{idProduct}==”6001”, MODE:=”0777”,SYMLINK+=”lglove”
端口绑定 usb rules
只有一种硬件地址的设备
1 | 例如显示usb信息为: |
1 | Bus 001 Device 010: ID 10c4:8108 Cygnal Integrated Products, Inc. |
则idVendor
是10c4
,idProduct
是8108
1 | 进入/etc/udev/rules.d目录 |
输入:
1 | KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="8108", MODE:="0777",SYMLINK+="foo" |
匹配sys中内核名为ttyUSB*
的设备,属性匹配依据生产商编号idVendor
和产品号idProduct
,设定读写权限为0777
,SYMLINK
为将该usb设备映射为其他别名的设备foo
.
重启串口后拔插设备即可。1
2
3sudo service udev reload
sudo service udev restart
sudo udevadm control --reload-rules && sudo udevadm trigger
输入1
ls -l /dev | grep ttyUSB
可以看到映射关系1
lrwxrwxrwx 1 root root 7 Aug 12 15:35 foo -> ttyUSB0
有多个相同硬件地址的设备
如果购买了两个相同的串口设备,比如都是ch341
(ID是1a86:7523
),用上面的方法就无法区分和绑定了。我们可以通过KERNELS
的差异来绑定
使用KERNELS来区分
1 | udevadm info --attribute-walk --name=/dev/ttyUSB0 | grep KERNELS |
1 | KERNELS=="input16" |
如结果为上面显示的,则添加的规则判断为去掉冒号前,即 KERNELS=="1-4.4"
,完整规则为:
1 | KERNEL=="ttyUSB*",KERNELS=="1-4.4",ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="8108", MODE:="0777",SYMLINK+="foo" |