lspci

La commande lspci permet de lister l'ensemble des périphériques connecté sur le bus PCI.

Voici un exemple de sortie de la commande lspci utilisée sans options:

$ lspci
00:00.0 Memory controller: nVidia Corporation CK804 Memory Controller (rev a3)
00:01.0 ISA bridge: nVidia Corporation CK804 ISA Bridge (rev a3)
00:01.1 SMBus: nVidia Corporation CK804 SMBus (rev a2)
00:02.0 USB Controller: nVidia Corporation CK804 USB Controller (rev a2)
00:02.1 USB Controller: nVidia Corporation CK804 USB Controller (rev a3)
00:04.0 Multimedia audio controller: nVidia Corporation CK804 AC'97 Audio Controller (rev a2)
00:06.0 IDE interface: nVidia Corporation CK804 IDE (rev f2)
[...]

La première colonne montre l'emplacement du périphérique sur le bus PCI, la seconde fournit le type, le constructeur et le modèle de périphérique.

Remarquez que seuls les chipsets USB sont branchés sur le bus PCI, pas les périphériques USB. Vous ne pouvez donc pas obtenir la liste des périphériques USB à l'aide de lspci, pour lister les périphériques USB, utilisez la commande lsusb.

Mode verbeux

Il est possible d'utiliser les options "-v", "-vv" et "-vvv" pour obtenir de plus en plus d'options sur les périphériques.

Les différents niveaux de verbosité permettent d'obtenir des informations telles que le numéro de ligne d'interruption (IRQ), les adresses de ports d'entrées-sorties, le mapping mémoire, etc. Voici un exemple du même périphérique avec les quatres niveaux d'informations:

$ lspci
05:0c.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
# lspci -v
05:0c.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
        Subsystem: ASUSTeK Computer Inc. Marvell 88E8001 Gigabit Ethernet Controller (Asus)
        Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 17
        Memory at c0004000 (32-bit, non-prefetchable) [size=16K]
        I/O ports at a800 [size=256]
        [virtual] Expansion ROM at 50000000 [disabled] [size=128K]
        Capabilities: [48] Power Management version 2
        Capabilities: [50] Vital Product Data
# lspci -vv
05:0c.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
        Subsystem: ASUSTeK Computer Inc. Marvell 88E8001 Gigabit Ethernet Controller (Asus)
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- lspci -vvv
05:0c.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
        Subsystem: ASUSTeK Computer Inc. Marvell 88E8001 Gigabit Ethernet Controller (Asus)
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- 

Certaines informations requièrent les droits d'administrateur pour être lues. Lorsque la commande lspci est invoquée sans les droits root, elle essaye de montrer le plus d'informations disponibles en droit utilisateur et affiche "<access denied>" pour les autres:

$ lspci -v
05:0c.0 Ethernet controller: Marvell Technology Group Ltd. 88E8001 Gigabit Ethernet Controller (rev 13)
        Subsystem: ASUSTeK Computer Inc. Marvell 88E8001 Gigabit Ethernet Controller (Asus)
        Flags: bus master, 66MHz, medium devsel, latency 32, IRQ 17
        Memory at c0004000 (32-bit, non-prefetchable) [size=16K]
        I/O ports at a800 [size=256]
        [virtual] Expansion ROM at 50000000 [disabled] [size=128K]
        Capabilities: <access denied>

Traiter automatiquement les informations

La commande lspci possède des options de formatage pour faciliter son utilisation dans les scripts.

Il est intéressant de voir aussi d'où lspci tire ses informations. La source principale est le pseudo système de fichiers procfs où on peut trouver la hiérarchie du bus dans /proc/bus/pci/. Le fichier "/proc/bus/pci/devices" fournit la liste de tous les périphériques.

Une autre source d'information de lspci est le pseudo système de fichiers sysfs. On peut ainsi retrouver dans /sys/ l'ensemble des informations publiées par les modules pilotant les périphériques du bus PCI.