1.创建 udev 规则文件
获取设备标识符:
udevadm info -a /dev/ttyUSB0
udevadm info -a /dev/ttyUSB1
udevadm
:这是 Udev 的管理命令行工具,用于管理和查询设备信息。info
:这个子命令用于显示设备的信息。-a
:这个选项表示显示所有的属性,包括父设备的信息。/dev/ttyUSB0
:这是你要查询的设备的路径。
在 /etc/udev/rules.d 目录下创建一个以 .rules 结尾的文件,命名规则为 xx-your-rules-name.rules,其中 xx 代表规则文件的顺序,your-rules-name 代表规则名称,可以根据实际情况自行定义。例如:
sudo vim /etc/udev/rules.d/99-serial-usb.rules
添加内容:
KERNELS=="1-2.1:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="IMU100C"
KERNELS=="1-2.2:1.0", SUBSYSTEMS=="usb", MODE:="0666", SYMLINK+="RTC"
2.授予权限
sudo chmod 777 /etc/udev/rules.d/99-serial-usb.rules
3.应用
sudo service udev reload
sudo service udev restart
sudo udevadm trigger
-
SUBSYSTEMS=="usb"
: -
这个条件确保规则仅适用于 USB 设备。
-
KERNELS=="1-2.2:1.0"
和KERNELS=="1-2.1:1.0"
: - 这些表示 USB 设备的路径,
1-2.2:1.0
和1-2.1:1.0
是特定设备的接口路径(设备连接到 USB 端口的具体位置)。 - 注意:你可以使用
KERNELS
来指定设备路径,但如果有多个设备同时连接,可能会导致匹配不到你想要的设备。在这种情况下,最好使用更稳定的匹配方式,如ATTRS{serial}
来匹配设备的序列号。 -
这是根据设备的序列号来匹配特定设备,ATTRS{serial}=="FTGFOZ8U"
和ATTRS{serial}=="FTDJZ5T4"
:FTGFOZ8U
和FTDJZ5T4
是 USB 设备的唯一序列号,用来标识特定的设备。-
注意点:
-
KERNELS
vsKERNEL
: -
KERNELS
匹配的是设备的内核名称路径。如果设备路径变化(例如设备重新插入),这个匹配可能会失效。通常,KERNEL
更常用,它匹配的是设备的名称。使用KERNELS
时要确保设备路径不会发生变化。(ATTRS{serial}由前面命令查到) -
KERNEL=="ttyUSB*", SUBSYSTEM=="tty", ATTRS{serial}=="FTGFOZ8U", MODE:="0666", SYMLINK+="IMU100C" KERNEL=="ttyUSB*", SUBSYSTEM=="tty", ATTRS{serial}=="FTDJZ5T4", MODE:="0666", SYMLINK+="RTC"
-