
Das ultimative Ziel besteht hier darin, das Touchpad am Mausstecker ein-/auszuschalten. Ich versuche also, mithilfe von udevadm einige Eigenschaften meiner Maus und meines Touchpads aus der Udev-Datenbank abzurufen. Allerdings verstehe ich nicht, wie das funktioniert, und leider ist mir die Manpage nicht klar genug …
$ lsb_release -irc Distributor-ID: Debian Version: 8.4 Codename: Jessie
Nach diesen Informationen suche ich:
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"
Von hier aus habe ich Folgendes versucht:
$ 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/`
und ich bekomme das
Unbekanntes Gerät, absoluter Pfad in /dev/ oder /sys erwartet.
Wenn ich überwache, erhalte ich dieses Ergebnis:
$ 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)
Also ich habe auch Folgendes probiert:
$ 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/
und das
$ 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/
und erhalte dieses Ergebnis
Syspath nicht gefunden
Die einzige Möglichkeit, eine Eigenschaft abzurufen, besteht in der Verwendung des folgenden Befehls:
$ udevadm info --query=all --name=/dev/input/mouse1
Und ich verstehe dies, aber ich habe nicht das Attribut, nach dem ich suche … (dh ATTR{name}
)
P: /Geräte/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/Eingabe/Eingabe26/Maus1 N: Eingabe/Maus1 S: Eingabe/nach-ID/usb-1ea7_2.4G_Wireless_Mouse-Maus S: Eingabe/nach-Pfad/PCI-0000:03:00.0-USB-0:1:1.0-Maus E: DEVLINKS=/dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-Maus /dev/input/by-path/pci-0000:03:00.0-usb-0:1:1.0-Maus E: DEVNAME=/dev/input/mouse1 E: DEVPATH=/Geräte/pci0000:00/0000:00:1c.3/0000:03:00.0/usb2/2-1/2-1:1.0/0003:1EA7:0064.0003/Eingabe/Eingabe26/Maus1 E: ID_BUS=usb E: ID_INPUT=1 E: ID_INPUT_MOUSE=1 E: ID_MODEL=2.4G_Drahtlose_Maus E: ID_MODEL_ENC=2.4G\x20Kabellos\x20Maus 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=versteckt 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=Eingabe E: USEC_INITIALIZED=77840674
Ich habe also offensichtlich ein Missverständnis darüber, wie ich udev abfrage, um das Attribut eines Geräts zu erhalten.
Ich hoffe, ich habe mich klar genug ausgedrückt. Wenn jemand eine Idee hat, wo ich einen Fehler gemacht habe, ist jeder Beitrag willkommen!
Danke !
Matth.
Antwort1
Beachten Sie, dass sich die Eingabenummer geändert hat (von 25
, was Sie versucht haben, zu 26
, was ), da nicht garantiert ist, dass diese bei mehreren Systemstarts konstant bleiben. Versuchen Sie es
udevadm info -q path -n /dev/input/by-id/usb-1ea7_2.4G_Wireless_Mouse-mouse
mit dem konstanten by-id
symbolischen Link, um den Pfad im erwarteten Format zu erhalten udev
, dann so etwas wie
udevadm info -a -p /path/you/just/got
um den Pfad abzulaufen und alle Attribute entlang des Weges auszugeben (zur Identifizierung müssen Sie möglicherweise übergeordnete Attribute verwenden).
Das kann man auch kombinieren:
udevadm info -a -p $(udevadm info -q path -n /dev/whatever)
Antwort2
ich benutzte
udevadm info -a /dev/hidraw0
Antwort3
Entfernen Sie abschließende Schrägstriche ( /
) wie udevadm info -a -p /sys/class/net/enp0s3
stattudevadm info -a -p /sys/class/net/enp0s3/