confuso sobre o uso do udevadm

0

O objetivo final aqui é ligar / desligar o touchpad na tomada do mouse, Eu estou tentando obter algumas propriedades do meu mouse e meu touchpad do banco de dados do udev, usando o udevadm, mas não entendo como isso funciona e, infelizmente, a manpage não é clara o suficiente para mim…

$ lsb_release -irc
Distributor ID: Debian
Release:    8.4
Codename:   jessie

Aqui está o tipo de informação que estou procurando:

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"

A partir daqui, tentei isto:

$ 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/'

e eu estou recebendo isso

Unknown device, absolute path in /dev/ or /sys expected.

Se eu monitorar, obtenho esse resultado:

$ 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)

Então eu também tentei isso:

$ 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/

e isso

$ 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/

e obtenha esse resultado

syspath not found

A única maneira de conseguir alguma propriedade é usar este comando:

$ udevadm info --query=all --name=/dev/input/mouse1

E eu recebo isso, mas não tenho o atributo que estou procurando ... (ou seja, 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: input/mouse1 S: input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse 
S: input/by-path/pci-0000:03:00.0-usb-0:1:1.0-mouse 
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_INPUT=1 
E: ID_INPUT_MOUSE=1 
E: ID_MODEL=2.4G_Wireless_Mouse 
E: ID_MODEL_ENC=2.4G\x20Wireless\x20Mouse 
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=hid 
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: MAJOR=13 
E: MINOR=33 
E: SUBSYSTEM=input 
E: USEC_INITIALIZED=77840674

Então, claramente, tenho um mal-entendido sobre como consultar o udev para obter o atributo de um dispositivo.

Espero que eu esteja claro o suficiente se alguém tiver uma idéia de que estou confundindo qualquer contribuição é bem-vinda!

Obrigado!

Matth.

    
por Matthieu Ducorps 18.04.2017 / 06:21

2 respostas

1

Observe que o número de entrada mudou (de 25 , o que você tentou, para 26 , o que), porque não é garantido que eles sejam constantes nas inicializações. Experimente

udevadm info -q path -n /dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse

com a constante by-id symlinkg para obter o caminho no formato udev expects, então algo como

 udevadm info -a -p /path/you/just/got

para percorrer o caminho e gerar todos os atributos ao longo do caminho (talvez seja necessário usar atributos pai para identificá-lo).

Você também pode combinar isso:

udevadm info -a -p $(udevadm info -q path -n /dev/whatever)
    
por 18.04.2017 / 09:27
2

eu usei

udevadm info -a /dev/hidraw0   
    
por 18.04.2017 / 11:25