首页 > 解决方案 > udev 规则使用链接名称中的 ATTRS{serial} 为 USB 设备生成符号链接

问题描述

/dev我有一个 udev 规则,可以根据它们的序列号为我的 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"
...

我正在寻找一种使用单个规则执行此操作的方法,所有可动态访问的是%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"

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

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

标签: linuxusbudev

解决方案


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


推荐阅读