![对 udevadm 的使用感到困惑](https://linux22.com/image/109822/%E5%AF%B9%20udevadm%20%E7%9A%84%E4%BD%BF%E7%94%A8%E6%84%9F%E5%88%B0%E5%9B%B0%E6%83%91.png)
这里的最终目标是打开/关闭鼠标插头上的触摸板,因此我尝试使用 udevadm 从 udev 数据库获取鼠标和触摸板的一些属性,但我不明白这是如何工作的,不幸的是,手册页不是对我来说还不够清楚……
$ lsb_release -irc 发行商 ID:Debian 版本:8.4 代号:杰西
这是我正在寻找的信息:
KERNEL=="input16"
SUBSYSTEM=="input"
DRIVER==""
ATTR{name}=="Bluetooth Laser Travel Mouse"
ATTR{phys}=="5c:e0:c5:9d:63:fd"
ATTR{uniq}=="00:07:61:ec:be:5c"
ATTR{properties}=="0"
从这里我尝试过这个:
$ udevadm info -a /sys/devices/pci0000\:00/0000\:00\:1c.3/0000\:03\:00.0/usb2/2-1/2-1\:1.0/0003\:1EA7\:0064.0002/input/input25/mouse1/`
我明白了
未知设备,绝对路径位于 /dev/ 或 /sys 中。
如果我监控,我会得到这个结果:
$ udevadm monitor -k -s input
monitor will print the received events for:
KERNEL - the kernel uevent
KERNEL[4375.486738] remove /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0002/input/input25/mouse1 (input)
KERNEL[4375.496500] remove /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0002/input/input25/event11 (input)
KERNEL[4375.532441] remove /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0002/input/input25 (input)
KERNEL[4377.840574] add /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26 (input)
KERNEL[4377.840667] add /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26/mouse1 (input)
KERNEL[4377.840759] add /devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26/event11 (input)
所以我也尝试过这个:
$ udevadm info -a -p /sys/devices/pci0000\:00/0000\:00\:1c.3/0000\:03\:00.0/usb2/2-1/2-1\:1.0/0003\:1EA7\:0064.0002/input/input25/
和这个
$ udevadm info -a -p /devices/pci0000\:00/0000\:00\:1c.3/0000\:03\:00.0/usb2/2-1/2-1\:1.0/0003\:1EA7\:0064.0002/input/input25/
并得到这个结果
未找到系统路径
我设法获得一些财产的唯一方法是使用以下命令:
$ udevadm info --query=all --name=/dev/input/mouse1
我明白了,但是,我没有我正在寻找的属性......(即ATTR{name}
)
P:/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26/mouse1 N:输入/鼠标1 S:输入/by-id/usb-1ea7_2.4G_Wireless_Mouse-鼠标 S:输入/按路径/pci-0000:03:00.0-usb-0:1:1.0-鼠标 E: DEVLINKS=/dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse /dev/input/by-path/pci-0000:03:00.0-usb-0:1:1.0-mouse E:DEVNAME=/dev/input/mouse1 E:DEVPATH=/devices/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/input/input26/mouse1 E:ID_BUS=USB E:ID_输入=1 E: ID_INPUT_MOUSE=1 E: ID_MODEL=2.4G_无线_鼠标 E: ID_MODEL_ENC=2.4G\x20无线\x20鼠标 E: ID_MODEL_ID=0064 E: ID_PATH=pci-0000:03:00.0-usb-0:1:1.0 E:ID_PATH_TAG=pci-0000_03_00_0-usb-0_1_1_0 E: ID_REVISION=0200 E: ID_SERIAL=1ea7_2.4G_Wireless_Mouse E: ID_TYPE=隐藏 E: ID_USB_DRIVER=usbhid E: ID_USB_INTERFACES=:030102: E: ID_USB_INTERFACE_NUM=00 E: ID_VENDOR=1ea7 E: ID_VENDOR_ENC=1ea7 E: ID_VENDOR_ID=1ea7 E:主要=13 E: 小=33 E:子系统=输入 E: USEC_INITIALIZED=77840674
很明显,我对如何查询 udev 来获取设备的属性存在误解。
希望我足够清楚,如果有人知道我错了,欢迎任何意见!
谢谢 !
马特。
答案1
请注意,输入数字发生了变化(从25
,您尝试过的内容,到26
,什么 ),因为这些数字不能保证在引导过程中保持不变。尝试
udevadm info -q path -n /dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse
使用常量by-id
symlinkg 来获取所需格式的路径udev
,然后类似
udevadm info -a -p /path/you/just/got
行走路径并输出沿途的所有属性(您可能需要使用父属性来识别它)。
您还可以将其结合起来:
udevadm info -a -p $(udevadm info -q path -n /dev/whatever)
答案2
我用了
udevadm info -a /dev/hidraw0
答案3
删除尾部斜杠 ( /
),例如udevadm info -a -p /sys/class/net/enp0s3
代替udevadm info -a -p /sys/class/net/enp0s3/