Соглашение об именах папок в `/sys/bus/usb/devices/`

Я пытаюсь понять связь между именами папок Linux и выводомlsusb -t.

На моей машине это показывает:

в/sys/bus/usb/devices/, есть:

Каковы правила именования этих папок?

Единственный10я могу найти вlsusbдля номера порта.

Единственный1,2,3,4я могу найти этоIf, то есть Интерфейс.

Я думаю, имя папки должно быть примерно таким:

      <bus>-<port>: <???>.<Interface>

Что такое???часть? Кажется, это всегда1. А почему в названии папки нет номера устройства?

Информация об ОС:

      Distributor ID: Ubuntu
Description:    Ubuntu 20.04.3 LTS
Release:        20.04
Codename:       focal

Ядро Linux:

      Linux 5.13.0-27-generic

1 ответ

По подсказкам вDocumentation/ABI/stable/sysfs-bus-usb, общий формат:

      <bus>-<port[.port[.port]]>:<config>.<interface>
  • Каждый<busnum>соответствует корневому концентратору.

  • За ним следует ряд номеров портов концентратора, разделенных точками. Даже если у вас нет внешних хабов, часто есть внутренние хабы. Использоватьlsusb.pyинструмент для более детального просмотра топологии (скрипт взят из того же «usbutils», что и сам lsusb).

  • Число, следующее за:показывает активную конфигурацию этого устройства. Некоторые устройства можно переключать между несколькими конфигурациями (одновременно активна только одна), каждая из которых предоставляет разные интерфейсы - например, модемы 4G/LTE могут быть установлены в «режим AT», «режим MBIM» или «режим QMI». (В Windows это осуществляется драйвером, в Linux это можно сделать вручную через /sys.)

  • Наконец, число, следующее за.показывает номер интерфейса. Устройство USB может обеспечивать несколько интерфейсов, например, модем 4G будет иметь последовательный порт + интерфейс виртуального Ethernet, а YubiKey NEO будет иметь HID-устройство для U2F + поддельную клавиатуру для устаревшего Yubikey OTP. Бегатьlsusb.py -iчтобы увидеть их имена.

Пример рабочего стола, где по какой-то причине вы можете увидеть клавиатуру с двумя HID-интерфейсами (это более характерно для модных «игровых» клавиатур):

      # lsusb.py -I
usb1              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1a.0) hub
  1-0:1.0           (IF) 09:00:00 1EP  (Hub::Full speed (or root) hub) hub
  1-1               8087:0024 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. Integrated Rate Matching Hub) hub
    1-1.1             1ea7:0064 00 1IF  [USB 1.10,    12 Mbps, 100mA] (Wireless rechargeable vertical mouse)
      1-1.1:1.0         (IF) 03:01:02 1EP  (Mouse) usbhid hidraw1 (hid-generic) input7 input6 (hid-generic)
    1-1.3             0951:1643 00 1IF  [USB 2.00,   480 Mbps, 100mA] (Kingston DataTraveler G3)
      1-1.3:1.0         (IF) 08:06:50 2EPs (Bulk-Only) usb-storage host6 (sdd)
    1-1.6             413c:2113 00 2IFs [USB 1.10,   1.5 Mbps, 100mA] (Dell Computer Corp. KB216 Wired Keyboard)
      1-1.6:1.0         (IF) 03:01:01 1EP  (Keyboard) usbhid hidraw2 (hid-generic) input8 (hid-generic)
      1-1.6:1.1         (IF) 03:00:00 1EP  (None) usbhid hidraw3 (hid-generic) input9 input10 (hid-generic)
usb2              1d6b:0002 09 1IF  [USB 2.00,   480 Mbps,   0mA] (ehci_hcd 0000:00:1d.0) hub
  2-0:1.0           (IF) 09:00:00 1EP  (Hub::Full speed (or root) hub) hub
  2-1               8087:0024 09 1IF  [USB 2.00,   480 Mbps,   0mA] (Intel Corp. Integrated Rate Matching Hub) hub

Пример внутреннего 4G-модема ноутбука, сначала в конфигурации запуска по умолчанию 2 (эмуляция Ethernet), затем того же устройства после переключения на конфигурацию 3 (MBIM):

      # cat /sys/bus/usb/devices/1-3/configuration
2

# lsusb.py
usb1
 1-3        03f0:a31d 00 7IFs [USB 2.00,  480 Mbps,   2mA] (HP Inc. HP lt4132 LTE/HSPA+ 4G Module)
  1-3:2.0    (IF) 02:06:00 1EP  (Communications) cdc_ether net/usb0
  1-3:2.1    (IF) 0a:06:00 2EPs (CDC Data) cdc_ether
  1-3:2.2    (IF) ff:06:10 3EPs (Vendor Specific) option ttyUSB0
  1-3:2.3    (IF) ff:06:13 2EPs (Vendor Specific) option ttyUSB1
  1-3:2.4    (IF) ff:06:12 2EPs (Vendor Specific) option ttyUSB2
  1-3:2.5    (IF) ff:06:14 2EPs (Vendor Specific) option ttyUSB3
  1-3:2.6    (IF) ff:06:1b 2EPs (Vendor Specific) option ttyUSB4

# echo 3 > /sys/bus/usb/devices/1-3/configuration

# lsusb.py
usb1
 1-3        03f0:a31d 00 3IFs [USB 2.00,  480 Mbps,   2mA] (HP Inc. HP lt4132 LTE/HSPA+ 4G Module)
  1-3:3.0    (IF) 02:0e:00 1EP  (Communications) cdc_mbim net/wwan0
  1-3:3.1    (IF) 0a:00:02 2EPs (CDC Data) cdc_mbim
  1-3:3.2    (IF) ff:06:14 2EPs (Vendor Specific) option ttyUSB0
Другие вопросы по тегам