Tutoriel Linux

Lspci sous Linux : retrouver le périphérique qui n’a pas de pilote

Débutant4 min de lecture

Un périphérique PCI peut être bien détecté par le noyau sans fonctionner pour autant. C’est fréquent après l’installation d’une carte réseau, d’un contrôleur de stockage ou d’une carte graphique sur une machine Linux. Avant de chercher un paquet au hasard, commencez par identifier le matériel et le pilote réellement utilisé.

La commande lspci liste les périphériques connectés au bus PCI. Avec l’option -nnk, elle affiche aussi les identifiants matériels et le module du noyau associé. C’est le point de départ le plus fiable pour distinguer un périphérique absent, un module disponible et un matériel qui ne fonctionne pas encore.

Illustration Linux d’un périphérique PCI et de son module noyau
Lspci permet d’identifier le matériel PCI et le module du noyau associé.

Afficher les périphériques PCI détectés

Lancez d’abord une liste simple :

lspci

Vous obtenez une ligne par contrôleur PCI : ponts, contrôleur USB, carte réseau, audio, stockage ou affichage. Cette première sortie répond à une question importante : le matériel est-il visible par le firmware et le noyau ?

Pour obtenir les identifiants constructeur et périphérique, utilisez :

lspci -nn

Les couples entre crochets, comme , servent à retrouver une documentation, un pilote ou un correctif précis. Ne vous contentez pas du nom commercial affiché par lspci : les identifiants évitent les confusions entre deux révisions proches.

Vérifier le module du noyau utilisé

Pour savoir si un pilote est attaché au périphérique, ajoutez -k :

lspci -nnk

Regardez surtout ces deux lignes :

  • Kernel driver in use indique le module actuellement utilisé ;
  • Kernel modules liste les modules compatibles détectés dans le système.

Voici un exemple de filtre pour une carte réseau :

lspci -nnk | grep -A 3 -Ei 'ethernet|network|wireless'

Si Kernel modules est présent mais que Kernel driver in use manque, le matériel est connu mais aucun module n’est attaché. Cela peut venir d’un firmware absent, d’un module non chargé, d’un conflit ou d’une incompatibilité avec le noyau en cours.

Ne pas confondre matériel détecté et matériel fonctionnel

Une ligne dans lspci ne prouve pas que le périphérique est utilisable. Une carte réseau peut apparaître dans le bus PCI sans créer d’interface dans ip link. Un contrôleur de stockage peut être détecté sans que les disques attendus soient montés.

Croisez le résultat avec les interfaces et les messages du noyau :

ip -brief link
sudo dmesg -T | grep -Ei 'firmware|module|error|fail|pci'
lsmod | grep nom_du_module

Remplacez nom_du_module par le nom vu après Kernel driver in use. Pour obtenir les informations déclarées par le module, utilisez ensuite :

modinfo nom_du_module

Ces commandes permettent de séparer trois problèmes différents : le matériel n’est pas détecté, le pilote n’est pas chargé ou le pilote est chargé mais signale une erreur.

Charger un module, seulement après vérification

Si lspci -nnk indique un module compatible et que vous avez vérifié son nom, vous pouvez tester son chargement :

sudo modprobe nom_du_module
lspci -nnk

Ne rendez pas le chargement permanent avant d’avoir lu les messages de dmesg et vérifié le comportement du périphérique. Sur un serveur distant, gardez une console ou une seconde session SSH disponible, surtout si le module concerne le stockage ou le réseau.

Quand lspci ne suffit pas

Si le périphérique n’apparaît pas, vérifiez d’abord le branchement, le BIOS/UEFI, la présence du périphérique dans une machine virtuelle et les journaux du démarrage. Si le périphérique apparaît avec un identifiant mais sans pilote, cherchez le firmware et le module correspondant à votre version de noyau. Pour un problème de carte réseau, vous pouvez aussi comparer avec le guide sur la vérification des interfaces avec ip addr. Pour les messages du noyau, utilisez dmesg sous Linux.

lspci donne donc la preuve que le bus voit le matériel. La ligne Kernel driver in use, les logs et une vérification fonctionnelle doivent compléter le diagnostic avant toute installation ou modification du système.

sudo apt update && sudo apt upgrade