I have written a lot about the hardware IDs but i haven’t said much about submitting new entries to the upstream databases. Indeed, the package just mirrors the data that is collected by the USB and PCI databases that are managed by Stephen, Martin and Michal.
As an example, I’ll show you how I’ve been submitting the so-called Subsystem IDs for PCI devices from computers I either own, or fix up for customers and friends.
First off, you have to find a system or device whose subsystem IDs have not been submitted yet. Unfortunately I don’t have any computer at hand that I haven’t submitted to the database already. But fear not — it so happens I had an interesting opening. I rented a server from OVH recently, as I’ve had some trouble with one of my production hosts lately, and I’m entertaining the idea of moving everything on a new server and service altogether. But the whole thing is a topic for a completely different time. In any case, let’s see what we can do about these IDs now that I have an interesting system at hand.
First of all, while I don’t have the server at hand to know what’s in it, OVH does tell me what hardware is on it — in particular they tell me it’s an Intel D425KT board (yes I got a Kimsufi Atom, I got the three months lease for now and I’ll see if it can perform decently enough), so that’s a start. Alternatively, I could have asked dmidecode
— but I just don’t have it installed on that server right now.
First step is to look at what lspci -v
says:
00:00.0 Host bridge: Intel Corporation Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
Subsystem: Intel Corporation Device 544b
Flags: bus master, fast devsel, latency 0
Capabilities: [e0] Vendor Specific Information: Len=08 <?>
This is of course only the first entry in the list but it’s still something. You can see on the second line that it says “Subsystem: Intel Corporation Device 544b” — that means that it knows the subsystem vendor (ID 8086, I can tell you by heart — they have been funny at that), but it doesn’t know the subsystem device. So it’s what we’re looking for: an unknown system! Time to compare the output of lspci -vn
— that one does not resolve the IDs, since we’ll need them to submit to the PCI database so if you’re not registered already, do register so that they can be submitted to begin with.
00:00.0 0600: 8086:a000
Subsystem: 8086:544b
Flags: bus master, fast devsel, latency 0
Capabilities: [e0] Vendor Specific Information: Len=08 <?>
Okay so now we know that our first device is Intel’s (VID 8086) and has a000 as device ID — this brings us to https://pci-ids.ucw.cz/read/PC/8086/a000 easy, isn’t it? At the end of the page there’s a list of the known subsystem IDs; pending submissions does not show up the name, but they show up in the table with a darker gray background. All PCI ID entries are moderated by hand by the database’ s maintainers. When you’ll be reading this, the entry for my board will be in already, but right now it isn’t — if it wasn’t obvious, I’m looking for an entry that reads 8086 544b (which is under “Subsystem” above).
Now the form requires just a few words: the ID itself – which is 8086 544b with a space, not a colon – and a name. Note is for something that needs to be written on the pci.ids
, so in most cases need to be empty. Discussion if when you wan tot comment on the certainly of your submission; for my laptop for instance we had some trouble with “Intel Corporation Device 0153” — which is now officially “3rd Gen Core Processor Thermal Subsystem”.
The name I’m going to submit is “Desktop Board D425KT” as that’s what the other entry in the database for that device uses as a format — okay it actually uses DeskTop but I’d rather not capitalize another T and see a kitten cry.
Now it’s time to go through all the other entries in the system — yes there are many of them, and most of the time the IDs are not set in the order of the PCI connections, so be careful. More interestingly, not all the subsystems are going to be listed in the same line. Indeed, the third entry that I have is this:
00:1c.0 0604: 8086:27d0 (rev 01) (prog-if 00 [Normal decode])
Flags: bus master, fast devsel, latency 0
Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
I/O behind bridge: 00001000-00001fff
Memory behind bridge: e0f00000-e12fffff
Prefetchable memory behind bridge: 00000000e0000000-00000000e00fffff
Capabilities: [40] Express Root Port (Slot+), MSI 00
Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
Capabilities: [90] Subsystem: 8086:544b
Capabilities: [a0] Power Management version 2
Capabilities: [100] Virtual Channel
Capabilities: [180] Root Complex Link
Kernel driver in use: pcieport
The subsystem ID is listed under “Capabilities” instead — but it’s always the same. This is actually critical: if the subsystem does not match, it means that it’s coming from a different component — for instance if you’re building your own computer, the subsystem of the internal CPU devices and those of the motherboard will not match, as they come from different vendors. And so would happen to add-on cards (PCI, PCI-E, AGP, …).
Sometimes, a different subsystem is also available on internal components that get different names from the motherboard itself — in this case, the Realtek network card on this motherboard reports a completely different ID and I really don’t know how to submit it:
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 05)
Subsystem: Intel Corporation Device d626
Flags: bus master, fast devsel, latency 0, IRQ 44
I/O ports at 1000 [size=256]
Memory at e0004000 (64-bit, prefetchable) [size=4K]
Memory at e0000000 (64-bit, prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 01-00-00-00-36-4c-e0-00
Kernel driver in use: r8169
If for whatever reason you make a mistake, you can click on the “Discuss” link on the submitted content and edit the name that you want to submit. I did make such a mistake during submitting the IDs for this.
So here are the tricks.. happy submission!
Hmm. Does the below mean that all devices here (except for one, the Xonar) are unknown?lspci -v | grep Subsystem Subsystem: Micro-Star International Co., Ltd. Device 7681 Capabilities: [88] Subsystem: Micro-Star International Co., Ltd. Device 7681 Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: Micro-Star International Co., Ltd. Device 7673 Capabilities: [90] Subsystem: Micro-Star International Co., Ltd. Device 7673 Capabilities: [90] Subsystem: Micro-Star International Co., Ltd. Device 7673 Capabilities: [90] Subsystem: Micro-Star International Co., Ltd. Device 7673 Capabilities: [90] Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: eVga.com. Corp. Device 1561 Subsystem: eVga.com. Corp. Device 1561 Capabilities: [c0] Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: ASUSTeK Computer Inc. Virtuoso 100 (Xonar D1) Subsystem: Philips Semiconductors Device 203e Subsystem: Micro-Star International Co., Ltd. Device 7673 Subsystem: Micro-Star International Co., Ltd. Device 7673
It seems that way. And I don’t remember seeing them applied lately (I would see them when I update hwids) so they are worth submitting if you know for sure what they are!For what it’s worth, that server’s PCI devices have been accepted, and will be available from hwids-20130107 onward.
Well, I locked myself out. Heh. I included the vendor in the name, which shouldn’t be done, so I requested deletion. Then I tries to submit the correct name, but it won’t allow it, since the “submission already exists.”It doesn’t look like they thought this through with the web design 😛
As I said at the bottom of the post, if you need to submit a new value because of a mistake, you just need to click “Discuss” 🙂
I have a HP proliant dl380 gen8 with many devices showing up with unknown device IDs. It seems there are three IDs but they repeat: 18a8 (136 times), 18a9 (7 times), and 169d (4 times, seems to be the broadcom NICs, but show up as HP devices).Not really sure how to submit all these, but it would probably be useful. Suggestions are welcome.