Linux on the Acer TravelMate C100

A quick Google turns up the following, which cover Linux installation in detail...


The Acer Hotkey driver supports the C1xx series since around 0.5.0pre4, and supports the hotkeys above the keyboard, and lets you turn the mail light and wireless on and off.
Can't find anything for the tablet PC buttons. We'll have to do something about that...

Automagically configuring for fixed or wireless ethernet

on Debian, the following can be used in /etc/networks/intefaces

# determine how to configure eth0 based on it's MAC address
auto eth0
mapping eth0
 script /usr/share/doc/ifupdown/examples/
 map xx:xx:xx:xx:xx:xx wireless
 map xx:xx:xx:xx:xx:xx fixed

# Fixed ethernet
iface fixed inet dhcp

# Wireless ethernet
iface wireless inet dhcp
 pre-up /sbin/iwconfig eth0 essid XXXX key xxxxxxxxxx

On my installation needed to be chmod +x, possibly you want to copy it somewhere else

An input driver for the tablet buttons

There a couple of references on the internet which describe these buttons as 'ACPI devices'

Looking at the DSDT with the iasl-linux-20030918 AML disassembler, I find:

            Device (BTNS)
                Name (_HID, "MSTabletPCButtons")
This just has methods for hardware resource configuration and enable/disable (_PRS, _SRS, _CRS, _INI, _DIS, _STA), and nothing for actually dealing with the button state

Fortunately, the actual hardware is apparently trivial to reverse-engineer, the tablet buttons are read via an 8-bit latch, (repeated across the whole range the device decodes), with an interrupt generated when the state changes

bit key (0=pressed, 1=released)
7 unused
6 unused
5 unused
4 down
3 key
2 Fn
1 up
0 circle dot/circle cross

So, improvising from the 8250_acpi driver and the existing input drivers, this patch (which applies to all 2.6.x kernels so far), adds an input driver for the tablet buttons

Using xev or the evbug module, you can see the key events generated when this module is loaded

These are described as 'Wistron Tablet PC Buttons' by the Windows driver, so it's possible they may turn up on other manufacturers tablet PCs...

Curosities: We report I/O port base 0x450, whereas the AML seems to indicate the device only supports I/O port base 0x9450

Doing something useful with the input driver for the tablet buttons
See if we can use hotkeys to make the tablet buttons do what they do for Windows

For reasons probably known only to XKB, the arbitary keycodes I've put in the input driver (227...231) appear as keycodes (214...218)

To investigate:
What about lineakd?
Does xreplay need to be compiled with XK_MISCELLANY defined to enable it to generate control keys?
This is far too complex and fragile. There must be a better way?
using xreplay is not ideal, and X-specific. Can we synthesize keypress events in input layer?

ACPI always disabled in 2.6.2 and later
A change in kernels 2.6.2 and later interacts with the BIOS ACPI tables (at least with the BIOS in my C100), and causes ACPI to disable itself. This is (unsurprisingly) kind of critical to the correct functioning of the tablet buttons driver

This email describes the problem in more detail

Pending someone who knows what their doing fixing it, the following reverses the critical part of the change
--- linux/arch/i386/kernel/acpi/boot.c.orig     2004-02-22 21:34:26.000000000 +0000
+++ linux/arch/i386/kernel/acpi/boot.c  2004-02-22 21:34:41.000000000 +0000
@@ -424,7 +424,6 @@
        result = acpi_table_init();
        if (result) {
-               acpi_disabled = 1;
                return result;