Okay, zuerst verstehe ich jetzt, was die Dokumentation für $id
bedeutet
Der Name des Geräts stimmte überein, während der Devpath nach oben nach SUBSYSTEMS, KERNELS, DRIVERS und ATTRS durchsucht wurde.
... und es ist nicht das, was ich dachte (was dadurch entstanden ist, dass ich die Dokumentation nicht verstanden habe, kombiniert mit einigen Experimenten).
Bei "Der Name des Geräts" handelt es sich um dasselbe, mit dem der KERNEL
Schlüssel übereinstimmt. Die Dokumentation über den KERNEL
Schlüssel lautet:
Passen Sie den Namen des Ereignisgeräts an.
So wissen Sie, dass "Name" und "KERNEL" verwandt sind.
Der Teil "Beim Durchsuchen des Devpaths nach oben nach SUBSYSTEMS, KERNELS, DRIVERS und ATTRS abgeglichen" bedeutet, dass, wenn Sie in der Regel eine Übereinstimmung mit "SUBSYSTEMS, KERNELS, DRIVERS oder ATTRS" angegeben haben, der Gerätebaum nach oben läuft, bis ein gefunden wird Spiel; Der Name des übereinstimmenden Geräts wird verwendet.
In meiner ersten Regel stimmte es also mit dem ATTRS-Schlüssel überein, und dieses Gerät war zufällig das physische USB-Gerät.
Für meine andere Regel musste ich auf den Baum schauen und etwas finden, das zum physischen Gerät passt, aber nichts darunter. Hier ist mein Gerätebaum:
# udevadm info --attribute-walk --name=/dev/cdc-wdm0
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/platform/atmel-ehci/usb1/1-1/1-1.7/1-1.7.2/1-1.7.2:1.5/usb/cdc-wdm0':
KERNEL=="cdc-wdm0"
SUBSYSTEM=="usb"
DRIVER==""
looking at parent device '/devices/platform/atmel-ehci/usb1/1-1/1-1.7/1-1.7.2/1-1.7.2:1.5':
KERNELS=="1-1.7.2:1.5"
SUBSYSTEMS=="usb"
DRIVERS=="qmi_wwan"
ATTRS{bInterfaceNumber}=="05"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="03"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="f1"
ATTRS{bInterfaceProtocol}=="ff"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/platform/atmel-ehci/usb1/1-1/1-1.7/1-1.7.2':
KERNELS=="1-1.7.2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}=="Pantech, Incorporated"
ATTRS{bNumInterfaces}==" 6"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="c0"
ATTRS{bMaxPower}=="500mA"
ATTRS{urbnum}=="496"
ATTRS{idVendor}=="106c"
ATTRS{idProduct}=="3718"
ATTRS{bcdDevice}=="0000"
ATTRS{bDeviceClass}=="02"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="12"
ATTRS{devpath}=="1.7.2"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Pantech, Incorporated"
ATTRS{product}=="PANTECH UML290"
looking at parent device '/devices/platform/atmel-ehci/usb1/1-1/1-1.7':
KERNELS=="1-1.7"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}=="100mA"
ATTRS{urbnum}=="188"
ATTRS{idVendor}=="1a40"
ATTRS{idProduct}=="0101"
ATTRS{bcdDevice}=="0111"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="01"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="3"
ATTRS{devpath}=="1.7"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="4"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{product}=="USB 2.0 Hub"
looking at parent device '/devices/platform/atmel-ehci/usb1/1-1':
KERNELS=="1-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}=="100mA"
ATTRS{urbnum}=="53"
ATTRS{idVendor}=="1a40"
ATTRS{idProduct}=="0201"
ATTRS{bcdDevice}=="0100"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="02"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="2"
ATTRS{devpath}=="1"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="7"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{product}=="USB 2.0 Hub [MTT]"
looking at parent device '/devices/platform/atmel-ehci/usb1':
KERNELS=="usb1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="26"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="3"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.39.4-acnbfx100 ehci_hcd"
ATTRS{product}=="Atmel EHCI UHP HS"
ATTRS{serial}=="atmel-ehci"
ATTRS{authorized_default}=="1"
looking at parent device '/devices/platform/atmel-ehci':
KERNELS=="atmel-ehci"
SUBSYSTEMS=="platform"
DRIVERS=="atmel-ehci"
ATTRS{companion}==""
looking at parent device '/devices/platform':
KERNELS=="platform"
SUBSYSTEMS==""
DRIVERS==""
Das Gerät, mit dem ich übereinstimmen möchte, ist /devices/platform/atmel-ehci/usb1/1-1/1-1.7/1-1.7.2'
. Sie können sehen, dass die TREIBER für dieses Gerät "USB" sind und nichts darunter dazu passt. Die folgende Regel löst mein Problem und sollte sogar eine generische Lösung sein, da ich ziemlich sicher bin, dass der USB-Treiber keinen Endpunkt eines Geräts handhaben würde.
DRIVERS=="usb", KERNEL=="*cdc-wdm*", ENV{id}="$id", RUN="/usr/local/bin/modem_setup.sh"
Und das ist das Ergebnis, nach dem ich die ganze Zeit gesucht habe:
# udevadm info --query=all --name=/dev/cdc-wdm0
P: /devices/platform/atmel-ehci/usb1/1-1/1-1.7/1-1.7.2/1-1.7.2:1.5/usb/cdc-wdm0
N: cdc-wdm0
E: DEVNAME=/dev/cdc-wdm0
E: DEVPATH=/devices/platform/atmel-ehci/usb1/1-1/1-1.7/1-1.7.2/1-1.7.2:1.5/usb/cdc-wdm0
E: MAJOR=180
E: MINOR=176
E: SUBSYSTEM=usb
E: USEC_INITIALIZED=12243969
E: id=1-1.7.2