Соглашение об именах папок в `/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