mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 09:02:00 +00:00
259 lines
8.1 KiB
Plaintext
259 lines
8.1 KiB
Plaintext
|
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 informations 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 informations.
|
||
|
|
||
|
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
|
||
|
|