Overview of ACPI Component Architecture

Overview

ACPI Component Architecture (ACPICA) is a reference implementation of the Advanced Configuration and Power Interface (ACPI) specification. This implementation simplifies complex ACPI operating system implementations by integrating it directly as a kernel-resident subsystem, without changes to the core ACPICA code.

Why ACPICA?

With advanced power management (APM), power management is controlled by the BIOS independently of the operating system. When BIOS settings are exceeded, the BIOS turns off the screen or shuts down the hard drive. This creates an imperfect power management policy because it requires reimplementing the policy for each platform. Plug and play BIOS (PNPBIOS) specification is also unreliable.

With ACPI, power management moves from the BIOS to the operating system. 

ACPICA code is fairly mature and implements the following:

How It Works

What's Included

Major kernel-level components:

User-space tools and utilities:

Note

The ACPICA components run in both kernel mode and user mode.

System Requirements

For more details, see the ACPI specifications.

Environments

ACPICA is written in ANSI C and can be generated under many different 32-bit and 64-bit operating system development environments. Source code packages are provided in UNIX format (.tar.gz and .zip), together with prebuilt Linux binaries of the ACPICA utilities.

Note

Windows source packages, Visual C++ project files and Windows binaries are no longer provided, starting with version 20260930.

There is no stand-alone Linux source code package since ACPICA updates for Linux are provided periodically in patch form. The ACPICA subsystem is modified to integrate smoothly with the Linux kernel source. This includes conversion of the ACPICA source code to the Linux kernel coding standard. In the Linux kernel, ACPICA is dual-licensed under the BSD-3-Clause or GPL-2.0 licenses.

ACPICA is licensed under the BSD-3-Clause or the GPL-2.0-only license, at your option.

News

Date Description
2026.09.30 ACPICA is now licensed under BSD-3-Clause OR GPL-2.0-only
2026.09.30 Windows packages are discontinued; Linux binaries are published on GitHub
2026.09.30 iASL: Added support for the KEYP, MISC and UBRT ACPI tables
2025.12.12 Many existing ACPI tables updated to follow the ACPI 6.6 specification
2024.08.27 The ACPI Reduced Hardware mode now supports waking up from the S3 state fully
2023.03.31 iASL preprocessor now supports #define macros (single-line)
2022.03.31 All Windows binaries are now digitally signed
2021.12.17 iASL: Added support for the NHLT, AGDI, and TDEL ACPI tables
2021.06.04 iASL: Added support for the PRMT, BDAT, RGRT, SVKL and IVRS ACPI tables.
2021.04.01 ACPI 6.4 is now supported in ACPICA version 20210331.

View All Releases

Support

For all ACPICA developer discussions, issues, and source code patches, subscribe to this discussion.

To report ACPICA kernel-resident subsystem and ACPICA tools or utility issues, submit your issue on GitHub. 

FAQ

What is AML? What is ASL?

AML stands for ACPI Machine Language. This is a binary pseudo-code format, which the operating system's ACPI AML interpreter parses to discover the machine's properties. Since most BIOS implementers do not like to write in binary, the ACPI specification also includes ASL (ACPI Source Language). System designers describe their system in ASL. It is then compiled into AML and included in the system's flash BIOS. Then, on boot, the BIOS startup code copies it into RAM, where it can be interpreted by the OS's ACPI AML interpreter.

How often is ACPICA updated?

ACPICA is actively maintained and updated. Releases occur approximately every three to four months and contain new features and bug fixes. ACPICA also closely tracks new releases of the ACPI specification.

Which operating systems use ACPICA to enable ACPI?

Except for Windows, almost all operating systems use the ACPICA code base to enable ACPI for power management and configuration, as well as the iASL compiler to write BIOS implementations.

How is the ACPICA source code licensed?

Starting with version 20260930, ACPICA is licensed under the BSD-3-Clause or the GPL-2.0-only license, at your option. Each source file carries the SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0-only header and the full license texts are included in the LICENSE.BSD-3-Clause and LICENSE.GPL-2.0-only files.

What is the implicit return issue?

The AML definition blocks in some systems contain an error, where the AML return operator is not used to return a value from a control method. Some ACPI-defined control methods (for example, _STA) must always return a value. Due to errata, this bug does not manifest itself on Windows' ACPI implementations and therefore was not detected when OEMs tested their systems using that OS. ACPICA implements a "slack mode" that enables these implicit returns.