私は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)デバイスを接続すると、プロパティのリストが表示されます。