udev 规则使用链接名称中的 ATTRS{serial} 为 USB 设备生成符号链接

kra*_*nko 5 linux usb udev

我有一个 udev 规则,可以/dev根据 USB 设备的序列号为它们生成符号链接(我有多个其他方面相同的设备,但需要可重现的设备端点)。

目前我需要为每个新序列号添加一条规则,如下所示:

SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S101", SYMLINK+="ttyS101"
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S102", SYMLINK+="ttyS102"
...
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种使用单个规则来执行此操作的方法,所有可动态访问的都是%k%n%c,但我发现无法访问任何其他值。使用PROGRAM=""可能是一种方法,但我如何从那里访问 ATTRS?

我试过这个:

SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S101", PROGRAM="/bin/sh -c 'udevadm info /dev/%k | grep ID_SERIAL_SHORT= | cut -d= -f 2'" SYMLINK+="tty%c"
Run Code Online (Sandbox Code Playgroud)

但它看起来/dev/%k在程序运行时不可用,所以这也不起作用。

有什么办法可以用于ATTRS{serial}我的SYMLINK+=""吗?

Dav*_*son 0

看起来您正在使用 USB 串行端口。您应该更容易通过 中的符号链接访问这些设备/dev/serial/by-id。无需制定 udev 规则。