【发布时间】:2015-01-16 23:49:03
【问题描述】:
我需要复杂且通用的udev 规则来确定插入任何 USB 集线器的某个端口的 USB 设备。所以,我必须结合设备树不同层的父属性...
我有这个:
$udevadm info --query=all --name=/dev/ttyUSB0 --attribute-walk
looking at device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
. . .
looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4':
KERNELS=="1-1.2.4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
...
looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.2':
KERNELS=="1-1.2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{devpath}=="1.2"
ATTRS{idVendor}=="0835"
...
ATTRS{idProduct}=="8500"
ATTRS{bDeviceClass}=="09"
ATTRS{product}=="USB2.0 Hub"
. . .
然后我构造了类似这样的 udev 规则来识别某个 USB 集线器的某个端口:
KERNEL=="ttyUSB[0-9]*", KERNELS=="1-1.2.4", ATTRS{idVendor}=="0835", ATTRS{idProduct}=="8500", SYMLINK+="port1"
但是当我尝试使用来自不同父层的属性时它不起作用。
我知道 udev 仅支持来自一个特定父设备的附加属性。但我真的需要从我的设备的 2 个父节点获取组合属性的规则
有人可以提出解决方案吗?有什么技巧可以得到吗?
【问题讨论】:
标签: linux debian raspberry-pi udev