Debian Lenny on an Acer Aspire One 110


Base Installation

For base installation I followed [1] and did the following:

Partitioning of SSD and SD card

During the Debian installation I had an 8GB SDHC card in the storage expansion slot allowing me to directly partition it and use it as /home.
I played around a little bit with a configuration with swap partition, this will however increase number of write operations to the SSD and thus reduce its lifetime. If you want to use swap I would recommend to set the "swappiness" to 0 by putting the line

vm.swappiness = 0

at the end of /etc/sysctl.conf after installation. I recommend the following partitioning:

Device Size Fileystem Mount options Mount point
/dev/sda1 8GB ext2 noatime /
/dev/mmcblk0p1 8GB (max size) XFS (see suspend) noatime /home/$USER or /home

When booting after installation you won't be able to boot the current standard Debian kernel with SD card in the storage expansion slot. Remove the card, hit Ctrl-D when prompted and put the card back in later (preferably with a new custom kernel).


Keeping /var/log, /tmp and /var/tmp in RAM

In order to reduce write access to the SSD I keep the three directories /var/log, /tmp and /var/tmp in a RAM filesystem by putting the following lines at the end of /etc/fstab:
none /var/log tmpfs defaults,size=10M 0 0
none /tmp tmpfs defaults,size=100M 0 0
none /var/tmp tmpfs defaults,size=20M 0 0

Kernel configuration

I'm using a vanilla kernel, here is my .config for kernel version 2.6.32.2.
Since kernel version 2.6.32, also the thermal sensors are supported by the kernel. For older versions I used the following to get support for them:
Edit the file drivers/hwmon/coretemp.c in the kernel tree and in the function coretemp_init change

/* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A */
if ((c->cpuid_level < 0) || (c->x86 != 0x6) ||
!((c->x86_model == 0xe) || (c->x86_model == 0xf) ||
(c->x86_model == 0x16) || (c->x86_model == 0x17) ||
(c->x86_model == 0x1A))) {

to

/* check if family 6, models 0xe, 0xf, 0x16, 0x17, 0x1A, 0x1C */
if ((c->cpuid_level < 0) || (c->x86 != 0x6) ||
!((c->x86_model == 0xe) || (c->x86_model == 0xf) ||
(c->x86_model == 0x16) || (c->x86_model == 0x17) ||
(c->x86_model == 0x1A) || (c->x86_model == 0x1C))) {

before compiling the kernel.


Ethernet (Realtek RTL8101E/RTL8102E)

The Ethernet card is supported by the r8169 driver, which in the kernel configuration can be found in Device Drivers - Network Device Support - Ethernet (1000 MBit).


Wireless LAN (Atheros AR242x)

For recent kernel versions (≥ 2.6.27), the ath5k driver in the vanilla kernel supports the wireless chip.
The wireless LED works since kernel version 2.6.30.5 for me.


Card readers

With the above kernel configuration both card readers work. To activate them I put

setpci -d 197b:2381 AE=47
setpci -d 197b:2382 AE=47

at the end (before "exit 0") in /etc/rc.local. The multi-cardreader recognizes cards only if they are inserted before booting the Acer, in order to be able to hot-plug memory cards create the file /etc/modprobe.d/pciehp with the following content:

options pciehp pciehp_force=1

Sound

Sound works with the intel-hda driver. However make sure to load the module with option "model=acer" by putting the following line at the end of /etc/modprobe.d/alsa-base:

options snd-hda-intel model=acer-aspire

With kernel version 2.6.27.4 sound also works after resuming from suspend. Microphone is working as well, to switch to the internal microphone use e.g. "alsamixer -V all" and switch "Input Source" to "Internal".
Headphones work and since 2.6.28 (support for the AA1) plugging in headphones also mutes the internal speakers. Didn't check external microphone, yet.


Configuration of the X-Server

After installation of e.g. gdm the complete X environment works, however there are some tweaks that I applied according to the hints in [1] and [3]. To get reasonable fonts in X put the following two lines in the Monitor section of /etc/X11/xorg.conf:

DisplaySize 195 113

Furthermore put the following lines in the Device section of the same file for better graphics performance:

Option "AccelMethod" "exa"
Option "MigrationHeuristic" "greedy"
Option "NoDDC"

Suspend to RAM

Suspend to RAM works, however, as described in [3] To suspend just use pm-suspend (from the package pm-utils).
I had some problems with suspend corrupting the partition table of the SD card in the Storage Expansion slot. The solution to this problem as described in [3] is to set CONFIG_MMC_UNSAFE_RESUME in the kernel configuration (can be found in Device Drivers - MMC/SD card support - Allow unsafe resume) and use XFS as file system for the (only) partition on the SD card.
This solution sounds weird but really works for me.

Suspend without root password

The program pm-suspend only works with root permissions so you will have to type the root password every time before suspending. You can avoid that by putting the line

USERNAME ALL=NOPASSWD: /usr/sbin/pm-suspend

in the file /etc/sudoers. In this line replace USERNAME with your username. The file /etc/sudoers has to be edited with the "visudo" command as root.
Now you are able to suspend with

sudo pm-suspend

Suspend on lid closure

If you want your Aspire One to suspend when you close the lid, install the packages acpid and acpi-support and then edit the file /etc/acpi/lid.sh to just contain
#!/bin/sh
/usr/sbin/pm-suspend

Hibernation

So far, I wasn't able to get hibernation working, even if I have swap properly set up.


Webcam

The webcam is supported through "Video for Linux" in the kernel (Device Drivers - Multimedia devices - Video For Linux) and the USB Video Class Linux device driver (Device Drivers - Multimedia devices - Video For Linux - Video capture adapters - V4L USB devices - USB Video Class). To check whether the webcam works you can use luvcview.


Fan control

The fan is considered "noisy" by some people. The way to a more silent fan seems to be the use of acerfand as described in [1] (search for Quiet Fan).
This solution only works for older BIOS versions (< 3304), I'm using BIOS version 3305 and do not consider the fan to noisy (see also section on BIOS update).


Hotkeys

Brightness control works out of the box with the Fn-left/right keys.
Switching on and off the Touchpad with Fn-F7 works out of the box.
Switching on and off the Display with Fn-F6 works out of the box.
In order to get the remaining hotkeys working put the follwoing lines in your ˜/.Xmodmap (create the file if it doesn't exist):

keycode 160 = XF86AudioMute
keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume
keycode 223 = XF86Standby
keycode 210 = XF86Display

Now further configuration depends on your window manager, for fluxbox put the following lines in your ˜/.fluxbox/keys:

None XF86AudioLowerVolume :execcommand amixer -q set Master 2- unmute
None XF86AudioRaiseVolume :execcommand amixer -q set Master 2+ unmute
None XF86AudioMute :execcommand amixer -q set Master mute
None XF86Standby :execcommand sudo /usr/sbin/pm-suspend
The last command (suspending with Fn-F4) will only work, if you configured pm-suspend to work without (root-)password as described in the section on suspend.
The behaviour of the Fn-F8 key is perhaps not the "original" behaviour with this configuration. It does not toggle the state but always mutes (sound remains muted when you hit the key twice). To unmute just use one of the volume keys.

BIOS update

My Acer came with a quite old BIOS version, so I upgraded to a newer version. This requires to first download the newes BIOS version from the http://support.acer-euro.com/drivers/notebook/as_one_110.html.
You will then have to boot some DOS system, the way to get that for me was to format a USB stick with exactly one partition (partition type b W95 FAT32). With mkfs.msdos (from the package dosfstools) I then created a FAT32 file system on this partition.
I then used unetbootin to write a bootable Freedos to the USB stick. In order to install unetbootin with

dpkg -i unetbootin_292_i386.deb

you will first have to install the packages syslinux, p7zip-full and libqt4-gui.
Now I extracted the zip file containing the new driver and copied the whole resulting folder to the USB stick. Afterwards I booted the Freedos from the stick and type

c:
3305.BAT

where 3305 is the BIOS version.


References

[1] http://wiki.debian.org/DebianAcerOne
[2] https://help.ubuntu.com/community/AspireOne
[3] http://wiki.archlinux.org/index.php/Acer_Aspire_One