How it works
The firmware uses ACPI tables to describe the devices that the operating system cannot discover on its own, such as the battery, buttons, sensors, I²C controllers or the TPM. Each one carries a hardware identifier (_HID) made up of a manufacturer prefix and four hexadecimal digits chosen by that manufacturer.
Prefixes are assigned by the UEFI Forum in two registries: the PNP ID registry, with three letters, and the ACPI ID registry, with four characters. This tool looks up the prefix in both registries and, for the standard identifiers defined by Microsoft and the ACPI specification, also tells you which device it is.
Examples
ACPI\PNP0A08Microsoft — PCI Express Root BridgeWindows Device Manager format. PNP0xxx identifiers are generic identifiers that any manufacturer can use.ACPI\VEN_INT&DEV_33A1Intel Corporation — Intel Power Engine Plug-in (Modern Standby)VEN_/DEV_ form that Windows uses in hardware IDs. Intel has used the INT prefix since before the ACPI ID registry existed.Name (_HID, EisaId ("PNP0C0A"))PNP0C0A — Control Method Battery — EisaId 0x0A0CD041A line from a disassembled DSDT table. The tool also accepts the compressed integer generated by EisaId.10EC5640Realtek Semiconductor Co., Ltd.Some manufacturers use the vendor ID assigned to them by PCI-SIG as their prefix; in that case the manufacturer comes from the PCI catalog.Use cases
- Identify an unknown device in Device Manager whose hardware ID starts with ACPI\.
- Find the right driver for the sensors, buttons or I²C controllers of a laptop from their _HID.
- Interpret the devices declared in a DSDT or SSDT table when debugging firmware or writing an ACPI patch.
- Find out which company corresponds to the three-letter manufacturer code that a monitor reports in its EDID.
Frequently asked questions
Where do I find a device's ACPI identifier?
On Windows, in the device properties within Device Manager, Details tab, "Hardware Ids" property. On Linux, each device appears as a folder in /sys/bus/acpi/devices with its identifier in the name, and the hid file in that folder contains it. In the firmware tables, disassembled with acpidump and iasl, it is the _HID object of each device.
Why does it find the manufacturer but not the device?
The UEFI Forum registries only assign the prefix. What the four digits that follow mean is decided by each manufacturer, and there is no public catalog like the ones for PCI or USB. The device is only known for standard identifiers, such as Microsoft's PNP0xxx or the specification's ACPI00xx, and for a few very widespread ones.
What is the difference between a PNP ID and an ACPI ID?
A PNP ID has a three-letter prefix and comes from the Plug and Play of the nineties; the same codes identify a monitor's manufacturer in the EDID. An ACPI ID has a prefix of four letters or digits and is the current format. Both carry four hexadecimal digits after the prefix.
What is the compressed EisaId?
In the ASL language, the EisaId macro converts a PNP ID into a 32-bit integer: each letter takes up five bits and the product number takes up the next two bytes. That is why, when disassembling a table, a number such as 0x0A0CD041 sometimes appears instead of PNP0C0A. The tool accepts that number and shows the compressed form of any PNP ID.
How often is the data updated?
The tool uses a copy of the ACPI ID and PNP ID registries published by the UEFI Forum and refreshes it periodically. Next to the result it shows the date of that copy and the date on which the prefix was approved.