对 udevadm 的使用感到困惑

对 udevadm 的使用感到困惑

这里的最终目标是打开/关闭鼠标插头上的触摸板,因此我尝试使用 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-idsymlinkg 来获取所需格式的路径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/

相关内容