GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erkennen Sie mehr Geräte unter Linux mit diesem USB-ID-Repository

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.


Linux
  1. 4 Nützliche Möglichkeiten, den Namen des angeschlossenen USB-Geräts unter Linux zu ermitteln

  2. So verschlüsseln Sie eine Partition mit DM-Crypt LUKS unter Linux

  3. Lesen des USB-Eingangsstroms unter Linux

  4. Steuern einer USB-Stromversorgung (ein/aus) mit Linux

  5. Unser eingebettetes Linux-System erkennt ein USB-Gerät nicht, wenn es vor dem Einschalten angeschlossen ist. Anregungen?

Linux more Befehl mit Beispielen erklärt

Lsblk-Befehl in Linux (Blockgeräte auflisten)

So erstellen Sie Multiboot-USB-Laufwerke mit Ventoy unter Linux

So ermitteln Sie die Bandbreitennutzung von USB-Geräten unter Linux

Erstellen Sie ein bootfähiges USB-Laufwerk mit USBImager unter Linux

So erkennen und verwalten Sie Geräte unter Linux