我正在写一个udev规则来设置两个串口的名称。我想在符号链接中使用 bInterfaceNumber 属性的值。
我的规则是:
SUBSYSTEMS ==“usb”,DRIVERS ==“usb”,ATTRS {idVendor} ==“0403”,ATTRS {idProduct} ==“6010”,SYMLINK + =“toto%s {bInterfaceNumber}”
规则与设备匹配,但从未找到属性的值。
以下是一个设备的分层视图:
console@host:udevadm info --name=/dev/ttyUSB0 --attribute-walk
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0':
KERNELS=="1-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ftdi_sio"
ATTRS{bInterfaceNumber}=="00"
looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-1':
KERNELS=="1-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{idVendor}=="0403"
ATTRS{idProduct}=="6010"
提前致谢
答案 0 :(得分:1)
这是我为双端口FTDI芯片创建别名的规则:
# Internal serial ports
SUBSYSTEMS=="usb", ATTRS{interface}=="Dual RS232", SYMLINK+="sertest%s{bInterfaceNumber}"
根据此post,属性必须在一个级别上匹配。这就是idVendor
和idProduct
无法与bInterfaceNumber
一起使用的原因。您可以在下面看到,interface
和bInterfaceNumber
属于同一级别:
looking at parent device '/devices/platform/omap/musb-ti81xx/musb-hdrc.1/usb1/1-1/1-1.2/1-1.2:1.0':
KERNELS=="1-1.2:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="ftdi_sio"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="ff"
ATTRS{bInterfaceProtocol}=="ff"
ATTRS{supports_autosuspend}=="1"
ATTRS{interface}=="Dual RS232"
答案 1 :(得分:0)
我认为您可以使用that等环境变量。
在你的情况下,它将是这样的:
SUBSYSTEM=="usb", DRIVER=="ftdi_sio", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6010" ENV{MY_DEV}="yes"
ENV{MY_DEV}="yes", SUBSYSTEMS=="usb", SYMLINK+="toto%s{bInterfaceNumber}"