Problem with LCD brightness buttons

From ThinkWiki
Revision as of 21:55, 26 January 2007 by Nulleke (Talk | contribs) (Affected Models)
Jump to: navigation, search

Affected Models

Problem description

A recent change in one of the newer Lenovo bios updates changed the brightness up key to also provide a ACPI video brighness up event. This made ThinkPad users suffer from a bug in the Linux kernel handling of ACPI video events.

The Linux kernel handling for the ACPI video event brighness up is not implemented by the ACPI video module before Linux 2.6.20-rc?, which results in the brightness up key not working, even if the event is handled correctly.

To make matters worse, the ACPI video module in kernels up to 2.6.19.1 has a hideous bug that gets many ACPI video events wrong, and this is the probable cause for the "tries to switch video output" effect some users observed, which can cause serious problems in certain configurations, like X server hangs.

Workaround

Do not load the ACPI video module, or compile in the ACPI_VIDEO option on Linux kernels that have not been patched to fix this issue. The ThinkPad BIOS will do the right thing.

Remaining issues

Even with 2.6.20-rc3 ACPI video, things are still not perfect. This time, it may be Lenovo's fault.

The fixed ACPI video module will use the ACPI DSDT to increase video brighness, but the new BIOS DSDTs apparently do not keep the CMOS NVRAM completely up-to-date, so tpb and other utilities that provide on-screen-display do not get to know there was a brightness up event.

This can be argued to be a deficiency of these tools, however. The foolproof, safe way to know the current ThinkPad display brightness in Linux is to ask ibm-acpi. Note that ibm-acpi support for this functionality is new, which explains why the current tools don't use it.

Due to the fact that when nothing handles the ACPI video brighness up event, the BIOS does the right thing, it is unclear at this time exactly where the blame for this remaining issue should lie.