Команда lsusb

Команда lsusb позволяет задействовать одноименную утилиту, предназначенную для вывода информации о USB-шинах и подключенных к ним устройствах. Каждое из устройств имеет пару 16-битных идентификаторов: идентификатор производителя (Vendor ID) и идентификатор устройства (Device ID), которые следует использовать для идентификации устройств и поиска драйверов в случае их отсутствия в ядре ОС, а также несколько дополнительных идентификаторов, устанавливаемых производителем. В составе дистрибутивов Linux имеется файл базы данных устройств, содержащий названия устройств с известными идентификаторами. Данная команда крайне полезна для идентификации и диагностики устройств компьютера. Она выводит результаты в формате списка, который может фильтроваться с помощью утилиты grep.

Базовый синтаксис команды выглядит следующим образом:

$ lsusb [параметры]

Утилита может вызываться как без параметров, так и с ними. Наиболее полезными параметрами являются параметр -t, предназначенный для вывода информации в древовидном формате, параметр -v для вывода подробной информации об устройствах, а также параметры -s и -d для вывода информации об устройствах на заданных шинах и с заданными идентификаторами соответственно.

Примеры использования

Вывод списка USB-устройств

Для вывода списка USB-устройств достаточно использовать утилиту без каких-либо параметров. Прав суперпользователя для выполнения команды не требуется.

$ lsusb
Bus 002 Device 005: ID 12d1:1436 Huawei Technologies Co., Ltd. Broadband stick
Bus 002 Device 003: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
Bus 002 Device 002: ID 214b:7250 USB2.0 HUB
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 0000:3821 SiliconWin mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 04f3:0103 Elan Microelectronics Corp. ActiveJet K-2024 Multimedia Keyboard
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Вывод имеет строго регламентированную структуру. По сути, параметры устройств разделены пробелами. Возьмем последнюю строку в качестве примера:

  • Номер шины: Bus 003
  • Номер устройства на шине: Device 001
  • Идентификаторы производителя и устройства: 1d6b:0001
  • Название устройства: Linux Foundation 1.1 root hub

Несложно убедиться, что все строки имеют схожий формат. При этом в списке отражена информация как об обычных USB-устройствах (таких, как клавиатуры и мыши), так и о специализированных устройствах (таких, как хабы).

Вывод подробной информации о USB-устройствах

Для того, чтобы вывести подробную информацию о USB-устройствах, следует использовать комбинацию параметр -v:

$ lsusb -v

Bus 002 Device 003: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
Couldn't open device, some information will be missing
Device Descriptor:
 bLength 18
 bDescriptorType 1
 bcdUSB 2.01
 bDeviceClass 0
 bDeviceSubClass 0
 bDeviceProtocol 0
 bMaxPacketSize0 64
 idVendor 0x148f Ralink Technology, Corp.
 idProduct 0x7601 MT7601U Wireless Adapter
 bcdDevice 0.00
 iManufacturer 1
 iProduct 2
 iSerial 3
 bNumConfigurations 1
 Configuration Descriptor:
  bLength 9
  bDescriptorType 2
  wTotalLength 0x004a
  bNumInterfaces 1
  bConfigurationValue 1
  iConfiguration 0
  bmAttributes 0x80
    (Bus Powered)
  MaxPower 160mA
  Interface Descriptor:
    bLength 9
    bDescriptorType 4
    bInterfaceNumber 0
    bAlternateSetting 0
    bNumEndpoints 8
    bInterfaceClass 255 Vendor Specific Class
    bInterfaceSubClass 255 Vendor Specific Subclass
    bInterfaceProtocol 255 Vendor Specific Protocol
    iInterface 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x84 EP 4 IN
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x85 EP 5 IN
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x08 EP 8 OUT
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x04 EP 4 OUT
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x05 EP 5 OUT
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x06 EP 6 OUT
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x07 EP 7 OUT
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0
  Endpoint Descriptor:
    bLength 7
    bDescriptorType 5
    bEndpointAddress 0x09 EP 9 OUT
    bmAttributes 2
      Transfer Type Bulk
      Synch Type None
      Usage Type Data
    wMaxPacketSize 0x0200 1x 512 bytes
    bInterval 0

Данный вывод является крайне обширным и содержит огромное количество параметров конфигурации USB-устройств. Он может использоваться для диагностики и идентификации устройств, причем в случае исполнения команды от лица суперпользователя, информации будет еще больше (обратите внимание на предупреждение в начале вывода).

Вывод информации о заданных USB-шинах и устройствах

Для того, чтобы вывести информацию о заданной USB-шине и устройствах на ней достаточно использовать параметр -s и передать утилите идентификатор интересующей шины:

$ lsusb -s 003:
Bus 003 Device 002: ID 04f3:0103 Elan Microelectronics Corp. ActiveJet K-2024 Multimedia Keyboard
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Или шины и устройства:

$ lsusb -s 003:002
Bus 003 Device 002: ID 04f3:0103 Elan Microelectronics Corp. ActiveJet K-2024 Multimedia Keyboard

При использовании лишь идентификатора шины следует использовать двоеточие в конце идентификатора.

Что касается информации об устройствах, то совместно с параметром -d может использоваться как идентификатор производителя:

$ lsusb -d 04f3:
Bus 003 Device 002: ID 04f3:0103 Elan Microelectronics Corp. ActiveJet K-2024 Multimedia Keyboard

Так и идентификатор устройства:

$ lsusb -d :0103
Bus 003 Device 002: ID 04f3:0103 Elan Microelectronics Corp. ActiveJet K-2024 Multimedia Keyboard

Не стоит забывать о двоеточии, которое указывает на используемый идентификатор: идентификатор производителя должен иметь двоеточие в конце, идентификатор устройства — в начале.