GNU/Linux >> Tutoriels Linux >  >> Linux

Reconnaître plus d'appareils sous Linux avec ce référentiel d'ID USB

Il existe des milliers de périphériques USB sur le marché :claviers, scanners, imprimantes, souris et d'innombrables autres qui fonctionnent tous sous Linux. Les détails de leurs fournisseurs sont stockés dans le référentiel d'ID USB.

lsusb

Le Linux lsusb La commande 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 appareils USB connectés ne fournissait aucune information d'identification. Voici la sortie de mon lsusb commande :

$ 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 y a un appareil sans description du fabricant. Pour déterminer quel est le périphérique, je devrais faire une inspection plus approfondie de mon arborescence de périphériques USB. Heureusement, le lsusb La commande a plus d'options. L'un est l'appareil -D device , pour obtenir des détails par appareil, 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 d'appareil est donné. Le fichier d'appareil doit ressembler à /dev/bus/usb/001/001. Cette option affiche des informations détaillées telles que le v option; 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. Leur chemin de périphérique commence dans le répertoire de périphérique USB /dev/bus/usb/ . Le reste du chemin est composé 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 passer ce chemin à lsusb . Je dirigerai également vers more car il y a souvent pas mal d'informations dedans :

$ 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 les deux vides. Il y a de l'aide, car un balayage vers le bas révèle le mot Souris . A-HA ! Donc, cet appareil est ma souris.

Le référentiel d'ID USB

Cela m'a amené à me demander comment je pouvais remplir ces champs, non seulement pour moi, mais aussi pour d'autres utilisateurs de Linux. Il s'avère qu'il existe déjà un projet open source pour cela :le référentiel d'ID USB. 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, y compris les utilitaires USB, pour afficher des noms de périphériques lisibles par l'homme.

Vous pouvez parcourir le référentiel pour des appareils particuliers à partir du site Web ou 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.

Mettre à jour vos identifiants USB

La base de données d'ID 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 maintenue 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 précédemment sans nom. Comparez cela à la sortie 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

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Vous remarquerez peut-être que d'autres descriptions d'appareils changent car 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 e-mail 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'ID USB ? Si oui, partagez votre réaction dans les commentaires.


Linux
  1. 4 façons utiles de connaître le nom du périphérique USB branché sous Linux

  2. Comment chiffrer une partition avec DM-Crypt LUKS sous Linux

  3. Lecture du flux d'entrée USB sur Linux

  4. Contrôler une alimentation USB (on/off) avec Linux

  5. Notre système Linux intégré ne reconnaîtra pas un périphérique USB s'il est branché avant la mise sous tension. Suggestions?

Commande Linux plus expliquée avec des exemples

Commande Lsblk sous Linux (liste des périphériques de bloc)

Comment créer des lecteurs USB multiboot avec Ventoy sous Linux

Comment trouver l'utilisation de la bande passante d'un périphérique USB sous Linux

Créer une clé USB amorçable avec USBImager sous Linux

Comment détecter et gérer les appareils sous Linux