我有三个不同的串行设备连接到三个 USB 串行转换器 (FTDI USB-RS232)。如果我连接它们,我会按预期获得通用设备名称 /dev/ttyUSBx。当我尝试编写一些 udev 规则时,udevadm 向我显示了三个设备的相同输出,但某些设备序列号属性除外。
这些序列号会在每台设备上发生变化,所以如果我使用不同的 USB 串行转换器,我的规则将不再适用。因此,我需要一种与连接到串行转换器的特定设备通信并通过其响应识别它的方法。
“编写 udev 规则”HOWTO中,关于使用 PROGRAM 功能调用外部程序来命名设备的内容如下:
PROGRAM 用于运行产生设备名称的程序(除此之外它们不应该做任何事情)。在执行这些程序时,设备节点尚未创建,因此无法以任何方式对设备进行操作,
规则示例:
SUBSYSTEM=="usb", PROGRAM="/bin/device_namer %k", SYMLINK+="%c"
所以我无法从那里写入 /dev/ttyUSBx 来识别设备。然后,我有 RUN 功能,但它似乎无法创建新的 SYMLINK,因为 udev 不会得到 RUN 的输出。
规则示例:
SUBSYSTEM=="usb", RUN="/bin/program"
我可以从该 RUN 脚本中指示 udev 创建符号链接吗?或者我可以从那里手动创建该符号链接吗?
谢谢