Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:lspci [06/11/2015 15:58] bendia |
doc:systeme:lspci [29/01/2019 23:10] èfpé [Périphérique "inconnu"] actualisation -- pas vu passer de "Unknown" récemment, ou alors c'est plus sérieux, et ce n'est pas résolu de cette manière ! |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== La commande lspci ====== | + | ====== lspci ====== |
- | * Objet : La commande lspci | + | * Objet : la commande lspci |
* Niveau requis :{{tag>débutant avisé}} | * Niveau requis :{{tag>débutant avisé}} | ||
- | * Commentaires : //Pour connaître le matériel de votre PC utilisant le protocole PCI ou USB// | + | * Commentaires : //Pour lister l'ensemble des périphériques connectés aux bus PCI du système// |
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
* Suivi : | * Suivi : | ||
- | * Création par [[user>mattux]] le 17/06/2007 | + | * Création par [[user>mattux]] le 17/06/2007 |
* Testé par [[user>milou]] le 31/07/2015 | * Testé par [[user>milou]] le 31/07/2015 | ||
- | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?pid=116475#p116475 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | + | * Modification par [[user>bendia]] le 6/11/2015 |
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?pid=116475#p116475|C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | Voir : [[doc:systeme:ls|ls]] \\ | ||
+ | La commande pour les périphériques USB : [[doc:systeme:lsusb|lsusb]] | ||
+ | ===== Introduction ===== | ||
- | Voir :[[:doc:systeme:ls | COMMANDE LS]] | + | La commande ''lspci'' permet de connaître la liste du matériel (cartes, //chipsets//, contrôleurs, etc.) de votre PC utilisant l'interface PCI. |
- | ===== Utilisation ===== | + | ===== Syntaxe ===== |
- | + | ||
- | La commande lspci permet de connaitre la liste du matériel (cartes, chipsets etc.) de votre PC utilisant le protocole PCI ou USB. | + | |
- | + | ||
- | ==== Syntaxe ==== | + | |
<code user>lspci</code> | <code user>lspci</code> | ||
- | Donne sur mon PC : | + | Donne par exemple : |
- | <file config retour de la commande> | + | <file config retour de la commande>00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge |
- | 00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge | + | |
00:01.0 PCI bridge: ASUSTeK Computer Inc. AMD RS780/RS880 PCI to PCI bridge (int gfx) | 00:01.0 PCI bridge: ASUSTeK Computer Inc. AMD RS780/RS880 PCI to PCI bridge (int gfx) | ||
00:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 4) | 00:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 4) | ||
Ligne 52: | Ligne 51: | ||
04:05.1 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05) | 04:05.1 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05) | ||
04:05.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05) | 04:05.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05) | ||
- | 04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0) | + | 04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)</file> |
- | </file> | + | |
- | Voilà le résultat de cette commande. Il peut se décomposer comme suit : | + | Le retour de cette commande peut se décomposer comme suit : |
- | <code>Numéro de bus:Numéro de périphérique:Fonction (Le //slot//) - Classe(type) du périphérique: - Nom du constructeur, - Modèle du périphérique- (Révision du périphérique)</code> | + | <code><Numéro de bus>:<Numéro de périphérique (slot)>.<Fonction> <Classe du périphérique (type)>: <Nom du constructeur> <Modèle du périphérique> (<Révision du périphérique>)</code> |
- | Magique non :-) Comment le système fait-il pour obtenir automatiquement ces informations ? Et bien chaque composant du bus PCI contient en certain nombre d'information directement dans sa mémoire qui permet une auto-configuration du système. | + | Magique non ? Comment le système fait-il pour obtenir automatiquement ces informations ? Hé bien chaque composant du bus PCI contient un certain nombre d'informations directement dans sa mémoire, ce qui permet une auto-configuration du système. |
- | D'ailleurs, on peut voir à quoi ressemble ces informations enregistrées directement dans le périphérique avec | + | On peut d'ailleurs voir à quoi ressemblent les informations enregistrées directement dans le périphérique avec : |
- | <code user> lspci -n</code>Ce qui donne chez moi | + | <code user>lspci -n</code> |
- | <code>00:00.0 0600: 1022:9601 | + | <code config retour de la commande>00:00.0 0600: 1022:9601 |
00:01.0 0604: 1043:9602 | 00:01.0 0604: 1043:9602 | ||
00:09.0 0604: 1022:9608 | 00:09.0 0604: 1022:9608 | ||
Ligne 93: | Ligne 91: | ||
04:05.1 0480: 14f1:8801 (rev 05) | 04:05.1 0480: 14f1:8801 (rev 05) | ||
04:05.2 0480: 14f1:8802 (rev 05) | 04:05.2 0480: 14f1:8802 (rev 05) | ||
- | 04:08.0 0c00: 1106:3044 (rev c0) | + | 04:08.0 0c00: 1106:3044 (rev c0)</code> |
- | </code> | + | |
- | Moins lisible hein :-/ Cependant, c'est ce mode de notation qui permet de retrouver avec certitude le modèle de son périphérique. On peut également afficher à la fois le nom et le numéro : | + | Moins lisible, n'est-ce pas ? C'est cependant ce mode d'affichage qui permet de retrouver avec certitude le modèle d'un périphérique. On peut également afficher à la fois le nom et les identifiants numériques : |
<code user>lspci -nn</code> | <code user>lspci -nn</code> | ||
- | <code>00:00.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge [1022:9601] | + | <code config retour de la commande>00:00.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] RS880 Host Bridge [1022:9601] |
00:01.0 PCI bridge [0604]: ASUSTeK Computer Inc. AMD RS780/RS880 PCI to PCI bridge (int gfx) [1043:9602] | 00:01.0 PCI bridge [0604]: ASUSTeK Computer Inc. AMD RS780/RS880 PCI to PCI bridge (int gfx) [1043:9602] | ||
00:09.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 4) [1022:9608] | 00:09.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] RS780/RS880 PCI to PCI bridge (PCIE port 4) [1022:9608] | ||
Ligne 128: | Ligne 125: | ||
04:05.1 Multimedia controller [0480]: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] [14f1:8801] (rev 05) | 04:05.1 Multimedia controller [0480]: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] [14f1:8801] (rev 05) | ||
04:05.2 Multimedia controller [0480]: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] [14f1:8802] (rev 05) | 04:05.2 Multimedia controller [0480]: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] [14f1:8802] (rev 05) | ||
- | 04:08.0 FireWire (IEEE 1394) [0c00]: VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller [1106:3044] (rev c0) | + | 04:08.0 FireWire (IEEE 1394) [0c00]: VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller [1106:3044] (rev c0)</code> |
- | </code> | + | |
- | ==== Options de tri ==== | + | ===== Options de tri ===== |
- | Bien, c'est bien joli tout ça, mais on se rend compte que c'est un peu long comme retour. ''lspci'' renvoi en effet une ligne par périphérique ... lorsqu'on l'utilise avec son mode le moins bavard. Voyons voir s'il est possible de filtrer ce résultat. | + | Bon, c'est bien joli tout ça, mais on se rend compte que c'est un peu long, comme retour. ''lspci'' renvoie en effet une ligne par périphérique... lorsqu'on l'utilise avec son mode le moins bavard. Voyons voir s'il est possible de filtrer ce résultat. |
- | === Filtrer par Slot === | + | ==== Filtrer par slot (dit "emplacement") ==== |
- | On peu filtrer le résultat avec le //slot//, c'est à dire le code donné dans le premier champ grâce à l'option ''-s''. Exemple | + | On peut filtrer le résultat par //slot//, c'est-à-dire le code donné dans le premier champ grâce à l'option ''-s''. Exemple : |
<code user>lspci -s 04:08.0</code> | <code user>lspci -s 04:08.0</code> | ||
- | <code>04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)</code> | + | <code config retour de la commande>4:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)</code> |
- | === Filtrer par nom de périphérique === | + | ==== Filtrer par nom de périphérique ==== |
- | Il est également possible de filtrer grâce au nom du périphérique avec l'option ''-d''. Pas directement son nom en réalité, mais grâce au code ''IdVendeur:IdPériphérique'' | + | Il est également possible de filtrer grâce au nom du périphérique avec l'option ''-d''. Pas directement son nom en réalité, mais grâce au code ''IdentifiantVendeur:IdentifiantPériphérique''. Exemple : |
<code user>lspci -d 1106:3044</code> | <code user>lspci -d 1106:3044</code> | ||
- | <code>04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)</code> | + | <code config retour de la commande>04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0)</code> |
- | <note tip>Il n'existe pas d'option pour filtrer par classe de périphérique, ce qui peut être cependant intéressant. Un petit script permet néanmoins de réaliser ce filtre grâce au code de la classe | + | ==== Filtrer par classe de périphériques ==== |
- | <file bash>class=0480 #On récupère la classe d'un périphérique PCI là http://pci-ids.ucw.cz/read/PD/ | + | |
- | for i in $(lspci -n | grep $class | cut -d " " -f3); do lspci -d $i; done</file> | + | Il est également possible de filtrer par classe de périphériques, toujours avec l'option ''-d''. Exemple : |
- | <code>04:05.1 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05) | + | <code user>lspci -d ::0480</code> |
- | 04:05.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05) | + | <code config retour de la commande>04:05.1 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] (rev 05) |
- | </code></note> | + | 04:05.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] (rev 05)</code> |
- | Mais pourquoi filtrer ? Parce que la commande peut être nettement plus //bavarde// et renvoyer plusieurs ligne par périphérique, au point qu'il est difficile de s'y retrouver. | + | Mais pourquoi filtrer ? Parce que la commande peut être nettement plus **bavarde** et renvoyer plusieurs lignes par périphérique, au point qu'il est difficile de s'y retrouver. |
- | ==== Option d'affichage ==== | + | ===== Options d'affichage ===== |
- | Les options ''-v'', ''-vv'' et ''-vvv'' permettent d'augmenter la quantité d'informations affichée | + | Les options ''-v'', ''-vv'' et ''-vvv'' permettent d'augmenter la quantité d'informations affichées. Exemple : |
- | <code user>lspci -vd 1106:3044</code> | + | <code root>lspci -vd 1106:3044</code> |
- | <code>4:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0) (prog-if 10 [OHCI]) | + | <code config retour de la commande>04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0) (prog-if 10 [OHCI]) |
Subsystem: ASUSTeK Computer Inc. Motherboard | Subsystem: ASUSTeK Computer Inc. Motherboard | ||
Flags: bus master, medium devsel, latency 64, IRQ 23 | Flags: bus master, medium devsel, latency 64, IRQ 23 | ||
Ligne 168: | Ligne 164: | ||
I/O ports at ec00 [size=128] | I/O ports at ec00 [size=128] | ||
Capabilities: [50] Power Management version 2 | Capabilities: [50] Power Management version 2 | ||
- | Kernel driver in use: firewire_ohci | + | Kernel driver in use: firewire_ohci</code> |
- | </code> | + | |
- | On voit apparaître ici une information fort intéressante, à savoir le driver utilisé ''Kernel driver in use''. Il est possible de n'ajouter que cette information (ou presque) à la sortie habituelle avec l'option ''-k'' | + | On voit apparaître ici une information fort intéressante, à savoir le pilote (ze //driver//, en anglois m() utilisé : ''Kernel driver in use''. Il est possible de n'ajouter que cette information (ou presque) à la sortie habituelle avec l'option ''-k''. Exemple : |
<code user>lspci -kd 1106:3044</code> | <code user>lspci -kd 1106:3044</code> | ||
- | <code>04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0) | + | <code config retour de la commande>04:08.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller (rev c0) |
Subsystem: ASUSTeK Computer Inc. Motherboard | Subsystem: ASUSTeK Computer Inc. Motherboard | ||
- | Kernel driver in use: firewire_ohci | + | Kernel driver in use: firewire_ohci</code> |
- | </code> | + | |
+ | ===== Périphérique "inconnu" ===== | ||
- | ===== Mon périphérique est inconnu ===== | + | Vous venez d'acheter la dernière carte graphique méga géniale qui affiche 30 millions de //shadow// et en plus elle fait le café, mais voilà, ''lspci'' vous retourne un déprimant ''Device''... Votre carte est inconnue au bataillon. |
- | Vous venez d'acheter la dernière carte graphique méga géniale qui affiche 30 millions de //shadow// et en plus elle fait le café, mais voilà, ''lspci'' vous retourne un déprimant ''Unknown'' ... Votre carte est inconnue au bataillon. | + | Souvenez-vous, nous avons dit tout au début que les informations permettant d'identifier le matériel se trouvent directement dans la carte sous forme de code cabalistique (hexadécimal, en réalité ;-)). Pour afficher des informations lisibles par le débianeux moyen, ''lspci'' fait correspondre les codes hexadécimaux aux données présentes dans le fichier ''/usr/share/misc/pci.ids''. On peut mettre à jour ce fichier avec la commande : |
- | + | ||
- | Souvenez vous, nous avons dit tout au début que les information permettant d'identifier le matériel se trouve directement dans la carte sous forme de code cabalistique (hexadécimale en réalité ;) ). Pour afficher des informations lisibles par le membre DF moyen, ''lspci'' fait correspondre les codes hexadécimaux au données présents dans le fichier ''/usr/share/hwdata/pci.ids''. Or, on peut mettre à jour ce fichier avec la commande | + | |
<code root>update-pciids</code> | <code root>update-pciids</code> | ||
- | <code>Downloaded daily snapshot dated 2015-11-05 03:15:01</code> | + | <code config retour de la commande>Downloaded daily snapshot dated 2018-12-18 03:15:01</code> |
+ | |||
+ | Et puisque le débianeux moyen est vachement curieux (ou curieuse, il paraît que le neutre se conjugue au masculin ^_^) : | ||
+ | |||
+ | <code user>ls -lh /usr/share/misc/pci.ids*</code> | ||
+ | <code config retour de la commande>-rw-r--r-- 1 root root 1,1M déc. 18 03:15 /usr/share/misc/pci.ids | ||
+ | -rw-r--r-- 1 root root 1,1M nov. 30 2016 /usr/share/misc/pci.ids.old</code> | ||
===== Pense-bête ===== | ===== Pense-bête ===== | ||
Ligne 194: | Ligne 193: | ||
===== Liens utiles ===== | ===== Liens utiles ===== | ||
- | * La liste des codes PCI : http://pci-ids.ucw.cz/ | + | * Manuel de l'administrateur Linux (2008) : https://delafond.org/traducmanfr/man/man8/lspci.8.html |
- | * //Decoding PCI data and lspci output on Linux hosts// (en anglais, vous l'aurez deviné ;-) ) : http://www.prefetch.net/articles/linuxpci.html | + | * (en) //The PCI ID Repository// (dépôt de référence pour les identifiants PCI) : https://pci-ids.ucw.cz/ |
- | + | * (en) //Decoding PCI data and lspci output on Linux hosts// : https://prefetch.net/articles/linuxpci.html | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||