Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A linux kernel module that enables calls to ACPI methods through /proc/acpi/call. Now with support for Integer, String and Buffer parameters.
C Shell Perl
tree: 26295f86eb

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
windump_hack
Makefile
README
acpi_call.c
asus1215n.sh
m11xr2.sh
query_dsdt.pl
test_off.sh

README

A kernel module that enables you to call ACPI methods by writing the method
name followed by arguments to /proc/acpi/call.

Usage:

    echo '<call>' | sudo tee /proc/acpi/call
You can then retrieve the result of the call by checking your dmesg or:

    sudo cat /proc/acpi/call

An example to turn off discrete graphics card in a dual graphics environment
(like NVIDIA Optimus):

# turn off discrete graphics card
echo '\_SB.PCI0.PEG1.GFX0.DOFF' > /proc/acpi/call
# turn it back on
echo '\_SB.PCI0.PEG1.GFX0.DON' > /proc/acpi/call

These work on my ASUS K52J notebook, but may not work for you. For a list of
methods to try, see http://linux-hybrid-graphics.blogspot.com/ or try running
the provided script test_off.sh

It SHOULD be ok to test all of the methods, until you see a drop in battery
drain rate (grep rate /proc/acpi/battery/BAT0/state), however it comes
with NO WARRANTY.

You can pass parameters to acpi_call by writing them after the method,
separated by single space. Currently, you can pass the following parameter
types:
* ACPI_INTEGER - by writing NNN or 0xNNN, where NNN is an integer/hex
* ACPI_STRING - by enclosing the string in quotes: "hello, world"
* ACPI_BUFFER - by writing bXXXX, where XXXX is a hex string without spaces,
                or by writing { b1, b2, b3, b4 }, where b1-4 are integers

The status after a call can be read back from /proc/acpi/call:
* 'not called' - nothing to report
* 'Error: <description>' - the call failed
* '0xNN' - the call succeeded, and returned an integer
* '"..."' - the call succeeded, and returned a string
* '{0xNN, ...}' - the call succeeded, and returned a buffer
* '[...]' - the call succeeded, and returned a package which may contain the
   above types (integer, string and buffer) and other package types


Copyright (c) 2010: Michal Kottman

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
Something went wrong with that request. Please try again.