Utilisez lspci sur Linux pour voir votre matériel

Lorsque vous exécutez Linux sur un ordinateur de bureau ou un serveur, vous devez parfois identifier le matériel de ce système. Une commande utilisée pour cela est lspci
. Il fonctionne en affichant tous les périphériques connectés au bus PCI. Il est fourni par le pciutils package et est disponible pour une large gamme de systèmes d’exploitation basés sur Linux et BSD.
Contents
Utilisation de base
Les informations affichées lorsqu’un utilisateur régulier exécute lspci
peut être limité en raison des autorisations d’accès. Exécuter la commande avec sudo
fournit une image complète.
Fonctionnement lspci
par lui-même répertorie les bus PCI et leurs périphériques connectés. Voici un exemple de mon PC Media Center. Il s’agit d’un système basé sur un processeur AMD Phenom, il dispose donc d’un chipset AMD. Il dispose également d’une manette sans fil Atheros et d’une carte graphique Nvidia. Tous les périphériques matériels sont répertoriés avec des détails tels que le fournisseur, le nom et le numéro de modèle :
$ sudo lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge
00:02.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780 PCI to PCI bridge (ext gfx port 0)
00:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 0)
00:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 1)
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 SMBus Controller (rev 3c)
00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 IDE Controller
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 LPC host controller
00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 PCI to PCI Bridge
00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 10h Processor Link Control
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
02:00.0 Network controller: Qualcomm Atheros AR9287 Wireless Network Adapter (PCI-Express) (rev 01)
Sortie verbeuse
Ajout d’un -v
L’option augmente la verbosité ou le niveau de détail pour chaque appareil. Vous pouvez utiliser -vv
ou -vvv
pour des quantités encore plus élevées de détails sur l’appareil. A ce niveau, lspci
affiche divers sous-systèmes et adresses mémoire, les numéros de demande d’interruption (IRQ) et d’autres capacités pour tous les périphériques. La sortie est extrêmement longue. Essayez-le sur votre système.
Recherche avec grep
Parfois, vous souhaitez affiner votre recherche. Par exemple, le site Web RPM Fusion contient des instructions pour installer les pilotes graphiques Nvidia. Ils commencent par identifier votre carte graphique à l’aide du grep
commander. Voici ce que j’obtiens sur mon portable :
$ sudo lspci | grep -e VGA
00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 620 (rev 07)
$ sudo lspci | grep -e 3D
01:00.0 3D controller: NVIDIA Corporation GM108M [GeForce MX130] (rev a2)
Les grep
Les commandes ci-dessus affichent un périphérique VGA sur mon PC Media Center mais aucun périphérique 3D.
$ sudo lspci | grep -e VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
$ sudo lspci | grep -e 3D
$
Recherche par ID de fournisseur
Il y a un autre moyen qui ne nécessite pas grep
. Supposons que je veuille déterminer si d’autres périphériques Nvidia sont présents. Il faut en savoir un peu plus. Je utilise le -nn
option pour afficher les numéros d’identification du fournisseur et de l’appareil. Sur mon PC Media Center, cette option affiche ma carte VGA, l’ID du fournisseur et l’ID de l’appareil :
$ sudo lspci -nn | grep -e VGA
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
L’ensemble de parenthèses avec les chiffres séparés par des deux-points après le nom de l’appareil indique le fournisseur et l’ID de l’appareil. La sortie indique que l’ID du fournisseur d’un appareil fabriqué par Nvidia Corporation est 10de.
Les -d
L’option affiche tous les appareils d’un fournisseur, d’un appareil ou d’un ID de classe spécifié. Voici tous les appareils Nvidia de mon système (en gardant le -nn
pour inclure les identifiants des fournisseurs) :
$ sudo lspci -nn -d 10de:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)
D’après la sortie, vous pouvez voir qu’en plus d’une carte graphique, j’ai un périphérique audio Nvidia. Ils font tous les deux en fait partie de la même Nvidia GeForce GTX650 carte, mais c’est quand même un bon exemple.
Modules du noyau
Avec les périphériques matériels PCI, lspci
peut montrer quels modules de pilote de noyau sont chargés avec le -k
option. J’ajoute cette option à mon lspci
commandes pour afficher plusieurs informations sur mes appareils Nvidia.
$ sudo lspci -nn -k -d 10de:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107 [GeForce GTX 650] [10de:0fc6] (rev a1)
Subsystem: eVga.com. Corp. GK107 [GeForce GTX 650] [3842:2650]
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation GK107 HDMI Audio Controller [10de:0e1b] (rev a1)
Subsystem: eVga.com. Corp. GK107 HDMI Audio Controller [3842:2650]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
Deux lignes supplémentaires s’affichent : Pilote de noyau en cours d’utilisation et Modules du noyau. La seconde liste les modules disponibles pour prendre en charge l’appareil.
Se tenir au courant
De nouveaux appareils et fournisseurs font constamment leur entrée sur le marché. Si vous voyez un appareil répertorié comme inconnu, votre base de données d’ID de périphérique PCI est peut-être obsolète. Il y a deux façons de vérifier. Les -Q
L’option utilise DNS pour interroger la base de données centrale. Ceci, bien sûr, nécessite une connectivité réseau.
$ sudo lspci -Q
Vous pouvez également mettre à jour votre base de données d’ID PCI locale en exécutant la commande update-pciids
.
$ sudo update-pciids
Downloaded daily snapshot dated 2021-08-22 03:15:01
En savoir plus sur votre matériel
Bien sûr, lspci
n’est qu’une des nombreuses commandes disponibles pour Linux qui sont utiles pour interroger le matériel et les logiciels de votre système. En savoir plus sur le matériel sous Linux dans mon article sur les périphériques USB : Reconnaître plus de périphériques sous Linux avec ce référentiel d’ID USB.