linux父设备,linux – 具有少量父设备属性的udev规则

我需要复杂的通用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个父节点的属性的规则

有人可以提出解决方案吗?得到它有什么诀窍吗?

解决方法:

经过许多不成功的经历,我找到了解决方案!

它的关键特性是设置环境变量:

>在插件事件中,我们查看vendor:id对并在环境变量中记住它.

>在同一事件中,我们比较保存的变量和usb-device树节点ID,以指定某些usb-hub的端口的确切名称.

KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="05e3", ATTRS{idProduct}=="0610", ENV{USB_HUB_TYPE}="05e3:0610"

KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="0835", ATTRS{idProduct}=="8500", ENV{USB_HUB_TYPE}="0835:8500"

#

ENV{USB_HUB_TYPE}=="0835:8500", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].4:1.0", SYMLINK+="port1"

ENV{USB_HUB_TYPE}=="0835:8500", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].3:1.0", SYMLINK+="port2"

ENV{USB_HUB_TYPE}=="0835:8500", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].2:1.0", SYMLINK+="port3"

ENV{USB_HUB_TYPE}=="0835:8500", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].5.5:1.0", SYMLINK+="port4"

ENV{USB_HUB_TYPE}=="0835:8500", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].5.2:1.0", SYMLINK+="port5"

ENV{USB_HUB_TYPE}=="0835:8500", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].5.3:1.0", SYMLINK+="port6"

ENV{USB_HUB_TYPE}=="0835:8500", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].5.4:1.0", SYMLINK+="port7"

#

ENV{USB_HUB_TYPE}=="05e3:0610", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].1.1:1.0" SYMLINK+="port1"

ENV{USB_HUB_TYPE}=="05e3:0610", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].2:1.0", SYMLINK+="port2"

ENV{USB_HUB_TYPE}=="05e3:0610", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].1.2:1.0", SYMLINK+="port3"

ENV{USB_HUB_TYPE}=="05e3:0610", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].3:1.0", SYMLINK+="port4"

ENV{USB_HUB_TYPE}=="05e3:0610", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].1.3:1.0", SYMLINK+="port5"

ENV{USB_HUB_TYPE}=="05e3:0610", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].4:1.0", SYMLINK+="port6"

ENV{USB_HUB_TYPE}=="05e3:0610", KERNEL=="ttyUSB[0-9]*", SUBSYSTEM=="tty", KERNELS=="1-1.[2-3].1.4:1.0", SYMLINK+="port7"

也许,这对某人有用.

标签:linux,debian,raspberry-pi,udev

来源: https://codeday.me/bug/20190714/1459315.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值