ACPI wakeup 4-letters code meaning?

The codes come from the DSDT (Differentiated System Description Table) of your BIOS. This "table" describes the integrated devices on your mainboard, their dependencies and power-management functions.

Devices in the DSDT are arranged in a tree and each path component is limited to 4 characters. The codes in /proc/acpi/wakeup are the last path components (aka the names) of the devices the vendor used for the devices.

They are inherently vendor-specific, as the vendor may name any device as he likes. But there are some names that are common between many vendors, either because they are used as examples in the ACPI specification or because they are obvious abbreviations:

  • PS2K: PS/2 keyboard
  • PS2M: PS/2 mouse
  • PWRB or PBTN: Power button
  • LID: Laptop lid
  • RP0x or EXPx: PCIE slot #x (aka PCI Express Root Port #x)
  • EHCx or USBx: USB 2.0 (EHCI) chip
  • XHC: USB 3.0 (XHCI) chip
  • PEGx: PCI Express for Graphics slot #x
  • GLAN: Gigabit Ethernet

The linux kernel documentation on acpi namespace gives some tantalising hints on what these abbreviations might be, eg "Scope(RP03): the PCI0 power scope", and the kernel source for the /proc file says it is a dev->pnp.bus_id, but that doesn't help.

The 958 page acpi spec 5.0 is very interesting, but no help on these names either.


You could extract and decompile ACPI table for your computer.

By use Intel's ASL compiler, you could turn your systems DSDT table into source code.

You'll need to install acpica-tools:

  • Ubuntu: sudo apt-get install acpica-tools
  • Arch Linux: sudo pacman -S --needed acpica

Here are the steps:

  1. Extract ACPI tables (as root): sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
  2. Decompile: iasl -d dsdt.dat, we get output file dsdt.dsl
  3. Find device defined in /proc/acpi/wakeup and compare it with dsdt.dsl

References

  • Arch Linux Wiki - DSDT