デバイスインタフェース属性に一致するudevルールを作成する方法

デバイスインタフェース属性に一致するudevルールを作成する方法

私はusbtmcインターフェースを備えたUSBTMCデバイスを持っています。インターフェイスには、それぞれ「fe」、「3」、および「1」の値を持つbInterfaceClass、bInterfaceSubClass、およびbInterfaceProtocolプロパティがあります。問題は、属性に一致するudevルールを作成する方法です。相互作用機器。一致はデバイスレベルで有効になっているように見え、デバイスの親エントリのみが「上」と見なされますが、デバイスインターフェイスの「下」(sysfsツリーの下)は表示されません。

VID/PID 一致に基づいて作業ルールを作成できます。

SUBSYSTEM=="usb", ATTR{idProduct}=="5c18", ATTR{idVendor}=="2a8d", MODE:="0660", GROUP="plugdev"

ただし、次の規則は機能しません。

SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="fe", ATTR{bInterfaceSubClass}=="03", MODE:="0660", GROUP="plugdev"

以下に、デバイスのリストと1-1:1.0の下のインターフェイスのプロパティを示します。

me@box:/sys/bus/usb/devices/1-1$ ls
1-1:1.0            bcdDevice            bDeviceProtocol  bMaxPacketSize0     bNumInterfaces  descriptors  devpath  idProduct    manufacturer  power    removable  serial     tx_lanes  version
authorized         bConfigurationValue  bDeviceSubClass  bMaxPower           busnum          dev          driver   idVendor     maxchild      product  remove     speed      uevent
avoid_reset_quirk  bDeviceClass         bmAttributes     bNumConfigurations  configuration   devnum       ep_00    ltm_capable  port          quirks   rx_lanes   subsystem  urbnum
me@box:/sys/bus/usb/devices/1-1$ cat 1-1\:1.0/bInterfaceClass 
fe
me@box:/sys/bus/usb/devices/1-1$ cat 1-1\:1.0/bInterfaceSubClass 
03
me@box:/sys/bus/usb/devices/1-1$ cat 1-1\:1.0/bInterfaceProtocol 
01
me@box:/sys/bus/usb/devices/1-1$

コマンド: udevadm info -a -n

使用可能なデバイス ATTR と親 ATTRS をリストします。これらのどれも(サブ)インターフェイス属性を含みません。

どんな助けでも大変感謝します。

ベストアンサー1

答えはENVとID_USB_INTERFACESを使用しているようです。たとえば、次のようになります。

SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}==":fe0301:", ...

私はlibudev APIを使ってこれを見つけ、私のデバイスのプロパティ名/値を列挙し(部分的に)次のように見えました。

ID_BUS : usb
ID_MODEL_ID : 5c18
ID_REVISION : 0100
...
ID_USB_INTERFACES : :fe0301:

また、udevルールでENVで使用できるデバイス属性をダンプします。

udevadm info --query all <device node>

または

udevadm monitor --udev --subsystem-match=usb --property

その後、(USB)デバイスを接続すると、プロパティのリストが表示されます。

おすすめ記事