Friday, 29 October 2010

Asus EEEPC 1215N hybrid graphics -- modified acpi_call with returning acpi_object results

Reposting a report by peberlein in the launchpad hybrid-graphics-linux mailing list about the Asus EEEPC 1215N hybrid graphics. Instructions:

git clone http://github.com/peberlein/acpi_call.git
cd acpi_call
make
sudo insmod acpi_call.ko
./asus1215n.sh

[Hybrid-graphics-linux] Asus 1215N success

I successfully powered down the Nvidia device in my Asus 1215N.  I modified the apci_call module and created a script to power it off and on.  Here is the github fork:

http://github.com/peberlein/acpi_call

I owe a huge thanks to Mkottman for acpi_call and George Shearer for m11xr2hack.  Those sources were excellent for learning about acpi and buffers.

I modified the acpi_call module to allow byte buffers to be passed as parameters, and also to return the acpi_object result in /proc/acpi/call.  Being able to see the result helped me figure out some of the state in the acpi methods.

The 1215N is similar to the m11x r2 in that it requires a special method (_DSM) being called with buffer arguments before the _PS3 method will turn the power off.   I also found that the _PS0 method turns the power back on.  After turning off the power, the power state appears to be set in the _PSC object: 0x0 when on, and 0x3 when off.  Except this isn't accurate after the system has been put in standby - the power is on (according to the battery rate) but the_PSC is still 0x3.  I have to use the script to turn the power off again after coming out of standby.