Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Si tu veux lister les ports USB sous Linux, la commande la plus simple et la plus efficace est lsusb. Tu l’ouvres dans un terminal, tu tapes lsusb, tu appuies sur Entrée, et en quelques secondes tu as la liste complète de tous les périphériques USB connectés à ta machine. C’est vraiment aussi simple que ça. Pas besoin d’être un expert en ligne de commande, c’est à la portée de tout le monde.
Personnellement, c’est la première commande que je tape quand je branche un nouveau périphérique USB et que je veux vérifier que Linux l’a bien reconnu. Ça m’a sauvé la mise pas mal de fois. Dans cet article, je te montre comment utiliser lsusb et d’autres commandes utiles pour explorer tes ports USB comme un pro.
| Commande | Utilité principale | Niveau requis |
|---|---|---|
lsusb | Lister tous les périphériques USB connectés | Débutant |
lsusb -v | Afficher les détails complets de chaque périphérique | Intermédiaire |
lsusb -t | Afficher l’arborescence des bus USB | Intermédiaire |
dmesg | grep usb | Voir les événements USB dans les logs système | Intermédiaire |
ls /dev/ttyUSB* | Lister les ports série USB | Débutant |
usb-devices | Détails étendus sur chaque périphérique USB | Avancé |
lsusb est une commande qui interroge le sous-système USB du noyau Linux pour te retourner la liste de tous les périphériques actuellement branchés sur ta machine. Elle fait partie du paquet usbutils, qui est préinstallé sur la grande majorité des distributions Linux modernes, qu’il s’agisse d’Ubuntu, Debian, Fedora, Arch ou autre.
Pour l’utiliser, rien de bien compliqué. Tu ouvres un terminal et tu tapes :
lsusb
Le résultat ressemble à quelque chose comme ça :
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0951:1666 Kingston Technology DataTraveler 100 G3
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Chaque ligne représente un périphérique USB détecté. C’est rapide, c’est lisible, c’est efficace. Ce truc est magique pour un diagnostic rapide.
Si lsusb n’est pas installé sur ta machine, pas d’inquiétude, une simple commande suffit à l’installer :
sudo apt install usbutilssudo dnf install usbutilssudo pacman -S usbutils
Le format de sortie de lsusb est toujours le même. Prenons une ligne type et décortiquons-la ensemble :
Bus 001 Device 003: ID 0951:1666 Kingston Technology DataTraveler 100 G3
Bus 001 : c’est le numéro du bus USB physique sur ta carte mère. Les machines modernes en ont généralement plusieurs. Device 003 : c’est le numéro attribué dynamiquement au périphérique au moment où il a été branché. Ce numéro peut changer à chaque branchement. ID 0951:1666 : c’est l’identifiant du périphérique au format vendeur:produit. Le 0951 identifie Kingston Technology et le 1666 identifie le modèle exact de la clé USB. Kingston Technology DataTraveler 100 G3 : c’est le nom lisible du périphérique, directement récupéré depuis sa mémoire interne.
Ce qui est pratique avec les identifiants vendeur/produit, c’est qu’ils sont universels. Si tu copies l’ID d’un périphérique et que tu le colles dans une recherche en ligne, tu tombes instantanément sur la fiche technique du matériel, les drivers disponibles, les problèmes connus. Personnellement, j’utilise ça régulièrement pour identifier un périphérique inconnu récupéré dans un tiroir.
Les lignes qui affichent Linux Foundation root hub correspondent aux hubs USB internes de ta carte mère. Ce sont les contrôleurs USB eux-mêmes, pas des périphériques branchés de l’extérieur. C’est normal de les voir apparaître, tu peux les ignorer dans un diagnostic courant.

La commande lsusb devient encore plus intéressante quand tu lui ajoutes des options. Les deux plus utiles au quotidien sont -v et -t.
lsusb -v active le mode verbeux. Là, c’est le niveau de détail maximal. Pour chaque périphérique, tu obtiens absolument toutes les informations disponibles : la version USB supportée, la puissance consommée, les classes de périphérique, les endpoints de communication, les descripteurs complets. C’est beaucoup d’informations d’un coup, mais quand tu cherches à comprendre pourquoi un périphérique ne fonctionne pas correctement, c’est exactement ce qu’il te faut.
lsusb -v
Attention, cette commande génère beaucoup de texte. Pour ne cibler qu’un seul périphérique, tu combines avec l’option -d suivie de l’identifiant vendeur:produit :
lsusb -v -d 046d:c52b
lsusb -t affiche l’arborescence des bus USB sous forme d’arbre. Tu vois clairement quels périphériques sont connectés à quel bus, et à quelle vitesse ils fonctionnent (USB 2.0, USB 3.0, etc.) :
lsusb -t
Le résultat ressemble à ça :
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/6p, 10000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 3: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 4: Dev 4, If 0, Class=HID, Driver=usbhid, 12M
La mention 480M indique du USB 2.0 (480 Mbit/s) et 10000M indique du USB 3.1 (10 Gbit/s). C’est très utile pour vérifier qu’un périphérique USB 3.0 est bien branché sur un port USB 3.0 et pas sur un port USB 2.0 plus lent.
lsusb couvre l’essentiel des besoins, mais il existe d’autres commandes qui peuvent compléter le tableau selon ce que tu cherches.
dmesg | grep usb est probablement la deuxième commande la plus utile quand on parle d’USB sous Linux. dmesg affiche le journal du noyau, et on filtre avec grep usb pour ne garder que les lignes qui concernent l’USB. Ça donne quelque chose comme ça :
dmesg | grep -i usb
C’est particulièrement utile pour voir en temps réel ce qui se passe quand tu branches un périphérique. Si Linux le détecte et le monte correctement, tu verras les lignes correspondantes apparaître. Si quelque chose cloche, les messages d’erreur seront là aussi. Comme je l’ai fait pendant des années pour déboguer des clés USB récalcitrantes, c’est souvent la commande qui donne la réponse quand tout le reste échoue.
ls /dev/ttyUSB* est une commande différente qui cible spécifiquement les ports série USB, c’est-à-dire les périphériques qui émulent un port série via USB. C’est typiquement le cas des cartes Arduino, des dongles GPS, des convertisseurs USB-série, etc. :
ls /dev/ttyUSB*
Si tu vois apparaître /dev/ttyUSB0, /dev/ttyUSB1, etc., c’est que ces périphériques sont bien reconnus par le système.
usb-devices est une commande moins connue mais qui donne un résultat très structuré sur chaque périphérique USB :
usb-devices
Elle affiche pour chaque appareil le fabricant, le produit, la version USB, la puissance maximale consommée et l’état du driver. C’est un bon compromis entre la simplicité de lsusb et la verbosité de lsusb -v.
cat /proc/bus/usb/devices était la méthode classique avant l’arrivée de lsusb. Elle n’est plus forcément disponible sur tous les systèmes, mais sur ceux où elle fonctionne, elle donne accès aux informations brutes du noyau sur le bus USB. Rien de bien complexe à lire une fois qu’on a l’habitude, mais lsusb reste plus pratique au quotidien.
Il arrive qu’un port USB semble mort : tu branches un périphérique, rien ne se passe, le système ne réagit pas. Avant de paniquer ou d’ouvrir le capot de ta machine, voici comment diagnostiquer ça proprement avec les outils en ligne de commande.
La première étape est de vérifier ce que voit le système en temps réel. Tu ouvres un terminal et tu lances :
dmesg -w
L’option -w met dmesg en mode surveillance continue. Tu branches ton périphérique USB pendant que cette commande tourne. Si le port fonctionne, tu verras des lignes apparaître. Si rien ne s’affiche, le port ne répond vraiment pas au niveau matériel.
Ensuite, tu compares avec un port qui fonctionne. Tu branches le même périphérique sur un autre port USB de ta machine et tu observes la différence. Si le périphérique est reconnu sur l’autre port, le problème vient bien du port d’origine et non du périphérique.
Tu peux aussi vérifier l’état des contrôleurs USB avec :
lspci | grep -i usb
lspci liste tous les périphériques PCI de ta machine, et on filtre sur USB pour voir quels contrôleurs USB sont présents et actifs. Si un contrôleur est absent ou en erreur, ça peut expliquer la panne d’un groupe de ports.
Les causes les plus fréquentes d’un port USB mort sous Linux sont :
Pour les deux premiers cas, un simple redémarrage règle souvent le problème. Pour recharger le module USB sans redémarrer, tu peux essayer :
sudo modprobe -r xhci_hcd && sudo modprobe xhci_hcd
xhci_hcd est le driver des contrôleurs USB 3.0. Pour l’USB 2.0, c’est ehci_hcd. Cette manipulation décharge et recharge le module du noyau, ce qui réinitialise les contrôleurs USB. Dans un monde parfait, ça suffit à ressusciter un port récalcitrant sans avoir à redémarrer toute la machine.
Est-ce que lsusb fonctionne sur toutes les distributions Linux ? Oui, lsusb fait partie du paquet usbutils qui est disponible dans les dépôts officiels de pratiquement toutes les distributions. Sur les distributions très minimalistes ou embarquées, il peut ne pas être préinstallé, mais il s’installe en une commande.
Comment savoir si mon périphérique USB est en USB 2.0 ou USB 3.0 ? La commande lsusb -t te donne cette information directement. Un port USB 2.0 affiche 480M et un port USB 3.0 affiche 5000M ou 10000M. Tu peux aussi regarder la couleur physique de ton port : le bleu indique généralement l’USB 3.0.
Est-ce qu’il faut les droits root pour utiliser lsusb ? Non, lsusb fonctionne sans droits root pour l’usage de base. En revanche, lsusb -v peut nécessiter sudo pour accéder à tous les détails de certains périphériques. Dans ce cas, tu l’appelles avec sudo lsusb -v.
Comment surveiller les branchements USB en temps réel ? La commande dmesg -w combinée à grep usb est la méthode la plus simple. Il existe aussi des outils dédiés comme usbmon pour une surveillance plus avancée, mais pour un usage courant dmesg -w fait très bien le travail.
Pourquoi certains de mes périphériques n’apparaissent pas dans lsusb ? Si un périphérique n’apparaît pas dans lsusb, c’est que soit le port ne l’aliemente pas correctement, soit le périphérique lui-même est défaillant, soit le contrôleur USB a un problème. Dans ce cas, consulte dmesg pour voir si des erreurs sont remontées par le noyau.
Peut-on utiliser ces commandes sur un Raspberry Pi ? Absolument. Le Raspberry Pi tourne sous Linux (généralement Raspberry Pi OS, basé sur Debian) et lsusb y fonctionne exactement de la même façon. C’est d’ailleurs très pratique pour identifier les accessoires connectés à un Pi.