GNU/Linux >> Linux Esercitazione >  >> Linux

Riconosci più dispositivi su Linux con questo repository di ID USB

Ci sono migliaia di dispositivi USB sul mercato:tastiere, scanner, stampanti, mouse e innumerevoli altri che funzionano tutti su Linux. I dettagli del fornitore sono archiviati nel repository di ID USB.

lsusb

Il lsusb di Linux comando elenca le informazioni sui dispositivi USB collegati a un sistema, ma a volte le informazioni sono incomplete. Ad esempio, di recente ho notato che il marchio di uno dei miei dispositivi USB non veniva riconosciuto. il dispositivo era funzionante, ma l'elenco dei dettagli dei miei dispositivi USB collegati non forniva informazioni di identificazione. Ecco l'output del mio lsusb comando:

$ 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

Come puoi vedere nell'ultima colonna, c'è un dispositivo senza descrizione del produttore. Per determinare qual è il dispositivo, dovrei fare un'ispezione più approfondita del mio albero di dispositivi USB. Fortunatamente, il lsusb comando ha più opzioni. Uno è -D device , per ottenere dettagli per dispositivo, come spiega la pagina man:

"Non scansionare la directory /dev/bus/usb, ma visualizzare solo le informazioni sul dispositivo a cui è stato fornito il file del dispositivo. Il file del dispositivo dovrebbe essere qualcosa come /dev/bus/usb/001/001. Questa opzione mostra informazioni dettagliate come il v opzione; devi essere root per farlo."

Non pensavo fosse facilmente evidente come passare il percorso del dispositivo al comando lsusb, ma dopo aver letto attentamente la pagina man e l'output iniziale sono stato in grado di determinare come costruirlo. I dispositivi USB risiedono nel filesystem UDEV. Il percorso del loro dispositivo inizia nella directory del dispositivo USB /dev/bus/usb/ . Il resto del percorso è costituito dall'ID bus e dall'ID dispositivo del dispositivo. Il mio dispositivo non descrittivo è Bus 001, Device 002, che si traduce in 001/002 e completa il percorso /dev/bus/usb/001/002 . Ora posso passare questo percorso a lsusb . Invierò anche a more poiché spesso ci sono molte informazioni lì:

$ 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:

Sfortunatamente, questo non ha fornito i dettagli che speravo di trovare. I due campi che appaiono nell'output iniziale, idVendor e idProduct , sono entrambi vuoti. C'è un po' di aiuto, dato che la scansione in basso rivela la parola Mouse . A-HA! Quindi, questo dispositivo è il mio mouse.

Il repository di ID USB

Questo mi ha fatto chiedere come potevo popolare questi campi, non solo per me stesso ma anche per altri utenti Linux. Si scopre che esiste già un progetto open source per questo:l'USB ID Repository. È un repository pubblico di tutti gli ID conosciuti utilizzati nei dispositivi USB. Viene anche utilizzato in vari programmi, tra cui USB Utilities, per visualizzare nomi di dispositivi leggibili dall'uomo.

È possibile sfogliare il repository per dispositivi particolari sia dal sito Web sia scaricando il database. Gli utenti sono inoltre invitati a inviare nuovi dati. Questo è quello che ho fatto per il mio mouse, che era assente.

Aggiorna i tuoi ID USB

Il database dell'ID USB è memorizzato in un file chiamato usb.ids . Questa posizione può variare a seconda della distribuzione Linux.

Su Ubuntu 18.04, questo file si trova in /var/lib/usbutils . Per aggiornare il database, utilizzare il comando update-usbids , che devi eseguire con i privilegi di root o con sudo :

$ sudo update-usbids

Se è disponibile un nuovo file, verrà scaricato. Verrà eseguito il backup del file corrente e sostituito da quello nuovo:

$ 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

Le versioni recenti di Fedora Linux memorizzano il file del database in /usr/share/hwdata . Inoltre, non esiste uno script di aggiornamento. Invece, il database è mantenuto in un pacchetto chiamato hwdata .

# 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.

Ora il mio elenco di dispositivi USB mostra un nome accanto a questo dispositivo precedentemente senza nome. Confronta questo con l'output sopra:

$ 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

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Potresti notare che le altre descrizioni dei dispositivi cambiano poiché il repository viene aggiornato regolarmente con nuovi dispositivi e dettagli su quelli esistenti.

Invia nuovi dati

Esistono due modi per inviare nuovi dati:utilizzando l'interfaccia Web o inviando un file di patch formattato in modo speciale. Prima di iniziare, ho letto le linee guida per la presentazione. In primo luogo, ho dovuto registrare un account, quindi ho dovuto utilizzare il sistema di invio del progetto per fornire l'ID e il nome del mio mouse. La procedura è la stessa per l'aggiunta di qualsiasi dispositivo USB.

Hai usato il repository ID USB? In tal caso, condividi la tua reazione nei commenti.


Linux
  1. 4 Modo utile per conoscere il nome del dispositivo USB collegato in Linux

  2. Come crittografare una partizione con DM-Crypt LUKS su Linux

  3. Linux:come riconnettere un dispositivo USB disconnesso logicamente?

  4. Lettura del flusso di input USB su Linux

  5. Controllo di un alimentatore USB (on/off) con Linux

Linux more Comando spiegato con esempi

Comando Lsblk in Linux (Elenca dispositivi a blocchi)

Come creare unità USB multiboot con Ventoy in Linux

Come trovare l'utilizzo della larghezza di banda del dispositivo USB su Linux

Crea un'unità USB avviabile con USBImager in Linux

Come rilevare e gestire i dispositivi su Linux