J'ai du mal à comprendre comment les attributs de périphérique udev de différents périphériques parents sont évalués dans une règle. Je veux écrire une règle pour un périphérique USB série spécifique (modem HUAWEI), avec une promenade d'attribut comme suit:
$ udevadm info --attribute-walk --name=/dev/ttyUSB0
looking at device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/ttyUSB0/tty/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="tty"
DRIVER==""
looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0/ttyUSB0':
KERNELS=="ttyUSB0"
SUBSYSTEMS=="usb-serial"
DRIVERS=="generic"
ATTRS{port_number}=="0"
looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.3/1-1.3:1.0':
KERNELS=="1-1.3:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="usbserial_generic"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="02"
ATTRS{bInterfaceProtocol}=="01"
ATTRS{bNumEndpoints}=="03"
ATTRS{supports_autosuspend}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"
looking at parent device '/devices/platform/bcm2708_usb/usb1/1-1/1-1.3':
KERNELS=="1-1.3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{devpath}=="1.3"
ATTRS{idVendor}=="12d1"
ATTRS{speed}=="480"
ATTRS{bNumInterfaces}==" 4"
ATTRS{bConfigurationValue}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{busnum}=="1"
ATTRS{devnum}=="5"
ATTRS{configuration}==""
ATTRS{bMaxPower}=="500mA"
ATTRS{authorized}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bNumConfigurations}=="1"
ATTRS{maxchild}=="0"
ATTRS{bcdDevice}=="0001"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{quirks}=="0x0"
ATTRS{version}==" 2.00"
ATTRS{urbnum}=="4561"
ATTRS{ltm_capable}=="no"
ATTRS{manufacturer}=="HUAWEI"
ATTRS{removable}=="removable"
ATTRS{idProduct}=="1506"
ATTRS{bDeviceClass}=="00"
ATTRS{product}=="HUAWEI MOBILE"
Afin d'identifier cet appareil, j'ai essayé d'utiliser la règle udev suivante:
ACTION=="add", KERNEL=="ttyUSB[0-9]*", SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="00", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506", RUN+="/usr/bin/systemctl start modem_dialer"
mais malheureusement, je ne peux pas utiliser l'attribut ATTRS{bInterfaceNumber}=="00"
du périphérique d'interface et les attributs ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506"
du périphérique physique ensemble. L'utilisation de l'un d'eux fonctionne bien, mais lorsque vous les utilisez ensemble, la règle ne fonctionne plus.
Suis-je en train de manquer quoi que ce soit concernant l'utilisation des attributs de différents périphériques parents ensemble dans une seule règle? Y a-t-il une autre raison pour laquelle l'utilisation des attributs de différents parents pourrait être un problème?
À propos, la distribution est Arch Linux ARM.
ATTRS{bInterfaceNumber}=="00"
pour ENV{ID_USB_INTERFACE_NUM}=="00"
? Cela devrait fonctionner. Sinon, essayez de les changer tous en env:ENV{ID_USB_INTERFACE_NUM}=="00", ENV{ID_VENDOR_ID}=="12d1", ENV{ID_MODEL_ID}== ...