Install Ubuntu Hardy Heron (8.04.1) on the Acer Aspire One

September 4, 2008

Fully functional:

  • Suspend / Resume
  • Video (with desktop effects)
  • Wireless Networking
  • Wired Networking
  • Webcam
  • USB
  • Silent Fan

Partial Function:

  • Card Readers (only work if card in when booting)
  • Audio – there is sound, issues detailed below

Not Functional:

  • Hibernate on A110L
  • Card Reader power saving
  • wifi power saving
  • wifi kill switch

Prerequisites:

Before you begin you will need the following:

  • A copy of 8.04.1 Hardy Heron.
    This is the latest version. If you downloaded the ISO a while ago, it may be 8.04.0. The original 8.04.0 release will not even boot.

  • An external USB CD-ROM. If not:

Note on using this guide

This guide was written with Ubuntu in mind. Generally everything works the same with the other variants of the distribution (Kubuntu, Xubuntu). For ease of use gedit is the text editor we’ll be using. If you are using a variant please substitute a different text editor (kate for Kubuntu, mousepad for Xubuntu or just use vim/emacs/nano).

Step One: Preparation

(Skip this step if you have an external USB CD-ROM)

If we don’t have any external USB CD-ROM the first thing we need to do is create a bootable copy of the Ubuntu LiveCD on a memory key. This will be our install media for the Aspire One. Its actually pretty similar to creating recovery media for Linpus Lite (the included version of Linux).

Download and copy the LiveUSB .deb file from the link above to a memory key (you can use the same one we we are going to format to create the install media, we only need this file once), and remove the memory key. The LiveUSB software should only be installed when booted off the LiveCD environment, so we do that next.

Boot to the 8.04.1 Live CD on your other computer, and choose the first option off the boot menu (Try Ubuntu). When you reach the desktop insert the memory key with the LiveUSB software one it and double click. Follow the prompts to install it. Now we can create our bootable USB key. Start the LiveUSB application from System -> Administration -> Install LiveUSB. Select the target device (my two keys were listed by a human readable name, so it was easy to find) and click Execute. It will give you a warning about data loss, so double check that you selected the correct device and continue.

Once that is done, you can shut down the other computer and remove the memory key.

Step Two: Install Ubuntu

Shut down your Aspire One and insert the external USB CD-ROM or the memory key that we just used. Turn it on and tap F12 to bring up the boot menu.

With a CD-ROM, choose the USB CD-ROM option. With the bootable memory key created, choose the USB HDD option. This will boot you to the USB CD-ROM/LiveUSB stick, and allow you to install Ubuntu. Install it like normal if you have the hard disk Aspire One. If you have the SDD Aspire One, for good performance and to increase the life of the SSD use a non-journaled filesystem (suggestion: EXT2). If you have already installed with EXT3 then follow this post: http://www.aspireoneuser.com/forum/viewtopic.php?f=5&t=164&st=0&sk=t&sd=a&start=10#p1177 to convert to EXT2. Installation (file copy) will take a LONG time (hour +). If your not currently connected to the internet on a wired connection, you may get an error about setting up a mirror. Don’t worry about it if you do however, its non-fatal.

Step 3: Tweak / Fix

So now we should have an installed Ubuntu system. At this point wire your One into the network. If you use DHCP it should pick up an IP address automatically. The first thing you will want to do is updates, since the wireless driver needs to be reinstalled after every kernel update. Open a terminal (Applications -> Accessories -> Terminal). Do the updates:

sudo apt-get update
sudo apt-get upgrade

WIRELESS:

Now we need to disable the hardware drivers that Ubuntu tries to use before the ones we make will function. So go to System -> Administration -> Hardware Drivers and uncheck everything. It should prompt us to reboot, so lets do it now.

We need to grab the wireless driver, and the things we need to build it, from a terminal:

mkdir source
cd source
wget http://snapshots.madwifi.org/madwifi-hal-0.10.5.6/madwifi-hal-0.10.5.6-r3835-20080801.tar.gz
tar -xzvf madwifi-hal-0.10.5.6-r3835-20080801.tar.gz
cd madwifi-hal-0.10.5.6-r3835-20080801
sudo apt-get install build-essential linux-headers-$(uname -r)

And we build and install:

make
sudo make install
sudo modprobe ath_pci

In order to have the wireless work after reboot, add the following line to /etc/modules (“sudo gedit /etc/modules”) to automatically load the module when booting:

ath_pci

You should now have working wireless. However you may want to do the following to prevent problems (the symbol mismatch) when the module is loaded:

Add ath_hal to the DISABLED_MODULES= stanza in /etc/default/linux-restricted-modules-common

(i.e. ‘DISABLED_MODULES=”ath_hal”‘)

Every time there is a kernel update you will need to perform the following steps to make the wireless work. Go to the directory (madwifi-hal-0.10.5.6-r3835-20080801) and run:

make clean
make
sudo make install

WIRELESS LED:

To get your awesome wireless led to blink for you based on traffic, put these lines in /etc/rc.local, just above the string exit 0 (below doesn’t work).

sysctl -w dev.wifi0.ledpin=3
sysctl -w dev.wifi0.softled=1

The led on the front will now do the association blink, as well as blink based on wireless traffic.

The wifi kill switch uses these keycodes (also to use in rc.local):

/usr/bin/setkeycodes e055 159
/usr/bin/setkeycodes e056 158

CARD READER:

According to DebianAcerOne the following command enables the card reader:

setpci -d 197b:2381 AE=47

The card reader works fine if cards are inserted before booting.

  • it might help to suspend/resume
  • a static entry for the device /dev/mmcblk01p in /etc/fstab might help
  • powersaving can be done with the jmb38x_d3e.sh script

USB MOUNT:

(Do this step only if you get an error inserting a USB stick)

If you insert a memory key, you may notice an error and that it cannot be mounted. This is due to the CD-ROM entry in the fstab. Since we don’t have an optical drive on the One we will comment that out. From a terminal again:

sudo gedit /etc/fstab

You should see a line that looks like:

/dev/sdb        /media/cdrom0   udf,iso9660 user,noauto,exec 0       0

add a hash in front:

#/dev/sdb        /media/cdrom0   udf,iso9660 user,noauto,exec 0       0

Reboot, and automount should work.

NOISE (FAN CONTROL)

Bios v0.3114 doesn’t manage correctly Fan speed, resulting in a very noisy AA0. Solution:

 chmod a+x acerfand
 sudo cp acer_ec.pl acerfand /usr/local/bin/
  • To run it straight away:

 sudo acerfand
  • To run it at boot:

 sudo gedit /etc/rc.local

Insert the following line above the exit 0 at the bottom:

 /usr/local/bin/acerfand

The fan is not completely disabled. When the default temperature is reached (60ºC), fan works again. According to Intel, the Atom chip could work until 99ºC.

Optional: Above instructions will work fine, but if you want to define another temperature:

  • Create an /etc/acerfand.conf file. The file is just a shell script that sets up to three values. eg:

INTERVAL=5
FANOFF=60
FANAUTO=70

Those are the default values, if the /etc/acerfand.conf file isn’t found.

INTERVAL is the polling interval in seconds

FANOFF is the temperature (in Celsius Degrees) at or below which to turn the fan off, if it’s currently on auto

FANAUTO is the temperature (in Celsius Degrees) at or above which to turn the fan to auto, if it’s currently off

More information from the original source, AspireOne Wiki.

OPTIMIZING SSD PERFORMANCE:

(Skip this step if you have the hard disk Acer Aspire One)

The performance of the SSD drive can be significantly improved by a few tweaks described in an article by Jason Perlow (Tweek #1 is not working with Ubuntu on the Aspire One). The most important of these are described here.

Change the file system mount options on SSDs to “noatime”

Edit /etc/fstab (sudo gedit /etc/fstab) and change the the option “relatime” to “noatime”. The line for the root partition should then be something like:

UUID=f0ae2c59-83d2-42e7-81c4-2e870b6b255d / ext2 noatime,errors=remount-ro 0 1

Use the “noop” I/O scheduler

Edit /boot/grub/menu.lst using your favorite editor, and add “elevator=noop” as an option. The default kernel configuration, found in the last part of the file should be something like:

title           Ubuntu 8.04.1, kernel 2.6.24-19-generic
root            (hd0,0)
kernel          /boot/vmlinuz-2.6.24-19-generic root=UUID=f0ae2c59-83d2-42e7-81c4-2e870b6b255d ro quiet splash elevator=noop
initrd          /boot/initrd.img-2.6.24-19-generic
quiet

In order for the changes to remain when updating the kernel, also in menu.lst, find the line

# defoptions=quiet splash

and add “elevator=noop” as an option:

# defoptions=elevator=noop quiet splash

REDUCING SSD WEAR:

(Skip this step if you have the hard disk Acer Aspire One)

Frequent writes to the SSD will cause failure eventually. We can reduce the number of writes to the SSD my moving our logs to a temporary filesystem in RAM that gets destroyed at ever reboot. Now this means your logs will not be persistent across reboots making debugging difficult in some cases. This step is optional of course, so if you need the logs for an extended period of time do not follow these steps.

Open your fstab again, and add the following lines:

sudo gedit /etc/fstab
tmpfs      /var/log/apt    tmpfs        defaults           0    0
tmpfs      /var/log        tmpfs        defaults           0    0
tmpfs      /tmp            tmpfs        defaults           0    0
tmpfs      /var/tmp        tmpfs        defaults           0    0

AUDIO:

Out of the box there are various issues with the sound. These range from headphone detection not functioning correctly, to the internal MIC not working. There are solutions to these problems. Currently, however, there is no known way to get everything working at once. All of the steps begin the same way, rebuilding ALSA:

sudo apt-get install module-assistant
sudo m-a update
sudo m-a prepare
sudo m-a a-i alsa
sudo alsa force-unload
sudo depmod -ae
sudo modprobe snd-hda-intel

Add the following line to the end of /etc/modules in order to ensure that the module is loaded during bootup:

snd-hda-intel

Now we need to make a choice. To have the internal MIC non-functional (external works), but sound working after suspend and resume, we edit /etc/modprobe.d/alsa-base (sudo gedit /etc/modprobe.d/alsa-base) and add the following line to the bottom:

options snd-hda-intel model=toshiba

Reboot for that to take effect.

To have the internal MIC function correctly, but no sound after suspending and resuming the computer add or change the following to the /etc/modprobe.d/alsa-base as before:

options snd-hda-intel model=auto

Again, reboot for this to take effect.

For some unknown reason some people don’t hear any sound with either option. If you experience this problem you might want to use the option in /etc/modprobe.d/alsa-base as before to the following to resolve this problem:

options snd-hda-intel model=acer

If you experience crackling sound after rebooting, insert the following line in /etc/modprobe.d/blacklist:

blacklist snd_pcsp

Optional: The default sound level is low. Open a terminal and type alsamixer to adjust volume.

TWEAKS TO MAKE BETTER USE OF THE ASPIRE ONE’S SMALL SCREEN:

There are various methods that will help you make better use of the Aspire One’s small screen. One of the most important is being able to move windows that are too large to fit on the screen at once. To move a hidden part of the window into view, click and drag with the left mouse button on any part of the window while holding down the ALT key. However, you won’t be able to drag windows so the top of the window is above the top of the screen. To fix that, enter the following in a terminal window:

gconftool-2 --set /apps/compiz/plugins/move/allscreens/options/constrain_y --type bool 0

Since the Aspire One’s screen has almost twice as much resolution horizontally as vertically, having panels on both the top and bottom is not ideal. You may want to remove the top or bottom panels, make them smaller, or move them so that they are vertical, on the left and right side, instead of horizontal on top and bottom.

HIBERNATE:

In some set-ups, using hibernate has been reported to cause file corruption.

TWEAKS FOR POWERSAVING (Optional):

Add the following to the /etc/rc.local file:

# Economize the SSD
sysctl -w vm.swappiness=1               # Strongly discourage swapping
sysctl -w vm.vfs_cache_pressure=50      # Don't shrink the inode cache aggressively

# As in the rc.last.ctrl of Linpus
echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
cat /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate_max > /sys/devices/system/cpu/cpu0/cpufreq/ondemand/sampling_rate

echo 3000 > /proc/sys/vm/dirty_writeback_centisecs
echo 20 > /proc/sys/vm/dirty_ratio
echo 10 > /proc/sys/vm/dirty_background_ratio

echo 1 > /sys/devices/system/cpu/sched_smt_power_savings
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
echo 5 > /proc/sys/vm/laptop_mode

#Decrease power usage of USB while idle
[ -L /sys/bus/usb/devices/1-5/power/level ] && echo auto > /sys/bus/usb/devices/1-5/power/level
[ -L /sys/bus/usb/devices/5-5/power/level ] && echo auto > /sys/bus/usb/devices/5-5/power/level

NETBOOK REMIX (Optional):

To install Ubuntu Netbook remix

  • Insert the following into /etc/apt/sources.list:

deb http://ppa.launchpad.net/netbook-remix-team/ubuntu hardy main
deb-src http://ppa.launchpad.net/netbook-remix-team/ubuntu hardy main
  • then execute

sudo apt-get update
sudo apt-get install go-home-applet human-netbook-theme maximus ume-launcher window-picker-applet
  • Add maximus as startup program (system > preferences > sessions > startup programs)

  • Change the desktop theme to Human-Netbook (system > preferences > appearance > theme)

  • Delete the bottom panel
  • Reconfigure the top panel to contain the following items –
    • Go Home Applet
    • Window Picker Applet
    • Notification Area
    • Mixer Applet
    • Clock
  • There is a bug in the ume-launcher after resuming from suspend. To work around this place the following in /etc/pm/sleep.d/01UMELauncher –

#
# Copyright 2008 Matteo Collina <matteo.collina@gmail.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.

export DISPLAY=:0.0

TMPFILE=/tmp/.launcher/resume-event

case "$1" in
        suspend|hibernate)
                rm -rf $TMPFILE
                echo "Removed resume-notify file"
        ;;
        resume|thaw)
                touch $TMPFILE
                echo "Created resume-notify file"
        ;;
esac

exit $?
  • Make the above file executable –

sudo chmod +x /etc/pm/sleep.d/01UMELauncher

Flash 9.0.48 (Optional, recommended for 512M of RAM):

Ubuntu Hardy installs flash version 9.0.115, this version needs a lot of memory to work and makes ‘AspireOne’ slower than it is. A good option is to come back to the last fast official version of flash (9.0.48). Just download ‘Flash player 9 (99MB)’ file from:

http://kb.adobe.com/selfservice/viewContent.do?externalId=tn_14266&sliceId=2

In this file there are a lot of old flash versions, navigate to 9r48 and uncompress this folder. Double click ‘flash-player installer’, choose ‘Run in terminal’ and follow the instructions.