Reconnaissez plus de périphériques sous Linux avec ce référentiel d'identifiants USB
Un projet open source contient un référentiel public de tous les identifiants connus utilisés dans les périphériques USB.
Il existe des milliers de périphériques USB sur le marché : claviers, scanners, imprimantes, souris et bien d'autres encore, qui fonctionnent tous sous Linux. Les coordonnées de leur fournisseur sont stockées dans le référentiel d'identifiants USB.
lsusb
La commande Linux lsusb
répertorie les informations sur les périphériques USB connectés à un système, mais parfois les informations sont incomplètes. Par exemple, j’ai récemment remarqué que la marque d’un de mes périphériques USB n’était pas reconnue. l'appareil était fonctionnel, mais la liste des détails de mes périphériques USB connectés ne fournissait aucune information d'identification. Voici le résultat de ma commande lsusb
:
$ 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
Comme vous pouvez le voir dans la dernière colonne, il existe un appareil sans description du fabricant. Pour déterminer de quel périphérique il s'agit, je devrais procéder à une inspection plus approfondie de l'arborescence de mes périphériques USB. Heureusement, la commande lsusb
a plus d'options. L'un d'entre eux est -D périphérique
, pour obtenir des détails par périphérique, comme l'explique la page de manuel :
"N'analysez pas le répertoire /dev/bus/usb, mais affichez uniquement les informations sur l'appareil dont le fichier de périphérique est fourni. Le fichier de l'appareil doit ressembler à /dev/bus/usb/001/001. Cette option affiche des informations détaillées telles que l'option v ; vous devez être root pour faire cela."
Je ne pensais pas qu'il était facile de savoir comment transmettre le chemin du périphérique à la commande lsusb, mais après avoir lu attentivement la page de manuel et la sortie initiale, j'ai pu déterminer comment le construire. Les périphériques USB résident dans le système de fichiers UDEV. Le chemin de leur périphérique commence dans le répertoire du périphérique USB /dev/bus/usb/
. Le reste du chemin est constitué de l'ID de bus et de l'ID de périphérique de l'appareil. Mon périphérique non descriptif est le bus 001, périphérique 002, qui se traduit par 001/002 et complète le chemin /dev/bus/usb/001/002
. Maintenant, je peux transmettre ce chemin à lsusb
. Je vais également rediriger vers plus
car il y a souvent beaucoup d'informations ici :
$ 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:
Malheureusement, cela n’a pas fourni les détails que j’espérais trouver. Les deux champs qui apparaissent dans la sortie initiale, idVendor
et idProduct
, sont tous deux vides. Il y a une certaine aide, car une analyse un peu plus bas révèle le mot Souris. A-HA ! Donc, cet appareil est ma souris.
Le référentiel d'identifiants USB
Cela m'a amené à me demander comment remplir ces champs, non seulement pour moi-même mais aussi pour les autres utilisateurs de Linux. Il s’avère qu’il existe déjà un projet open source pour cela : l’USB ID Repository. Il s'agit d'un référentiel public de tous les identifiants connus utilisés dans les périphériques USB. Il est également utilisé dans divers programmes, notamment les utilitaires USB, pour afficher les noms de périphériques lisibles par l'homme.
(Alan Formy-Duval, CC BY-SA 4.0)
Vous pouvez parcourir le référentiel pour des appareils particuliers soit à partir du site Web, soit en téléchargeant la base de données. Les utilisateurs sont également invités à soumettre de nouvelles données. C'est ce que j'ai fait pour ma souris, qui était absente.
Mettez à jour vos identifiants USB
La base de données des identifiants USB est stockée dans un fichier appelé usb.ids
. Cet emplacement peut varier en fonction de la distribution Linux.
Sur Ubuntu 18.04, ce fichier se trouve dans /var/lib/usbutils
. Pour mettre à jour la base de données, utilisez la commande update-usbids
, que vous devez exécuter avec les privilèges root ou avec sudo
:
$ sudo update-usbids
Si un nouveau fichier est disponible, il sera téléchargé. Le fichier actuel sera sauvegardé et remplacé par le nouveau :
$ 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
Les versions récentes de Fedora Linux stockent le fichier de base de données dans /usr/share/hwdata
. De plus, il n'y a pas de script de mise à jour. Au lieu de cela, la base de données est conservée dans un package nommé 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.
Maintenant, ma liste de périphériques USB affiche un nom à côté de ce périphérique auparavant sans nom. Comparez cela au résultat ci-dessus :
$ 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
Vous remarquerez peut-être que les descriptions d'autres appareils changent à mesure que le référentiel est régulièrement mis à jour avec de nouveaux appareils et des détails sur ceux existants.
Soumettre de nouvelles données
Il existe deux manières de soumettre de nouvelles données : en utilisant l'interface Web ou en envoyant par courrier électronique un fichier de correctif spécialement formaté. Avant de commencer, j'ai lu les directives de soumission. Tout d'abord, j'ai dû créer un compte, puis j'ai dû utiliser le système de soumission du projet pour fournir l'identifiant et le nom de ma souris. Le processus est le même pour ajouter n’importe quel périphérique USB.
Avez-vous utilisé le référentiel d'identifiants USB ? Si tel est le cas, partagez votre réaction dans les commentaires.