Archive

Lspci Output

The output of lspci -n is pretty cryptic. If you want to know what all the numbers mean, read on…

hrm@joshua:hrm $ lspci -n 0000:00:00.0 0600: 8086:3580 (rev 02) 0000:00:00.1 0880: 8086:3584 (rev 02) 0000:00:00.3 0880: 8086:3585 (rev 02) 0000:00:02.0 0300: 8086:3582 (rev 02) 0000:00:02.1 0380: 8086:3582 (rev 02) 0000:00:1d.0 0c03: 8086:24c2 (rev 03) 0000:00:1d.1 0c03: 8086:24c4 (rev 03) 0000:00:1d.2 0c03: 8086:24c7 (rev 03) 0000:00:1d.7 0c03: 8086:24cd (rev 03) 0000:00:1e.0 0604: 8086:2448 (rev 83) 0000:00:1f.0 0601: 8086:24cc (rev 03) 0000:00:1f.1 0101: 8086:24ca (rev 03) 0000:00:1f.5 0401: 8086:24c5 (rev 03) 0000:00:1f.6 0703: 8086:24c6 (rev 03) 0000:01:04.0 0280: 8086:4220 (rev 05) 0000:01:05.0 0607: 1180:0475 (rev b8) 0000:01:05.1 0c00: 1180:0551 0000:01:08.0 0200: 8086:103e (rev 83)

As I’m sure you can see, this is the output from my laptop, which is obviously an ASUS M3000. Or something…

Each line of output is a PCI device.

Picking one of those lines:

0000:00:1f.1 0101: 8086:24ca (rev 03)

The first set of numbers, 0000:00:1f:1, are the address of the device on the PCI bus. This consists of four parts: The PCI domain, the bus address, the device address, and a component address respectively.

  • The PCI domain (0000) has been zero on every machine I’ve ever seen.

  • The bus address (00) refers to the PCI bus that the device is on. Most desktop machines have one or two (or possibly three) PCI buses. Note that the AGP interface is treated as a separate PCI bus (although it’s not a bus architecture).

  • The device address (1f) is the identifier on the given bus of the device in question. This is usually a separate card or chip.

  • The component address (1) allows devices to be subdivided into separate pieces of functionality. The most commonly-seen use for this is on multi-head graphics cards, where the separate heads are often given different component addresses.

The second set of numbers, 0101: 8086:24ca (rev 03), describe the device itself. These are, respectively, the device class, the manufacturer ID, and device id, and the revision.

  • The device class (0101) describes what the device does.

  • The manufacturer ID (8086) does exactly what it says on the tin. Note that Intel’s ID is 8086.

  • The device ID (24ca) is a manufacturer-specific number that identifies the device, and should be sufficient to specify the driver that needs to be used to control it. This isn’t always the case – there have been a couple of well-known exceptions to the rule.

  • The revision (rev 03) serves to identify subtly-different versions of the same device.

All of the numbers in the listing are in hexadecimal. You can look up manufacturer and device ID numbers from http://pciids.sf.net/ or in the drivers/pci/pci.ids file in the Linux kernel source.

Most of the time, the lspci tool will have all of the PCI ids built into itself, and running it without the -n option will do that look-up, printing the “human-readable” version of the manufacturer and device ID.

Leave a Reply