【问题标题】:udev rule generating symlink for USB-device using ATTRS{serial} in link nameudev 规则使用链接名称中的 ATTRS{serial} 为 USB 设备生成符号链接
【发布时间】:2020-02-26 13:05:25
【问题描述】:

我有一个 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"
...

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

【问题讨论】:

  • Q 写得很好,但由于这似乎并不依赖于编程语言,而且似乎是 linux conf 文件的魔法,所以在 Unix & LinuxServer Fault 上问这个问题似乎更合适. (恕我直言)。祝你好运!
  • udev 规则是一种编程语言。它们有条件和 goto。

标签: linux usb udev


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多