lspci (list PCI) Linux command displays information about each PCI bus on your system. This includes information about the devices connected to the PCI subsystem.
In this tutorial, we will cover the
lspci command syntax and show you different ways to use it.
- A system running a Linux distribution.
- Access to an account with sudo privileges.
- Access to the terminal window or command line.
How to Install lspci
Start by updating the system repository to the latest version:
sudo apt update
lspci command is a part of the pciutils package. Pciutils is included in most Linux distributions by default.
If you want to install the pciutils package manually, use one of the following commands, depending on your Linux distribution:
sudo apt install pciutils
sudo yum install pciutils
sudo dnf install pciutils
- Arch Linux:
sudo pacman -S pciutils
lspci Command Syntax
lspci command uses the following syntax:
lspci command without any options produces an output similar to the following:
Let's take the first line of the output:
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
The output above contains the following sections:
00:00.0- The bus number, device number, and function number, in that order.
Host bridge:- Device class.
Intel Corporation- Device vendor.
440FX - 82441FX PMC- Device name.
[Natoma]- Mode of operation.
(rev 02)- Revision number.
lspci Command Options
lspci command uses the following options:
|Display output in a backward-compatible machine-readable form.|
|Display output in a machine-readable form for easy parsing by scripts.|
|Display output as a tree diagram.|
|Display a verbose version of the output.|
|Display a very verbose version of the output.|
|Display all available information in the output.|
|Show kernel drivers and modules handling each device.|
|Display the standard part of the configuration space in a hexadecimal format.|
|Display the whole PCI configuration space in a hexadecimal format.|
|Display the extended PCI configuration space in a hexadecimal format.|
|Display numbers and addresses as seen by the cards instead of the kernel.|
|Always display PCI domain numbers.|
|Identify PCI devices by path through each bridge instead of by bus number.|
|Identify PCI devices by path through each bridge, showing both the bus and device number.|
|Display PCI vendor and device codes as numbers.|
|Display PCI vendor and device codes as both numbers and names.|
|Use DNS to query the central PCI ID database if a device is not found in the local pci.ids file and save the result in the local cache.|
|Use DNS to query the central PCI ID database if a device is not found in the local pci.ids file and reset the local cache.|
|Use DNS to query the central PCI ID database even if a device is found in the local pci.ids file.|
|Only show devices in a specified domain.|
|Only show devices with the specified vendor, device, and class ID.|
|Read PCI ID information from a user-defined file.|
|Use a custom file to map PCI IDs handled by kernel modules.|
|Perform a thorough scan of all PCI devices.|
|Display the current command version.|
|Select a custom PCI access method.|
|Set a custom parameter for the PCI library.|
|Use direct hardware access via Intel configuration mechanism 1.|
|Use direct hardware access via Intel configuration mechanism 2.|
|Use a text file as a list of PCI devices.|
|Increase debug level of the PCI library.|
Here are some ways you can display the PCI device information using the
Display PCI Information in a Machine-Readable Format
-mm option to display the PCI information in a machine-readable format:
This output format adds double quotation marks (
") around each information category, making it easier to pass the data to a shell script.
-m option displays the data in a backward-compatible machine-readable format.
Display PCI Information as a Tree Diagram
-t option displays the bus, device, and function numbers in a tree diagram, showing how they are connected:
Display PCI Information in a Detailed Format
lspci command lets you set the level of detail to show in the output. Using the
-v option displays the output in a verbose format, with in-depth information about all devices:
-vv option shows the very verbose output:
-vvv option shows the highest level of detail in the output:
Display PCI Information in the Tag:Value Format
Combining the verbose and machine-readable formats displays the output in the tag:value format:
The tag:value format lists PCI devices in a format similar to JSON, making the information easier to read. Each device is a separate section, with the information displayed in multiple lines:
Display PCI Information for a Specific Device
-s option lets you display information for a device by providing the bus, device, and function number:
lspci -s [bus number]:[device number].[function number]
For instance, showing the information for the device at 00:00.0:
lspci -s 00:00.0
Another method is to use the vendor and device code with the
lspci -d [vendor code]:[device code]
For example, looking up the same device as above, this time with the vendor and device code:
lspci -d 8086:1237
Note: If you only have the vendor code or the device code for the device you want to look up, use
lspci -d [vendor code]: or
lspci -d :[device code].
Display Device Codes
-n option displays the vendor and device code for each PCI device:
-nn option displays both the vendor and device codes and device names, making it easier to read the output:
The vendor and device codes are displayed in brackets at the end of each entry:
Display Kernel Drivers
-k option displays a more detailed version of the output, including the kernel drivers and modules currently in use:
After reading this tutorial, you should be able to use the
lspci command to look up information about the PCI devices connected to your system.
Learn more about using Linux commands in our Linux Commands Cheat Sheet.