Распознать больше устройств на Linux с помощью этого репозитория USB ID

Есть тысячи УСТРОЙСТВ USB на рынке-клавиатуры, сканеры, принтеры, мыши, и бесчисленное множество других, которые все работают на Linux. Детали их поставщика хранятся в репозитории USB ID.

lsusb

Команда Linux перечисляет информацию об устройствах USB, подключенных к системе, но иногда информация является неполной. Например, недавно я заметил, что марка одного из моих USB-устройств не была признана. устройство было функциональным, но перечисление деталей моих подключенных USB-устройств не предоставило никакой идентификационной информации. Вот вывод из моей команды:lsusblsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 046d:082c Logitech, Inc.
Bus 001 Device 003: ID 0951:16d2 Kingston Technology
Bus 001 Device 002: ID 18f8:1486  
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Как вы можете видеть в последней колонке, есть одно устройство без описания производителей. Чтобы определить, что такое устройство, мне придется сделать более глубокий осмотр моего дерева USB устройства. К счастью, у команды больше вариантов. Один из них, чтобы получить за устройство детали, как человек страница объясняет:lsusb-D device

«Не сканируйте каталог /dev/bus/usb, вместо этого отображайте только информацию об устройстве, файл устройства которого дается. Файл устройства должен быть что-то вроде /dev/bus/usb/001/001. Эта опция отображает подробную информацию, такую как опция v; вы должны быть корень, чтобы сделать это «.

Я не думаю, что это было легко очевидно, как передать путь устройства к команде lsusb, но после тщательного прочтения страницы человека и первоначальный выход я был в состоянии определить, как построить его. USB-устройства находятся в файловой системе UDEV. Их путь устройства начинается в каталоге USB-устройств. Остальная часть пути состоит из идентификатора автобуса и идентификатора устройства устройства. Мое неописуемое устройство Автобус 001, Устройство 002, что переводится как 001/002, и завершает путь . Теперь я могу пройти этот путь . Я также трубы, поскольку часто довольно много информации там:/dev/bus/usb//dev/bus/usb/001/002lsusbmore

$ lsusb -D /dev/bus/usb/001/002 |more
Device: ID 18f8:1486  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x18f8
  idProduct          0x1486
  bcdDevice            1.00
  iManufacturer           0
  iProduct                1
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           59
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0
        HID Device Descriptor:

К сожалению, это не предоставило детали, которые я надеялся найти. Два поля, которые отображаются в исходном выходе, и , оба пусты. Существует некоторая помощь, как сканирование вниз немного показывает слово мышь. А-ХА! Итак, это устройство моя мышь.idVendoridProduct

Репозиторий USB ID

Это заставило меня задаться вопросом, как я мог заполнить эти поля, не только для себя, но и для других пользователей Linux. Оказывается, уже есть проект с открытым исходным кодом для этого: USB ID Репозиторий. Это общедоступный репозиторий всех известных документов, используемых в USB-устройствах. Он также используется в различных программах, в том числе USB Утилиты, для отображения человека читаемых имен устройств.

Вы можете просматривать репозиторий для конкретных устройств либо с веб-сайта, либо загрузив базу данных. Пользователи также могут отправлять новые данные. Это то, что я сделал для моей мыши, которая отсутствовала.

Обновление USB-памяти

База данных USB ID хранится в файле под названием . Это местоположение может варьироваться в зависимости от дистрибутива Linux.usb.ids

На Ubuntu 18.04, этот файл находится в . Для обновления базы данных используйте команду, которую необходимо выработать с корневыми привилегиями или с:/var/lib/usbutilsupdate-usbidssudo

sudo update-usbids

Если новый файл доступен, он будет загружен. Текущий файл будет резервное копирование и заменен на новый:

ls -la
total 1148
drwxr-xr-x  2 root root   4096 Jan 15 00:34 .
drwxr-xr-x 85 root root   4096 Nov  7 08:05 ..
-rw-r--r--  1 root root 614379 Jan  9 15:34 usb.ids
-rw-r--r--  1 root root 551472 Jan 15 00:34 usb.ids.old

Последние версии Fedora Linux хранят файл базы данных в . Кроме того, нет сценария обновления. Вместо этого база данных поддерживается в пакете под названием ./usr/share/hwdatahwdata

# dnf info hwdata

Installed Packages
Name         : hwdata
Version      : 0.332
Release      : 1.fc31
Architecture : noarch
Size         : 7.5 M
Source       : hwdata-0.332-1.fc31.src.rpm
Repository   : @System
From repo    : updates
Summary      : Hardware identification and configuration data
URL          : https://github.com/vcrhonek/hwdata
License      : GPLv2+
Description  : hwdata contains various hardware identification and configuration data,
             : such as the pci.ids and usb.ids databases.

Теперь мой список УСТРОЙСТВ USB показывает имя рядом с этим ранее неназванным устройством. Сравните это с выводом выше:

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 046d:082c Logitech, Inc. HD Webcam C615
Bus 001 Device 003: ID 0951:16d2 Kingston Technology
Bus 001 Device 014: ID 18f8:1486 [Maxxter]
Bus 001 Device 005: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Вы можете заметить, что другие описания устройств меняются по мере регулярного обновления репозитория новыми устройствами и подробной информацией о существующих устройствах.

Отправка новых данных

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