summaryrefslogtreecommitdiffstats
path: root/asuseeepchotkeys.tex
blob: 8cbd2eab7a16ca4f1af01a255748e03215bcd233 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
\begin{english}
\secstar{Asus eeepc 1005HA hotkeys and Ubuntu Lucid}
\vskip 2pt
My Asus eeepc 1005HA was working like a charm from the day I bought it. 
It came with Windows XP pre-installed. Since I am not quite a fan of XP, I 
decided to install some GNU/Linux distro. I left the Windows partition as 
it is and installed Ubuntu on one half of my hard disk. Anyway, I installed 
then latest Karmic Koala 9.10 Ubuntu Netbook Remix. If I remember correctly, 
it came with a 2.6.31 kernel. As expected, everything worked out of the box.
 Hotkeys, network (wired n wireless, atheros devices), touchpad, sound and camera 
worked smoothly. There were some issues with hibernation. Microphone also had some 
issues. I installed the backported modules to fix them.

When first beta of Lucid came out, I decided to switch. It came with a 2.6.32 kernel. 
Since it was beta, Lucid gave some small issues related to the improved and renamed 
interface (Ubuntu Netbook Edition). Most of them were quickly fixed. Except the issue 
related to hot keys (eeepc-laptop, the driver which controls hot keys won't load by default).

To start with, like any Ubuntu user I did a little search on Ubuntu forums. As expected, 
the problem was already reported. Some kind of a solution was also given 
(to pass acpi\_osi=Linux as a kernel parameter). But it didn't workout quite well since 
it also killed my wired interface some how. I didn’t really dig up on what is happening 
then. Since it was not a very important thing for me, I kept it aside. Lately, when I 
got some free time, I decided to explore a little.

So I simply did the easiest and blindest thing to do. To check whether it is fixed in the 
latest stable kernel. So I downloaded the latest stable kernel (2.6.34), from kernel.org 
and compiled it. Since I knew quite bit about my laptop by then, I spent sometime on 
removing all unwanted drivers and technologies. Finally I compiled the kernel in my 1005HA. 
Since I knew from bug reports that to load eeepc-laptop, acpi\_osi needs to be passed, 
I did that. Ta da, it started working.

Then like any curious and interested guy would do, I decided to explore more and find out 
what had gone wrong, to check why it worked in Karmic and not in Lucid. 
Different bug reports and details dating from November 2009 gave a good idea.

The issue is related to ASUS and Windows 7. Apparently for compatibility with Windows 7, 
ASUS changed their ACPI device from the usual one (ASUS010) to Windows Management Interface (WMI). 
BIOS updates to enable windows 7 support simply disables the ASUS010 interface used by eeepc-laptop 
when an OS is detected as Windows 7. When OSI is invoked by BIOS, Linux kernel usually returns true 
for any windows string. An easy way is to blacklist the new eeepc models. But, it is not the right solution. 
Also it created some issues since it was not the optimal solution.

The permanent solution for the problem is to write eeepc-wmi interface. There is some preliminary 
experimental driver available from Yong Wang. It is quite in its infancy. It will load the eeepc-wmi 
driver when acpi\_osi is not passed. One of the most used hot keys is the Wireless LAN one. 
But it is still not done in the new eeepc-wmi driver. So, I guess it might take some time 
for it to get fixed. Or someone who really know how do this should sit on it and finish it off. 
Device drivers are quite out of my understanding, but I am ready to help in anyway I can. 
For the time being, this workaround looks the only way forward.

\begin{flushright}(June 11, 2010)\end{flushright}
\end{english}
\newpage