ACPI (Advanced Configuration and Power Interface) to standard definiujący interfejs między firmware BIOS/UEFI a systemem operacyjnym w zakresie konfiguracji sprzętu i zarządzania zasilaniem. Tabele ACPI generowane przez firmware opisują topologię sprzętową laptopa: procesory, urządzenia PCI, gniazda RAM, czujniki temperatury, wentylatory i inne komponenty. Błędy w tabelach ACPI powodowane przez uszkodzone firmware są źródłem trudnych do zdiagnozowania problemów z zasilaniem, sleep/wake i wydajnością procesora.
Znajomość ACPI i jego roli w firmware jest zaawansowaną, ale niezbędną wiedzą dla techników serwisu firmware laptopów, szczególnie przy problemach z zarządzaniem energią i stabliznością systemu.
Tabele ACPI i ich rola
Firmware BIOS/UEFI generuje zestaw tabel ACPI podczas startu, które są przekazywane do systemu operacyjnego: DSDT (Differentiated System Description Table) – główna tabela opisująca urządzenia i metody zarządzania zasilaniem, SSDT (Secondary System Description Table) – dodatkowe tabele, m.in. dla wirtualizacji i debugowania, MADT (Multiple APIC Description Table) – konfiguracja przerwań procesora, FACS/FADT (Fixed ACPI Description Table) – globalne ustawienia zasilania, BERT/HEST – tabele raportowania błędów sprzętowych.
System operacyjny (Windows, Linux) czyta te tabele i na ich podstawie inicjalizuje sterowniki, konfiguruje zarządzanie energią i definiuje dostępne stany zasilania (S0 aktywny, S3 Sleep, S4 Hibernacja, S5 Soft Off). Błędy lub niezgodności w tabelach ACPI mogą powodować nieprawidłową inicjalizację sterowników, problemy z uśpieniem czy nieprawidłowe raportowanie temperatury.
Problemy ACPI wynikające z uszkodzonego firmware
Typowe problemy wynikające z błędów ACPI w firmware: system nie wchodzi w stan S3 Sleep (błąd w metodzie ACPI _S3D lub brak deklaracji S3 w FADT), laptop wybudza się losowo ze snu (błędna konfiguracja ACPI Wake timers lub GPE – General Purpose Events), temperatura CPU lub GPU jest raportowana błędnie przez system (uszkodzone metody ACPI dla termistorów – _TMP, _CRT), wolna lub niestabilna praca procesora (błędna konfiguracja P-States w ACPI _PSS – Performance Supported States), oraz brak możliwości hibernacji (brak lub uszkodzona partycja Hibernate File w konfiguracji FACS).
Diagnoza błędów ACPI jest możliwa przez analizę zdarzeń systemu Windows (Event Viewer → Dzienniki aplikacji i usług → Microsoft → Windows → ACPI), lub przez narzędzia linuksowe (acpidump, iasl) analizujące binarne tabele ACPI.
Naprawa błędów ACPI w firmware
Naprawa problemów ACPI zazwyczaj polega na aktualizacji firmware do nowszej wersji, w której producent poprawił błędy w tabelach ACPI. Producenci regularnie wydają aktualizacje firmware poprawiające DSDT/SSDT – nieaktualne firmware jest jedną z głównych przyczyn problemów z zarządzaniem energią w nowszych wersjach Windows.
W zaawansowanych przypadkach, możliwa jest modyfikacja tabel ACPI – wyodrębnienie DSDT z obrazu firmware, dekompilacja (iasl -d), edycja, rekompilacja i wgranie z powrotem do firmware. Jest to operacja wysoce zaawansowana, wymagająca znajomości języka ASL (ACPI Source Language) i architektury ACPI, wykonywana wyłącznie przez specjalistów. Dla systemu Linux dostępna jest też metoda dynamicznego ładowania poprawionego DSDT bez modyfikacji firmware (przez initrd).
Weryfikacja ACPI po naprawie firmware
Po naprawie lub aktualizacji firmware, weryfikujemy działanie zarządzania zasilaniem: test wchodzenia w sen i wybudzania (kilka cykli S3 bez problemów), test hibernacji S4, sprawdzenie raportowanych temperatur przez HWiNFO, weryfikację P-States procesora przez CPU-Z lub Windows Performance Monitor. Aktywność stanów C-States (głębokiego uśpienia rdzeni procesora w bezczynności) weryfikujemy przez narzędzie powercfg /sleepstudy w Windows, które raportuje efektywność zarządzania energią.