Asus Laptop Extras

Version 0.1
August 6, 2009

Corentin Chary <corentincj@iksaif.net>
http://acpi4asus.sf.net/

 This driver provides support for extra features of ACPI-compatible ASUS laptops.
 It may also support some MEDION, JVC or VICTOR laptops (such as MEDION 9675 or
 VICTOR XP7210 for example). It makes all the extra buttons generate standard
 ACPI events that go through /proc/acpi/events and input events (like keyboards).
 On some models adds support for changing the display brightness and output,
 switching the LCD backlight on and off, and most importantly, allows you to
 blink those fancy LEDs intended for reporting mail and wireless status.

This driver supercedes the old asus_acpi driver.

Requirements
------------

  Kernel 2.6.X sources, configured for your computer, with ACPI support.
  You also need CONFIG_INPUT and CONFIG_ACPI.

Status
------

 The features currently supported are the following (see below for
 detailed description):

 - Fn key combinations
 - Bluetooth enable and disable
 - Wlan enable and disable
 - GPS enable and disable
 - Video output switching
 - Ambient Light Sensor on and off
 - LED control
 - LED Display control
 - LCD brightness control
 - LCD on and off

 A compatibility table by model and feature is maintained on the web
 site, http://acpi4asus.sf.net/.

Usage
-----

  Try "modprobe asus_acpi". Check your dmesg (simply type dmesg). You should
  see some lines like this :

      Asus Laptop Extras version 0.42
        L2D model detected.

  If it is not the output you have on your laptop, send it (and the laptop's
  DSDT) to me.

  That's all, now, all the events generated by the hotkeys of your laptop
  should be reported in your /proc/acpi/event entry. You can check with
  "acpi_listen".

  Hotkeys are also reported as input keys (like keyboards) you can check
  which key are supported using "xev" under X11.

  You can get information on the version of your DSDT table by reading the
  /sys/devices/platform/asus-laptop/infos entry. If you have a question or a
  bug report to do, please include the output of this entry.

LEDs
----

  You can modify LEDs be echoing values to /sys/class/leds/asus::*/brightness :
    echo 1 >  /sys/class/leds/asus::mail/brightness
  will switch the mail LED on.
  You can also know if they are on/off by reading their content and use
  kernel triggers like ide-disk or heartbeat.

Backlight
---------

  You can control lcd backlight power and brightness with
  /sys/class/backlight/asus-laptop/. Brightness Values are between 0 and 15.

Wireless devices
---------------

  You can turn the internal Bluetooth adapter on/off with the bluetooth entry
  (only on models with Bluetooth). This usually controls the associated LED.
  Same for Wlan adapter.

Display switching
-----------------

  Note: the display switching code is currently considered EXPERIMENTAL.

  Switching works for the following models:
    L3800C
    A2500H
    L5800C
    M5200N
    W1000N (albeit with some glitches)
    M6700R
    A6JC
    F3J

  Switching doesn't work for the following:
    M3700N
    L2X00D (locks the laptop under certain conditions)

  To switch the displays, echo values from 0 to 15 to
  /sys/devices/platform/asus-laptop/display. The significance of those values
  is as follows:

  +-------+-----+-----+-----+-----+-----+
  | Bin   | Val | DVI | TV  | CRT | LCD |
  +-------+-----+-----+-----+-----+-----+
  + 0000  +   0 +     +     +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 0001  +   1 +     +     +     +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 0010  +   2 +     +     +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 0011  +   3 +     +     +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 0100  +   4 +     +  X  +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 0101  +   5 +     +  X  +     + X   +
  +-------+-----+-----+-----+-----+-----+
  + 0110  +   6 +     +  X  +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 0111  +   7 +     +  X  +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1000  +   8 +  X  +     +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 1001  +   9 +  X  +     +     +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1010  +  10 +  X  +     +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 1011  +  11 +  X  +     +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1100  +  12 +  X  +  X  +     +     +
  +-------+-----+-----+-----+-----+-----+
  + 1101  +  13 +  X  +  X  +     +  X  +
  +-------+-----+-----+-----+-----+-----+
  + 1110  +  14 +  X  +  X  +  X  +     +
  +-------+-----+-----+-----+-----+-----+
  + 1111  +  15 +  X  +  X  +  X  +  X  +
  +-------+-----+-----+-----+-----+-----+

  In most cases, the appropriate displays must be plugged in for the above
  combinations to work. TV-Out may need to be initialized at boot time.

  Debugging:
  1) Check whether the Fn+F8 key:
     a) does not lock the laptop (try disabling CONFIG_X86_UP_APIC or boot with
        noapic / nolapic if it does)
     b) generates events (0x6n, where n is the value corresponding to the
        configuration above)
     c) actually works
     Record the disp value at every configuration.
  2) Echo values from 0 to 15 to /sys/devices/platform/asus-laptop/display.
     Record its value, note any change. If nothing changes, try a broader range,
     up to 65535.
  3) Send ANY output (both positive and negative reports are needed, unless your
     machine is already listed above) to the acpi4asus-user mailing list.

  Note: on some machines (e.g. L3C), after the module has been loaded, only 0x6n
  events are generated and no actual switching occurs. In such a case, a line
  like:

    echo $((10#$arg-60)) > /sys/devices/platform/asus-laptop/display

  will usually do the trick ($arg is the 0000006n-like event passed to acpid).

  Note: there is currently no reliable way to read display status on xxN
  (Centrino) models.

LED display
-----------

  Some models like the W1N have a LED display that can be used to display
  several items of information.

  LED display works for the following models:
    W1000N
    W1J

  To control the LED display, use the following :

    echo 0x0T000DDD > /sys/devices/platform/asus-laptop/

  where T control the 3 letters display, and DDD the 3 digits display,
  according to the tables below.

         DDD (digits)
         000 to 999 = display digits
         AAA        = ---
         BBB to FFF = turn-off

         T  (type)
         0 = off
         1 = dvd
         2 = vcd
         3 = mp3
         4 = cd
         5 = tv
         6 = cpu
         7 = vol

  For example "echo 0x01000001 >/sys/devices/platform/asus-laptop/ledd"
  would display "DVD001".

Driver options:
---------------

 Options can be passed to the asus-laptop driver using the standard
 module argument syntax (<param>=<value> when passing the option to the
 module or asus-laptop.<param>=<value> on the kernel boot line when
 asus-laptop is statically linked into the kernel).

	     wapf: WAPF defines the behavior of the Fn+Fx wlan key
		   The significance of values is yet to be found, but
		   most of the time:
		   - 0x0 should do nothing
		   - 0x1 should allow to control the device with Fn+Fx key.
		   - 0x4 should send an ACPI event (0x88) while pressing the Fn+Fx key
		   - 0x5 like 0x1 or 0x4

 The default value is 0x1.

Unsupported models
------------------

 These models will never be supported by this module, as they use a completely
 different mechanism to handle LEDs and extra stuff (meaning we have no clue
 how it works):

 - ASUS A1300 (A1B), A1370D
 - ASUS L7300G
 - ASUS L8400

Patches, Errors, Questions:
--------------------------

 I appreciate any success or failure
 reports, especially if they add to or correct the compatibility table.
 Please include the following information in your report:

 - Asus model name
 - a copy of your ACPI tables, using the "acpidump" utility
 - a copy of /sys/devices/platform/asus-laptop/infos
 - which driver features work and which don't
 - the observed behavior of non-working features

 Any other comments or patches are also more than welcome.

 acpi4asus-user@lists.sourceforge.net
 http://sourceforge.net/projects/acpi4asus

