BedroomLAN

Tilde~A: Alexios' Homepage

Too Many Unknown PCI Devices

You just bought a shiny new motherboard, but the Linux kernel doesn't recognise some (or all) of the on-board PCI devices. Time to panic? Not quite yet. Let's say you get something like this:

# lspci
00:00.0 Class 0600: Unknown device 8086:29c0 (rev 02)
00:01.0 Class 0604: Unknown device 8086:29c1 (rev 02)
00:1a.0 Class 0c03: Unknown device 8086:2937 (rev 02)
00:1a.1 Class 0c03: Unknown device 8086:2938 (rev 02)
00:1a.2 Class 0c03: Unknown device 8086:2939 (rev 02)
00:1a.7 Class 0c03: Unknown device 8086:293c (rev 02)
00:1b.0 Class 0403: Unknown device 8086:293e (rev 02)
00:1c.0 Class 0604: Unknown device 8086:2940 (rev 02)
00:1c.4 Class 0604: Unknown device 8086:2948 (rev 02)
00:1c.5 Class 0604: Unknown device 8086:294a (rev 02)
00:1d.0 Class 0c03: Unknown device 8086:2934 (rev 02)
00:1d.1 Class 0c03: Unknown device 8086:2935 (rev 02)
00:1d.2 Class 0c03: Unknown device 8086:2936 (rev 02)
00:1d.7 Class 0c03: Unknown device 8086:293a (rev 02)
00:1e.0 Class 0604: Unknown device 8086:244e (rev 92)
00:1f.0 Class 0601: Unknown device 8086:2916 (rev 02)
00:1f.2 Class 0104: Unknown device 8086:2822 (rev 02)
00:1f.3 Class 0c05: Unknown device 8086:2930 (rev 02)
01:00.0 Class 0300: Unknown device 10de:0402 (rev a1)
03:00.0 Class 0106: Unknown device 197b:2363 (rev 02)
03:00.1 Class 0101: Unknown device 197b:2363 (rev 02)
04:00.0 Class 0200: Unknown device 10ec:8168 (rev 01)
05:06.0 Class 0c00: Unknown device 104c:8024

Fix

Don't despair! If you're running Debian or a Debian-like operating system, just say this:

sudo update-pciids

You should get something like this:

--18:40:39--  http://pciids.sourceforge.net/v2.2/pci.ids.bz2
           => `/usr/share/misc/pci.ids.new'
Resolving pciids.sourceforge.net... 66.35.250.209
Connecting to pciids.sourceforge.net|66.35.250.209|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 127,849 (125K) [text/plain]

100%[

=
===========>] 127,849 20.00K/s ETA 00:00 18:40:48 (19.97 KB/s) - `/usr/share/misc/pci.ids.new' saved [127849/127849] Done.

After this, try lspci again, and you should get something more elucidating.

Discussion

The program lspci uses a user-space database to resolve PCI vendor:device pairs to human-readable strings. It spawns wget to download this from SourceForge, and places it in /usr/share/misc/pci.ids. The database is a text file, and you can see it with your favourite viewer.

Far Too Frequently Asked Questions

Does ‘Unknown Device’ mean my device is unsupported?

No, it only means that the command lspci doesn't know the right name of your device. The operating system itself tells devices apart by their numeric IDs (the two numbers like 8086:1234). The textual name is only maintained for the benefit of us humans.

If I do this, will it make my unsupported devices supported?

No. See above.

===If I don't do this, will it make my otherwise supported devices fail somehow?=== No. See above.

Does this work for PCI Express, PCI-X, 64-bit PCI et cetera?

Yes, it'll work on all devices that are listed by lspci — even though some of them aren't ‘simple’ PCI.