linux – 具有少量父设备属性的udev规则
发布时间:2020-12-13 23:57:27 所属栏目:Linux 来源:网络整理
导读:我需要复杂的通用udev规则来确定USB设备插入任何USB集线器的某个端口.所以,我必须结合设备树的不同层的父属性… 我有这个: $udevadm info --query=all --name=/dev/ttyUSB0 --attribute-walk looking at device '/devices/platform/bcm2708_usb/usb1/1-1/1-
我需要复杂的通用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对并在环境变量中记住它. 这份文件对我有帮助http://www.reactivated.net/writing_udev_rules.html KERNEL=="ttyUSB[0-9]*",SUBSYSTEM=="tty",SUBSYSTEMS=="usb",ATTRS{idVendor}=="05e3",ATTRS{idProduct}=="0610",ENV{USB_HUB_TYPE}="05e3:0610" KERNEL=="ttyUSB[0-9]*",ENV{USB_HUB_TYPE}="0835:8500" # ENV{USB_HUB_TYPE}=="0835:8500",KERNEL=="ttyUSB[0-9]*",KERNELS=="1-1.[2-3].4:1.0",SYMLINK+="port1" ENV{USB_HUB_TYPE}=="0835:8500",KERNELS=="1-1.[2-3].3:1.0",SYMLINK+="port2" ENV{USB_HUB_TYPE}=="0835:8500",KERNELS=="1-1.[2-3].2:1.0",SYMLINK+="port3" ENV{USB_HUB_TYPE}=="0835:8500",KERNELS=="1-1.[2-3].5.5:1.0",SYMLINK+="port4" ENV{USB_HUB_TYPE}=="0835:8500",KERNELS=="1-1.[2-3].5.2:1.0",SYMLINK+="port5" ENV{USB_HUB_TYPE}=="0835:8500",KERNELS=="1-1.[2-3].5.3:1.0",SYMLINK+="port6" ENV{USB_HUB_TYPE}=="0835:8500",KERNELS=="1-1.[2-3].5.4:1.0",SYMLINK+="port7" # ENV{USB_HUB_TYPE}=="05e3:0610",KERNELS=="1-1.[2-3].1.1:1.0" SYMLINK+="port1" ENV{USB_HUB_TYPE}=="05e3:0610",SYMLINK+="port2" ENV{USB_HUB_TYPE}=="05e3:0610",KERNELS=="1-1.[2-3].1.2:1.0",SYMLINK+="port3" ENV{USB_HUB_TYPE}=="05e3:0610",SYMLINK+="port4" ENV{USB_HUB_TYPE}=="05e3:0610",KERNELS=="1-1.[2-3].1.3:1.0",SYMLINK+="port5" ENV{USB_HUB_TYPE}=="05e3:0610",SYMLINK+="port6" ENV{USB_HUB_TYPE}=="05e3:0610",KERNELS=="1-1.[2-3].1.4:1.0",SYMLINK+="port7" 也许,这对某人有用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – Git – 致命:无法获取当前的工作目录?
- linux – 为什么“echo foo |读一个; echo $a“没有按预期工
- linux – / tmp和/ var / tmp的差异和正确用法
- 如何从Linux上的汇编代码调用c库?
- linux – git push之后,项目从gitweb中消失了
- linux – configure:错误:C预处理器无法进行健全性检查
- LINUX学习:Cobbler批量部署CentOS
- linux – bash将列剪切为一个文件并保存到另一个文件的末尾
- linux – 如果日期字符串是 – 或 – 5分钟
- linux – 用于连接数据中心主机的高吞吐量网状VPN