How do I sanity check my ACPI tables?
Solution 1:
Fortunately there are tools available for this.
fwts
This is the firmware test suite, designed to interrogate and look at BIOS + ACPI firmware bugs. Several tests are available in the latest development version.
Installation:
A quick check of Ubuntu Packages indicates that we must first enable the universe repository if it isn't already enabled.
Then we install either via the Software Center or with the command:
sudo apt-get install fwts
fwts can run several useful tests.
Perhaps the one used most often is the interactive test which tests backlight, brightness and battery. This one is launched with the command:
sudo fwts --interactive
And results in the following.
Running 6 tests, results appended to results.log
==== Please press the laptop power button. ====
==== Setting backlight to a low level ====
==== Is the Backlight now set to a dim level? [Y/N]:
==== Setting backlight to highest level ====
==== Is the Backlight now set to a bright level? [Y/N]:
==== Backlight will now slowly transition from dim to bright ====
==== Did the backlight go from dim to bright? [Y/N]:
==== Press the brightness UP hotkey for acpi_video0 ====
==== Press the brightness DOWN hotkey for acpi_video0 ====
==== Make sure laptop is connected to the mains power. ====
Press <Enter> to continue
==== Please unplug the laptop power. ====
==== Please re-connect the laptop power. ====
The results of your tests can be found in the directory that you launched fwts from in the file results.log
The results from an Acer Aspire D270-1865 are as follows:
Results generated by fwts: Version V16.03.00 (2016-03-14 09:10:20).
Some of this work - Copyright (c) 1999 - 2016, Intel Corp. All rights reserved.
Some of this work - Copyright (c) 2010 - 2016, Canonical.
This test run on 25/07/17 at 18:44:34 on host Linux me-AOD270 4.4.0-78-generic
#99-Ubuntu SMP Thu Apr 27 15:29:09 UTC 2017 x86_64.
Command: "fwts --interactive".
Running tests: hotkey power_button lid brightness battery ac_adapter.
hotkey: Hotkey scan code tests.
--------------------------------------------------------------------------------
Cannot determine keymap for this machine.
Aborted test, initialisation failed.
================================================================================
0 passed, 0 failed, 0 warning, 1 aborted, 0 skipped, 0 info only.
================================================================================
power_button: Interactive power_button button test.
--------------------------------------------------------------------------------
Test 1 of 1: Test press of power button and ACPI event.
PASSED: Test 1, Detected PBTN power button event.
================================================================================
1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only.
================================================================================
lid: Interactive lid button test.
--------------------------------------------------------------------------------
Test 1 of 3: Test LID buttons report open correctly.
PASSED: Test 1, Detected open LID state.
Test 2 of 3: Test LID buttons on a single open/close.
Got 2 SCI interrupt(s).
Got 2 interrupt(s) on GPE gpe11.
Got 2 interrupt(s) on GPE gpe_all.
PASSED: Test 2, Detected ACPI LID events while waiting for LID to closed.
PASSED: Test 2, Detected lid closed state.
Got 6 SCI interrupt(s).
Got 1 interrupt(s) on GPE gpe01.
Got 1 interrupt(s) on GPE gpe02.
Got 5 interrupt(s) on GPE gpe11.
Got 7 interrupt(s) on GPE gpe_all.
PASSED: Test 2, Detected ACPI LID events while waiting for LID to open.
PASSED: Test 2, Detected lid open state.
Test 3 of 3: Test LID buttons on multiple open/close events.
Some machines may have EC or ACPI faults that cause detection of multiple open
/close events to fail.
Got 2 SCI interrupt(s).
Got 2 interrupt(s) on GPE gpe11.
Got 2 interrupt(s) on GPE gpe_all.
PASSED: Test 3, Detected ACPI LID events while waiting for LID to closed.
PASSED: Test 3, Detected lid closed state.
Got 2 SCI interrupt(s).
Got 2 interrupt(s) on GPE gpe11.
Got 2 interrupt(s) on GPE gpe_all.
PASSED: Test 3, Detected ACPI LID events while waiting for LID to open.
PASSED: Test 3, Detected lid open state.
Got 2 SCI interrupt(s).
Got 2 interrupt(s) on GPE gpe11.
Got 2 interrupt(s) on GPE gpe_all.
PASSED: Test 3, Detected ACPI LID events while waiting for LID to closed.
PASSED: Test 3, Detected lid closed state.
Got 7 SCI interrupt(s).
Got 1 interrupt(s) on GPE gpe01.
Got 6 interrupt(s) on GPE gpe11.
Got 7 interrupt(s) on GPE gpe_all.
PASSED: Test 3, Detected ACPI LID events while waiting for LID to open.
PASSED: Test 3, Detected lid open state.
Got 2 SCI interrupt(s).
Got 2 interrupt(s) on GPE gpe11.
Got 2 interrupt(s) on GPE gpe_all.
PASSED: Test 3, Detected ACPI LID events while waiting for LID to closed.
PASSED: Test 3, Detected lid closed state.
Got 2 SCI interrupt(s).
Got 2 interrupt(s) on GPE gpe11.
Got 2 interrupt(s) on GPE gpe_all.
PASSED: Test 3, Detected ACPI LID events while waiting for LID to open.
PASSED: Test 3, Detected lid open state.
================================================================================
17 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only.
================================================================================
brightness: Interactive LCD brightness test.
--------------------------------------------------------------------------------
Test 1 of 3: Observe all brightness changes.
PASSED: Test 1, Backlight psb-bl set to dim level.
PASSED: Test 1, Backlight psb-bl set to bright level.
PASSED: Test 1, Backlight acpi_video0 set to dim level.
PASSED: Test 1, Backlight acpi_video0 set to bright level.
Test 2 of 3: Observe min, max brightness changes.
PASSED: Test 2, Backlight psb-bl was observed going from dim to bright.
PASSED: Test 2, Backlight acpi_video0 was observed going from dim to bright.
Test 3 of 3: Test brightness hotkeys.
FAILED [HIGH] BrightnessNoIncrease: Test 3, Did not see brightness increased for
psb-bl.
FAILED [HIGH] BrightnessNoDecrease: Test 3, Did not see brightness decrease for
psb-bl.
FAILED [HIGH] BrightnessNoIncrease: Test 3, Did not see brightness increased for
acpi_video0.
FAILED [HIGH] BrightnessNoDecrease: Test 3, Did not see brightness decrease for
acpi_video0.
================================================================================
6 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 info only.
================================================================================
battery: Battery tests.
--------------------------------------------------------------------------------
Test 1 of 1: Battery test.
This test reports which (if any) batteries there are in the system. In addition,
for charging or discharging batteries, the test validates that the reported
'current capacity' properly increments/decrements in line with the charge
/discharge state. This test also stresses the battery state reporting codepath
in the ACPI BIOS, and any warnings given by the ACPI interpreter will be
reported.
Found 1 batteries.
Test battery 'BAT1'.
Got 12 SCI interrupt(s).
Got 12 interrupt(s) on GPE gpe11.
Got 12 interrupt(s) on GPE gpe_all.
PASSED: Test 1, Detected ACPI battery events.
FAILED [HIGH] BatteryNoEvents: Test 1, Could not detect ACPI events for battery
BAT1.
PASSED: Test 1, Battery BAT1 charge is decrementing as expected.
Got 6 SCI interrupt(s).
Got 6 interrupt(s) on GPE gpe11.
Got 6 interrupt(s) on GPE gpe_all.
PASSED: Test 1, Detected ACPI battery events.
FAILED [HIGH] BatteryNoEvents: Test 1, Could not detect ACPI events for battery
BAT1.
PASSED: Test 1, Battery BAT1 charge is incrementing as expected.
Please ignore this error with a new battery
FAILED [LOW] BatteryZeroCycleCount: Test 1, System firmware may not support
cycle count interface or it reports it incorrectly for battery BAT1.
Test battery 'BAT1' downward trip point.
Got 4 SCI interrupt(s).
Got 4 interrupt(s) on GPE gpe11.
Got 4 interrupt(s) on GPE gpe_all.
PASSED: Test 1, Detected ACPI battery events.
FAILED [HIGH] BatteryNoEvents: Test 1, Could not detect ACPI events for battery
BAT1.
Test battery 'BAT1' upwards trip point.
FAILED [HIGH] NoSCIInterrupts: Test 1, Did not detect any SCI interrupts.
FAILED [HIGH] NoGPEInterrupts: Test 1, Did not detect any GPE interrupts.
FAILED [HIGH] BatteryNoEvents: Test 1, Did not detect any ACPI battery events.
================================================================================
5 passed, 7 failed, 0 warning, 0 aborted, 0 skipped, 0 info only.
================================================================================
ac_adapter: Interactive ac_adapter power test.
--------------------------------------------------------------------------------
Test 1 of 3: Test ACPI ac_adapter state.
PASSED: Test 1, Detected a state in the ac_adapter state info.
Test 2 of 3: Test ac_adapter initial on-line state.
PASSED: Test 2, Detected ac_adapter on-line state.
Test 3 of 3: Test ac_adapter state changes.
PASSED: Test 3, Detected ac_adapter off-line state.
PASSED: Test 3, Detected ac_adapter on-line state.
================================================================================
4 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only.
================================================================================
33 passed, 11 failed, 0 warning, 1 aborted, 0 skipped, 0 info only.
Test Failure Summary
================================================================================
Critical failures: NONE
High failures: 8
brightness: Did not see brightness increased for psb-bl.
brightness: Did not see brightness decrease for psb-bl.
brightness: Did not see brightness increased for acpi_video0.
brightness: Did not see brightness decrease for acpi_video0.
battery: Could not detect ACPI events for battery BAT1.
battery: Did not detect any SCI interrupts.
battery: Did not detect any GPE interrupts.
battery: Did not detect any ACPI battery events.
Medium failures: NONE
Low failures: 1
battery: System firmware may not support cycle count interface or it reports it incorrectly for battery BAT1.
Other failures: NONE
Test |Pass |Fail |Abort|Warn |Skip |Info |
---------------+-----+-----+-----+-----+-----+-----+
ac_adapter | 4| | | | | |
battery | 5| 7| | | | |
brightness | 6| 4| | | | |
hotkey | | | 1| | | |
lid | 17| | | | | |
power_button | 1| | | | | |
---------------+-----+-----+-----+-----+-----+-----+
Total: | 33| 11| 1| 0| 0| 0|
---------------+-----+-----+-----+-----+-----+-----+
An alternative is acpiexec
from the acpica-tools package. This package also requires that we enable the universe repository in order to install it either via the Software Center or with the command:
sudo apt-get install acpica-tools
For more information on this alternative see the sources below:
Sources:
https://wiki.ubuntu.com/Kernel/Reference/ACPITricksAndTips
https://acpica.org/documentation/
https://www.systutorials.com/docs/linux/man/1-acpiexec/