Quand une clé USB, un disque externe ou un adaptateur série ne répond pas sous Linux, le premier réflexe n’est pas de redémarrer la machine. Il faut d’abord vérifier si le périphérique est vu par le noyau, par le bus USB, puis par le système.
Pour ça, quelques commandes suffisent : lsusb, lsusb -t, dmesg et journalctl -k. Elles ne racontent pas toutes la même chose. Si vous les utilisez dans le bon ordre, vous gagnez vite du temps sur un périphérique non reconnu.
Commencez par lister les périphériques USB
La commande la plus simple est lsusb. Elle affiche les périphériques détectés sur les bus USB :
lsusb
Vous obtenez des lignes de ce type :
Bus 002 Device 003: ID 0781:5581 SanDisk Corp. Ultra
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
La partie importante est souvent l’identifiant vendor:product, par exemple 0781:5581. Même si Linux n’a pas chargé le bon pilote ou n’a pas monté le disque, cet identifiant prouve déjà que le périphérique répond sur le bus USB.
Si la commande n’existe pas, installez le paquet usbutils :
sudo apt update
sudo apt install usbutils
Sur d’autres distributions, le nom du paquet reste souvent usbutils. La page de manuel lsusb(8) détaille les options utiles.
Voir l’arborescence avec lsusb -t
lsusb vous dit ce qui est détecté. lsusb -t vous montre comment c’est branché :
lsusb -t
Cette vue est très pratique avec les hubs USB, les stations d’accueil et les ports en façade. Exemple :
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 3, If 0, Class=Mass Storage, Driver=usb-storage, 5000M
Ici, on voit un périphérique de stockage USB en 5000M, donc en USB 3.x. Si un disque rapide apparaît en 480M, il est peut-être branché sur un port USB 2.0, via un câble limité, ou derrière un hub qui bride la vitesse.
Regardez aussi la colonne Driver. Si elle est vide ou inattendue, le périphérique est bien vu, mais le pilote n’est pas forcément chargé comme prévu.
Surveiller ce qui se passe au branchement
Pour diagnostiquer proprement, ouvrez un terminal, lancez la surveillance du noyau, puis branchez le périphérique :
sudo dmesg -w
Vous pouvez aussi utiliser journalctl si votre distribution centralise les logs avec systemd :
sudo journalctl -k -f
Au branchement, vous devriez voir des lignes qui parlent de usb, new high-speed USB device, usb-storage, ttyUSB ou sdX selon le matériel. C’est souvent plus parlant que lsusb seul, parce que les erreurs apparaissent au moment exact de la connexion.
Pour relire les derniers messages sans rester en suivi temps réel :
sudo dmesg | tail -80
sudo journalctl -k -n 80 --no-pager
Si vous voulez creuser la lecture des logs au démarrage ou après un incident, j’ai détaillé la méthode dans le guide sur journalctl et les logs du dernier démarrage Linux.
Repérer un disque USB qui ne se monte pas
Un disque USB peut être détecté sans être monté automatiquement. Dans ce cas, vérifiez les blocs de stockage :
lsblk -o NAME,SIZE,FSTYPE,LABEL,MOUNTPOINTS,MODEL
sudo blkid
Si le disque apparaît dans lsblk, le problème n’est pas le port USB. Il faut regarder le système de fichiers, les droits, l’automontage ou les erreurs de partition. Si rien n’apparaît dans lsblk, revenez aux logs du noyau.
Sur une clé ou un disque suspect, évitez de lancer immédiatement une réparation. Commencez par lire les messages :
sudo journalctl -k -n 120 --no-pager | grep -Ei 'usb|sd[a-z]|uas|reset|error'
Des lignes avec reset high-speed USB device, I/O error ou device descriptor read orientent plutôt vers un câble, un boîtier, une alimentation ou un périphérique instable.
Identifier un adaptateur série, réseau ou Bluetooth
Pour un adaptateur USB vers série, cherchez les périphériques ttyUSB ou ttyACM :
ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
sudo dmesg | grep -Ei 'ttyUSB|ttyACM|ch341|cp210|ftdi'
Pour un adaptateur réseau USB, combinez lsusb avec les interfaces réseau :
ip link
nmcli device status 2>/dev/null
Si l’adaptateur est vu par lsusb mais pas dans ip link, vous êtes probablement sur un sujet de pilote ou de firmware. Dans ce cas, notez l’identifiant USB exact avant de chercher une solution. Chercher 0bda:8153 Linux est beaucoup plus efficace que chercher seulement “adaptateur ethernet USB”.
La méthode courte quand un périphérique USB ne répond pas
Quand je dois diagnostiquer vite, je garde cette séquence :
lsusb
lsusb -t
sudo journalctl -k -f
Ensuite, je débranche et je rebranche le périphérique. Si rien ne bouge dans les logs, je teste un autre port, un autre câble ou une alimentation différente. Si les logs réagissent mais que le périphérique n’est pas utilisable, je regarde le pilote, le stockage avec lsblk, ou l’interface créée dans /dev.
Ce n’est pas une méthode magique, mais elle évite de partir dans tous les sens. D’abord le bus USB, ensuite les logs du noyau, puis seulement après le montage, le pilote ou l’application qui doit utiliser le matériel.
À vérifier avant de conclure que le port est mort
Avant d’accuser le port USB, testez au minimum :
- un autre câble, surtout pour les disques externes et les smartphones ;
- un port directement sur la machine, sans hub ;
- un autre périphérique sur le même port ;
- les messages
dmesgoujournalctl -kau moment du branchement ; - l’alimentation du périphérique si c’est un disque 2,5 pouces, un boîtier ou une station d’accueil.
Si lsusb voit le périphérique sur un port mais pas sur un autre, vous avez déjà une piste matérielle. Si aucun port ne le voit, testez-le sur une autre machine avant de modifier votre configuration Linux.
Pour les commandes liées aux logs, les références dmesg(1) et journalctl(1) restent utiles quand vous voulez vérifier une option précise.