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 | sudo service udev reload |
输入
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" |