Ubuntu 9.10 (Karmic Koala) on a BenQ Joybook Lite U121 Eco


Jump to: navigation, search

Install Ubuntu 9.10 on a BenQ Joybook Lite U121 Eco

Thanks to Dean Holland <[email protected]>

NOTE: These steps will work, but Please do not make a full upgrade.otherwise GMA drivers will stop working.



This howto attempts to detail the steps required to install Ubuntu 9.10 (Karmic Koala) on a BenQ Joybook Lite U121 Eco, in the hope that whoever reads this does not have the experience of taking several days to set it up to their liking!

Also note that these fixes (in particular the reboot and wireless issues) will also work if the user is installing jolicloud.


The U121 originally retailed for around AUD$800, however it was picked up on special for half that price with slightly higher specifications. It is a 11.6" netbook with an Atom Z530, 2GB RAM, 250GB SATA HDD, Bluetooth, JMicron 10/100 Ethernet, Azurewave Wireless-N and the Intel Poulsbo US15W chipset. This hardware is similar to the Asus Eee 1101HA with differences in the ethernet and wifi controllers.

Ubuntu Installation

The installation of Ubuntu off a USB-key or an external DVD drive is fairly straightforward with no special requirements.

Post-install configuration

Reboot problem (LP #500883)

After the initial install the netbook cannot reboot - using the reboot option hangs the netbook in a pre-POST condition with LEDs on solid. Removing AC power and the battery is required to restart it. This is able to be worked around by booting with the "reboot=b" kernel parameter. Edit /etc/default/grub and change the GRUB_CMDLINE_LINUX variable to GRUB_CMDLINE_LINUX="reboot=b". Run update-grub. This will not take effect until the next system boot, a shutdown and power up will still be required one more time.

Wireless configuration

The out-of-box wireless configuration did not work with Ubuntu's 2.6.31 kernel. The kernel loaded the rt2800usb module which could not scan correctly. To fix this problem the following line was added to /etc/modprobe.d/blacklist.conf

blacklist rt2800usb

This resulted in the rt3070sta driver being loaded instead. However the version included in the kernel only supported no encryption or WEP. Requiring WPA, the latest version of the driver was downloaded from http://www.ralinktech.com/ and compiled. The make install command installs a configuration file for the driver in /etc/Wireless/RT3070STA/RT2870STA.dat but on load the driver tries to find the configuration at /etc/Wireless/RT2870STA/RT280STA.dat . Moving the configuration file to that location allowed the driver to load correctly and associate with WPA networks.

also see : http://lug-iitd.posterous.com/how-to-make-benq-u121-wireless-working-on-kar

Suspend to RAM

The default behaviour when attempting to suspend to RAM causes the netbook to enter sleep mode but resume immediately. A script (with an explanation) was found on the Ubuntu forums at http://ubuntuforums.org/showthread.php?p=8532933. The script unbinds all USB devices to prevent them from waking the system and should be saved as /etc/pm/sleep.d/10_unbindUSB . Make the script executable with chmod +x so it can be run on a sleep event.


# Disables echi / ohci / uhci ports on suspend and reenables them on resume.
# Place this script in /etc/pm/sleep.d

function unbind_usb {
    for driver in ehci ohci uhci; do
        cd "/sys/bus/pci/drivers/${driver}_hcd";
        ids=$(ls | grep :);
        echo $ids > /tmp/DISABLED_$driver;
        for id in $ids; do
            echo "Unbinding $id";
            echo -n "$id" > unbind;
            disabled="$disabled $id";

function bind_usb {
    for driver in ehci ohci uhci; do
        cd "/sys/bus/pci/drivers/${driver}_hcd";
        for id in $(cat /tmp/DISABLED_$driver); do
            echo "Binding $id";
            echo -n "$id" > bind;
        rm /tmp/DISABLED_$driver;

case "$1" in
        # Uncomment the following two lines if USB devices stutter after resume
        # unbind_usb;
        # bind_usb;
    exit 1;
exit 0;

NOTE: use Fn+F2 or the Suspend option from the GNOME menu to suspend the netbook. Using the lid to invoke a suspend operation causes the Lid Button entries in /proc and /sys to remain in the "closed" state. The result is random suspend operations while using the system.

It was also found that occasionally on resume there would be a kernel oops regarding a slow netdev timeout error. This was fixed by creating a script in /etc/pm/config.d that defined the SUSPEND_MODULES variable, and providing the ethernet controller module to unload (jme).



Intel GMA500 drivers

By far the biggest challenge in configuring Ubuntu on this netbook revolved around getting the proprietry drivers for the Intel GMA500 (Poulsbo) integrated graphics installed. The default VESA driver worked but at native resolution was barely usable for web browsing and email, let alone watching videos.

First the instructions at the Ubuntu Wiki were followed - https://wiki.ubuntu.com/HardwareSupportComponentsVideoCardsPoulsbo/. Once these were installed though, the system would boot and leave X at a black screen. It was not a crash - access via SSH was still possible and shutting down by using the power button also worked. The dmesg revealed a BUG entry relating to the video driver:

BUG: unable to handle kernel NULL pointer dereference at (null)

Booting into recovery mode and manually loading the module with modprobe psb worked without a bug. This led to suspicion that the timing of the module load was the issue here. To work around this the module and its firmware was added to the kernel's initrd and loaded early which resolved the black screen issue. This was achieved by adding psb to the /etc/initramfs-tools/modules file and creating a hook script to copy the firmware into the initrd.


# List of modules that you want to include in your initramfs.
# Syntax:  module_name [args ...]
# You must run update-initramfs(8) to effect this change.
# Examples:
# raid1
# sd_mod


#! /bin/sh -e


prereqs () {
    echo "$PREREQ"

case $1 in
    exit 0

. /usr/share/initramfs-tools/hook-functions

# Copy firmware to initramfs
copy_exec /lib/firmware/msvdx_fw.bin /lib/firmware

exit 0

A small modification to GRUB was also required, to remove the "splash" and "quiet" parameters from the kernel. Quiet could probably be left in but it's nice to see messages scrolling past to indicate that the boot process is progressing normally. In /etc/default/grub change the GRUB_CMDLINE_LINUX_DEFAULT variable to an empty string and then run update-grub.

Update the initrd with update-initramfs -u and after a reboot the psb driver should load successfully.

One small issue found with the psb driver is on resume from suspend - it appears to set the mode to an 8-bit colour depth. This can be worked around by switching to a text console and then back to X (Ctrl-Alt-F1, Ctrl-Alt-F7).

Audio issues

Once the psb video drivers were working successfully there were issues with the onboard audio: sound would stop playing, or a crackling noise would be heard from the speakers. A suggestion to change the AccelMethod from "EXA" to "UXA" in /etc/X11/xorg.conf offered a slight improvement, but getting it to work completely required upgrading to Pulse Audio 0.2.1 from the Ubuntu Audio Dev PPA.

$ sudo add-apt-repository ppa:ubuntu-audio-dev/ppa $ sudo apt-get update $ sudo apt-get upgrade


There are unfortunately a few more issues that require more scrutiny than the author of this HOWTO can offer:

ACPI lid event

Closing the lid to put the netbook to sleep results in the state of the lid button remaining "closed". This is an issue if changing virtual terminals to one of the text consoles and then back to the graphical console. On changing back to the graphical console the system goes back to sleep.

Current workaround is to use Fn+F2 or the Suspend option to put the netbook to sleep.

article is taken from http://docs.google.com/Doc?docid=0AfzktdIb2ExcZHJqcTd2bl8zZjY3Mm1iY24

Personal tools