linux – 具有少量父设备属性的udev规则
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 具有少量父设备属性的udev规则,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3345字,纯文字阅读大概需要5分钟。
内容图文
![linux – 具有少量父设备属性的udev规则](/upload/InfoBanner/zyjiaocheng/963/f953b0c53fe24ea388e4a8cc923684ab.jpg)
我需要复杂的通用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的端口的确切名称.
这份文件对我有帮助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]*", 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 – 具有少量父设备属性的udev规则全部内容,希望文章能够帮你解决linux – 具有少量父设备属性的udev规则所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。