Без названия

Я вот подумал, мало ли кому пригодится мой опыт.

Тут немного по-английски, но если есть вопросы, то могу помочь.

I   have Acer Travelmate notebook and got a problem with ACPI as many of Acer notebooks’ Linux users.
Investigation led me to some usefull documentation, which helped me to overcome the issues with Acer ACPI and Linux.

The main problem is that Acer notebooks use DSDT in BIOS. Usually it doesn’t work with Linux and some changes in kernel should be done to fix it.

1. What DSDT is?
DSDT — Differentiated System Description Table. It is a part of the ACPI specification and it supplies configuration information about a base system.

2. What is the issue with DSDT on Linux?
Here the short description on the problem is described. The problem is that DSDT is not recognized by the default kernel, because DSDT might differ on different models of ACPI.

3. What is the solution?
I searched for solution for a pretty long time and found some partial fix. It fixes Power, Sleep and Lid switch problems.

I used the following two documents:
http://www.whoopy.it/linux/ACPI_problem_linux.html
http://forums.gentoo.org/viewtopic.php?t=122145

In short you should do the following:
a) Verify that iasl is installed on your machine. The latest version of Intell compiler can be obtained from http://developer.intel.com/technology/iapc/acpi/downloads.htm.
b) Extract your current DSDT to a file as follows:

Run:
# cat /proc/acpi/dsdt > dsdt.dat


c) Disassemble the DSDT

Run:
# iasl -td dsdt.dat


d) Recompile the DSDT.

Run:
# iasl dsdt.dsl


Note: During compilation there might appear some errors and warnings. Me personnaly, I got only 3 warnings. I searched for net and found how to fix one of them. But still it works. So, you can take in serious consideration only errors.
e)After recompilation you will get two more files in this directory — DSDT.aml and dsdt.hex.
Copy DSDT.aml to some directory (E.g. /etc) and add the string ACPI_DSDT=»/etc/DSDT.aml» to /etc/sysconfig/kernel file (on my SUSE, there is already such option, so edit it).
Copy dsdt.hex file to kernel source location

Run:
# cp /path/to/dsdt.hex /usr/src/linux-[version]/include/acpi/dsdt_table.h


d) recompile kernel.

After reboot dmesg shows something like that:

Run:
ACPI: Power Button (FF) [PWRF]
ACPI: Lid Switch [LID0]
ACPI: Sleep Button (CM) [SLPB]


If it doesn’t and there are still errors, then something is wrong and should be investigated further.

Leave a Reply

%d bloggers like this: