前言:
项目中为了解决 usb 设备屏幕上电顺序导致屏幕偏移、触屏出现偏移等问题。
一、方法1:使用设备 ID 号
步骤:
-
查看 USB 设备的供应商ID和产品ID
Bus 001 Device 003: ID 090c:1000 Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) Flash Drive
1d6b:0003:090c是供应商ID,1000 是产品ID。
-
创建 udev 规则文件
/etc/udev/rules.d/01-usb-screen.rules
(名字可以随便命,这里写01,可以被系统第一个处理),并添加以下内容在/dev目录下创建一个名为COM1的符号链接,指向设备/dev/ttyUSB*。
SUBSYSTEM=="ttyUSB*", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0003", MODE:="0777" , SYMLINK+="COM1"
不用在意这个 USB 设备生成的节点是 ttyUSB*, 因为 COM1 会一直指向这个设备的 ID 号,所以你只需要访问 /dev/COM1 就可以了。
-
重新加载udev规则并重启udev服务
sudo udevadm control --reload-rules
sudo service udev restart -
查询
插入的 USB 设备能够自动映射到指定的串口号。
bobo@thj:~$ ls -l /dev/COM1
lrwxrwxrwx 1 root root 7 Jan 30 10:39 /dev/COM1 -> ttyUSB0
二、方法2:使用硬件序列号(防止相同生产商生产的相同USB串口)
步骤:
-
查看硬件序列号
udevadm info --attribute-walk --name=/dev/ttyUSB0
-
添加规则到文件
/etc/udev/rules.d/01-usb-screen.rules
ATTRS{seria1}=="这个是刚刚查询到的硬件序列号", MODE:="0777", GROUP:="dialout", SMLINK+="COM2"
-
查询
插入的 USB 设备能够自动映射到指定的串口号。
bobo@thj:~$ ls -l /dev/COM2
lrwxrwxrwx 1 root root 7 Jan 30 10:39 /dev/COM2 -> ttyUSB0