如何让我的 udev 规则发挥作用

如何让我的 udev 规则发挥作用

我的 USB 设备名称中的数字一直在变化/dev/ttyUSB?

我见过并尝试做同样的事情,但没有成功。

gauthier@sobel:/etc/udev/rules.d $ udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB1)

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB1/tty/ttyUSB1':
    KERNEL=="ttyUSB1"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/ttyUSB1':
    KERNELS=="ttyUSB1"
    SUBSYSTEMS=="usb-serial"
    DRIVERS=="ftdi_sio"
    ATTRS{port_number}=="0"
    ATTRS{latency_timer}=="1"
[...]

然后我创建了一个文件/etc/udev/rules.d/50-udev.rules(它不存在)并将其放入其中:

SUBSYSTEM=="usb-serial", KERNEL=="ttyUSB?", SYMLINK+="ttyUSBserial"

但没有得到符号链接,即使在udevadm trigger

gauthier@sobel:/etc/udev/rules.d $ ls /dev|grep USB
ttyUSB1

如何创建一个不会改变的设备名称?我的规则哪里出了问题?

答案1

如果我读得正确的话,我就会注意到设备(KERNEL、SUBSYSTEM)的属性和父设备(KERNEL**S**、SUBSYSTEM**S**)的属性之间的差异。

在规则中添加“S”有效!

在此过程中,我还注意到 udev 通过 中的规则在 /dev/serial/by-id/usb-* 中创建了一个持久符号链接/lib/udev/rules.d/60-persistent-serial.rules,我可以使用它。

答案2

哦,我也跟着你的旅程,即使我添加了“S”,符号链接也无法正常工作。我花了很长时间才发现你必须使用设备本身的规则(没有“S”),或者一个单身的父母...我引用了 2 个级别的父母,所以我无法创建符号链接......只是为了与碰巧有与我类似情况的其他人分享。

相关内容