Bir udev kuralında çeşitli üst cihazların özellikleri


11

Farklı üst aygıtlardan udev aygıt özniteliklerinin bir kuralda nasıl değerlendirildiğini anlamakta biraz sorun yaşıyorum. Aşağıdaki gibi bir öznitelik yürüyüş ile belirli bir seri usb cihazı (HUAWEI Modem) için bir kural yazmak istiyorum:

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

Bu cihazı tanımlamak için aşağıdaki udev kuralını kullanmaya çalıştım:

ACTION=="add", KERNEL=="ttyUSB[0-9]*", SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}=="00", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506", RUN+="/usr/bin/systemctl start modem_dialer"

ancak maalesef ATTRS{bInterfaceNumber}=="00"arayüz cihazından ve ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506"fiziksel cihazdan gelen özellikleri birlikte kullanamıyorum . Bunlardan herhangi birini kullanmak iyi çalışır, ancak bunları birlikte kullanırken kural artık çalışmaz.

Farklı ana cihazlardan gelen özelliklerin tek bir kuralda birlikte kullanılmasına ilişkin bir şey eksik mi? Farklı ebeveynlerin özelliklerini kullanmanın bir sorun olabilmesinin başka bir nedeni var mı?

Bu arada, dağıtım Arch Linux ARM.



Teşekkürler, bu her şeyi açıklıyor. Belirli bir USB aygıtından belirli bir arabirimi tanımlamak istersem bir çözüm var mı?
kassiopeia

2
Ne değiştirirseniz ATTRS{bInterfaceNumber}=="00"için ENV{ID_USB_INTERFACE_NUM}=="00"? Bu işe yaramalı. Değilse env için hepsini değiştirmeyi deneyin:ENV{ID_USB_INTERFACE_NUM}=="00", ENV{ID_VENDOR_ID}=="12d1", ENV{ID_MODEL_ID}== ...
don_crissti

Yanıtlar:


6

Birden çok ebeveynin özelliklerini kullanmak için birden çok kural ve GOTO kullanmanız gerekir. Böyle bir şey.

SUBSYSTEMS=="usb", ATTRS{bInterfaceNumber}!="00", GOTO="huawei_end"
ACTION=="add", KERNEL=="ttyUSB[0-9]*", SUBSYSTEMS=="usb", ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506", RUN+="/usr/bin/systemctl start modem_dialer"
LABEL="huawei_end"

1

Burada açıklandığı gibi iki kural kullanabilirsiniz (muhtemelen daha genel / kolayca harcanabilir hale getirmek için bu blog gönderisinde bulunan başka bir düzgün hile ile birlikte ):

ACTION=="add", SUBSYSTEM=="usb", ENV{USB_IDS}="%s{idVendor}:%s{idProduct}"
ACTION=="add", ENV{USB_IDS}=="12d1:1506", ATTRS{bInterfaceNumber}=="00", RUN+="/usr/bin/systemctl start modem_dialer"

Ancak, ilk kural benzersiz hakkı içeren düğüm eşleşmesi gerekir idVendorve idProductaksi takdirde ayarlar hiçbir garantisi yoktur USB_IDSdoğru değerlere ve ikinci kural maç yapabiliyor. USB yaprak düğümlerini genel olarak eşleştirebilecek herhangi bir özelliğin farkında değilim. : /

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.