Es gibt Tausende von USB-Geräten auf dem Markt – Tastaturen, Scanner, Drucker, Mäuse und unzählige andere, die alle unter Linux funktionieren. Ihre Lieferantendetails werden im USB ID Repository gespeichert.
lsusb
Das Linux lsusb
listet Informationen über die an ein System angeschlossenen USB-Geräte auf, aber manchmal sind die Informationen unvollständig. Ich habe zum Beispiel kürzlich festgestellt, dass die Marke eines meiner USB-Geräte nicht erkannt wurde. Das Gerät war funktionsfähig, aber die Auflistung der Details meiner angeschlossenen USB-Geräte lieferte keine Identifikationsinformationen. Hier ist die Ausgabe von meinem lsusb
Befehl:
$ 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
Wie Sie in der letzten Spalte sehen können, gibt es ein Gerät ohne Herstellerbeschreibung. Um festzustellen, um welches Gerät es sich handelt, müsste ich meinen USB-Gerätebaum genauer untersuchen. Glücklicherweise ist die lsusb
Befehl hat mehr Optionen. Eines ist -D device
, um Details pro Gerät zu ermitteln, wie die Manpage erklärt:
"Das Verzeichnis /dev/bus/usb nicht scannen, sondern nur Informationen über das Gerät anzeigen, dessen Gerätedatei angegeben ist. Die Gerätedatei sollte so etwas wie /dev/bus/usb/001/001 sein. Diese Option zeigt detaillierte Informationen wie das v Möglichkeit; dazu müssen Sie root sein."
Ich dachte, es sei nicht leicht ersichtlich, wie der Gerätepfad an den lsusb-Befehl übergeben wird, aber nachdem ich die Manpage und die anfängliche Ausgabe sorgfältig gelesen hatte, konnte ich feststellen, wie man ihn erstellt. USB-Geräte befinden sich im UDEV-Dateisystem. Ihr Gerätepfad beginnt im USB-Geräteverzeichnis /dev/bus/usb/
. Der Rest des Pfades besteht aus der Bus-ID und der Geräte-ID des Geräts. Mein unscheinbares Gerät ist Bus 001, Gerät 002, was 001/002 bedeutet und den Pfad /dev/bus/usb/001/002
vervollständigt . Jetzt kann ich diesen Pfad an lsusb
übergeben . Ich werde auch zu more
leiten da dort oft ziemlich viele Informationen stehen:
$ 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:
Leider lieferte dies nicht die Details, die ich mir erhofft hatte. Die beiden Felder, die in der anfänglichen Ausgabe erscheinen, idVendor
und idProduct
, sind beide leer. Es gibt etwas Hilfe, da ein wenig nach unten geblättert wird, um das Wort Maus zu enthüllen . AHA! Dieses Gerät ist also meine Maus.
Das USB-ID-Repository
Daher habe ich mich gefragt, wie ich diese Felder nicht nur für mich selbst, sondern auch für andere Linux-Benutzer ausfüllen könnte. Es stellt sich heraus, dass es dafür bereits ein Open-Source-Projekt gibt:das USB ID Repository. Es ist ein öffentliches Repository aller bekannten IDs, die in USB-Geräten verwendet werden. Es wird auch in verschiedenen Programmen verwendet, einschließlich der USB-Dienstprogramme, um menschenlesbare Gerätenamen anzuzeigen.
Sie können das Repository entweder über die Website oder durch Herunterladen der Datenbank nach bestimmten Geräten durchsuchen. Benutzer können auch gerne neue Daten übermitteln. Das habe ich für meine Maus gemacht, die fehlte.
Aktualisieren Sie Ihre USB-IDs
Die USB-ID-Datenbank wird in einer Datei namens usb.ids
gespeichert . Dieser Speicherort kann je nach Linux-Distribution variieren.
Unter Ubuntu 18.04 befindet sich diese Datei in /var/lib/usbutils
. Um die Datenbank zu aktualisieren, verwenden Sie den Befehl update-usbids
, die Sie mit Root-Rechten oder mit sudo
ausführen müssen :
$ sudo update-usbids
Wenn eine neue Datei verfügbar ist, wird sie heruntergeladen. Die aktuelle Datei wird gesichert und durch die neue ersetzt:
$ 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
Neuere Versionen von Fedora Linux speichern die Datenbankdatei in /usr/share/hwdata
. Außerdem gibt es kein Update-Skript. Stattdessen wird die Datenbank in einem Paket namens hwdata
verwaltet .
# 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.
Jetzt zeigt meine USB-Geräteliste einen Namen neben diesem zuvor unbenannten Gerät. Vergleichen Sie dies mit der obigen Ausgabe:
$ 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
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Möglicherweise stellen Sie fest, dass sich andere Gerätebeschreibungen ändern, da das Repository regelmäßig mit neuen Geräten und Details zu vorhandenen aktualisiert wird.
Neue Daten übermitteln
Es gibt zwei Möglichkeiten, neue Daten zu übermitteln:über die Webschnittstelle oder per E-Mail mit einer speziell formatierten Patch-Datei. Bevor ich anfing, las ich die Einreichungsrichtlinien durch. Zuerst musste ich ein Konto registrieren, und dann musste ich das Einreichungssystem des Projekts verwenden, um die ID und den Namen meiner Maus anzugeben. Der Prozess ist derselbe für das Hinzufügen eines beliebigen USB-Geräts.
Haben Sie das USB-ID-Repository verwendet? Wenn ja, teilen Sie Ihre Reaktion bitte in den Kommentaren mit.