Hoe het werkt
De firmware beschrijft met ACPI-tabellen de apparaten die het besturingssysteem niet zelf kan ontdekken, zoals de batterij, de knoppen, de sensoren, de I²C-controllers of de TPM. Elk apparaat heeft een hardware-ID (_HID), bestaande uit een fabrikantprefix en vier hexadecimale cijfers die die fabrikant kiest.
De prefixen worden door het UEFI Forum toegewezen in twee registers: dat van PNP ID's, van drie letters, en dat van ACPI ID's, van vier tekens. Deze tool zoekt het prefix in beide registers en vertelt je voor de standaard-ID's die Microsoft en de ACPI-specificatie definiëren ook welk apparaat het is.
Voorbeelden
ACPI\PNP0A08Microsoft — PCI Express Root BridgeIndeling van Apparaatbeheer van Windows. De PNP0xxx zijn generieke ID's die elke fabrikant mag gebruiken.ACPI\VEN_INT&DEV_33A1Intel Corporation — Intel Power Engine Plug-in (Modern Standby)VEN_/DEV_-vorm die Windows gebruikt in hardware-ID's. Intel gebruikt het prefix INT al van vóór het bestaan van het ACPI ID-register.Name (_HID, EisaId ("PNP0C0A"))PNP0C0A — Control Method Battery — EisaId 0x0A0CD041Regel uit een gedisassembleerde DSDT-tabel. De tool accepteert ook het gecomprimeerde gehele getal dat EisaId genereert.10EC5640Realtek Semiconductor Co., Ltd.Sommige fabrikanten gebruiken als prefix de vendor ID die PCI-SIG hun heeft toegewezen; in dat geval komt de fabrikant uit de PCI-catalogus.Gebruiksscenario's
- Een onbekend apparaat in Apparaatbeheer identificeren waarvan de hardware-ID begint met ACPI\.
- Het juiste stuurprogramma vinden voor sensoren, knoppen of I²C-controllers van een laptop op basis van hun _HID.
- De apparaten interpreteren die in een DSDT- of SSDT-tabel zijn gedeclareerd bij het debuggen van de firmware of het schrijven van een ACPI-patch.
- Weten welk bedrijf hoort bij de fabrikantcode van drie letters die een monitor in zijn EDID rapporteert.
Veelgestelde vragen
Waar vind ik de ACPI-ID van een apparaat?
In Windows, in de apparaateigenschappen in Apparaatbeheer, tabblad Details, eigenschap "Hardware-ID's". In Linux verschijnt elk apparaat als een map in /sys/bus/acpi/devices met zijn ID in de naam, en het bestand hid in die map bevat die ID. In de firmwaretabellen, gedisassembleerd met acpidump en iasl, is het het _HID-object van elk apparaat.
Waarom vindt het de fabrikant, maar niet het apparaat?
De registers van het UEFI Forum wijzen alleen het prefix toe. Wat de vier volgende cijfers betekenen, bepaalt elke fabrikant zelf, en er bestaat geen openbare catalogus zoals die van PCI of USB. Het apparaat is alleen bekend bij de standaard-ID's, zoals de PNP0xxx van Microsoft of de ACPI00xx van de specificatie, en bij enkele zeer gangbare.
Wat is het verschil tussen een PNP ID en een ACPI ID?
De PNP ID heeft een prefix van drie letters en stamt uit de Plug and Play van de jaren negentig; dezelfde codes identificeren de fabrikant van een monitor in de EDID. De ACPI ID heeft een prefix van vier letters of cijfers en is het huidige formaat. Beide hebben vier hexadecimale cijfers na het prefix.
Wat is de gecomprimeerde EisaId?
In de taal ASL zet de macro EisaId een PNP ID om in een geheel getal van 32 bits: elke letter neemt vijf bits in beslag en het productnummer de twee volgende bytes. Daarom verschijnt bij het disassembleren van een tabel soms een getal als 0x0A0CD041 in plaats van PNP0C0A. De tool accepteert dat getal en toont de gecomprimeerde vorm van elke PNP ID.
Hoe vaak worden de gegevens bijgewerkt?
De tool gebruikt een kopie van de registers van ACPI ID's en PNP ID's die het UEFI Forum publiceert en vernieuwt die periodiek. Naast het resultaat worden de datum van die kopie en de datum waarop het prefix is goedgekeurd weergegeven.