Was meant to write up a page about Linux on my ASUS W7J, but I never got the time yet…
Anyway, here’s a possible quick fix for those with an ASUS laptop (W7J at least) and a non-working brightness acpi key (in my case, it’s Fn + F5 and Fn + F6), even though
/sys/class/backlight/asus-laptop/brightness works perfectly.
I poked around the disassembled DSDT code and did a bit of googling. After a few reboots and testing, I figured out passing
acpi_osi="!Windows 2006" to the kernel fixes the issue.
Apparently with the (current) Linux ACPI driver, the OS interface (OSI) code will respond to the ACPI as quite a few different versions of M$ windows (see
drivers/acpi/utilities/uteval.c for the entire list). This list can be modified by the kernel parameter
Documentation/kernel-parameters.txt for full details).
So my guess is the DSDT thinks I’m running “Windows 2006″ (aka Vista), and so it is doing (or not doing) something with these two particular ACPI keys. Telling the Linux ACPI driver not to pretend to be Vista got rid of the problem.
This quick workaround also means that I didn’t have to patch my own DSDT and build a kernel with it.
[Updated: 5th November 2007] I was testing 2.6.23.x on the W7J, and I noticed both brightness keys Fn + F5 and Fn + F6 work without
acpi_osi. I looked into it and I’ve found out that the ACPI
video driver makes the keys work. And for some reasons with older kernels (2.6.22.x) the
video module is not loaded automatically. So you can probably ignore what I said above months ago :)