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.