Acpi Prp0001 0

acpi PRP0001:00: No compatible string found in _DSD

The ACPI node is missing the compatible property, so the kernel doesn't know which driver to load. The device is ignored.


If you are troubleshooting or writing a driver, you can find the real identity of acpi:prp0001:0 by checking the system logs or sysfs.

Method A: Using dmesg Run dmesg | grep -i prp0001. You will often see output similar to this:

acpi PRP0001:00: bus: acpi type: hid:PRP0001
acpi PRP0001:00: driver: gpio_keys

This example would indicate that the device is a set of GPIO keys (power buttons, lid switch, etc.).

Method B: Using sysfs (Recommended) You can inspect the device properties directly to see what the firmware intended it to be. acpi prp0001 0

In ACPI, every device in the namespace (\_SB_, \_SB_.PCI0, etc.) has a Hardware ID (HID) – a string like PNP0C09 (embedded controller) or ACPI000C (PPTT table). The HID allows the OS to load the correct driver.

PRP0001 is a special, Microsoft-defined Compatible ID (CID). Its definition:

"Device is compatible with a Device Tree node having a given 'compatible' property."

When an ACPI device node includes:

Name (_HID, "PRP0001")
Name (_DSD, Package() 
    ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
    Package() 
        Package() "compatible", "my-vendor,my-device",
)

…the Linux kernel interprets this as: "Ignore the PRP0001 HID; instead, match this device against a Device Tree driver that expects my-vendor,my-device in its .compatible table."

Parsing the _DSD for PRP0001 devices adds cycles. On a real-time embedded system with tens of pseudo-devices, disabling PRP0001 can shave tens of milliseconds from the boot sequence – critical for safety-critical initialization.

The 0 is just the instance number.
If you had multiple devices using PRP0001, you'd see PRP0001:0, PRP0001:1, etc.

So acpi prp0001 0 means:

“ACPI device with HID PRP0001 and instance 0.”


Advanced users and firmware developers can add a PRP0001 device to their ACPI tables using an SSDT (Secondary System Description Table). With iasl, you can write:

DefinitionBlock ("ssdt.aml", "SSDT", 2, "HACK", "PRP0001", 0x00000001)
External (_SB_.I2C0, DeviceObj)
    Scope (_SB.I2C0)
Device (SENS)
Name (_HID, "PRP0001")
            Name (_DSD, Package () 
                ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
                Package () 
                    Package ()  "compatible", "bosch,bme280" ,
                    Package ()  "reg", 0x77 ,
)

Compile (iasl ssdt.asl) and load via cat ssdt.aml > /sys/kernel/config/acpi/table/ssdt1.

Caution: Messing with ACPI tables can cause boot failures, kernel panics, or hardware damage. Only attempt on test systems. acpi PRP0001:00: No compatible string found in _DSD


Reviews

There are no reviews yet.