Best viewed on NetFront (640x480)

my Zaurus SL-C3000 and SL-C3100

[icon]OpenZaurus Customisations:

This page is discontinued since OpenZaurus is no more...

Please see my new page titled Angstrom which is the successor to OpenZaurus

OpenZaurus is an alternate Linux distribution for the outdated and proprietary bundle of Qtopia that is shipped with the Sharp Zaurus. OpenZaurus is based on open-source code and enables the Zaurus to run most of the current non-proprietary and open-source Linux applications. It is based on newer versions of Qt/Embedded (Qtopia) and also supports X11. OZ also brings an up to date 2.6 kernel to the Zaurus world instead of the old 2.4.20 kernel that Sharp shipped with the C3x00 series.

However, OZ comes in several differently packaged distributions or flavours. OZ/OPIE is the Qtopia based distribution wheras OZ/GPE is the X11 based distro. There is even an OZ/bootstrap with a bare minimum base system without GUI.

In general, OZ is faster than the legacy Sharp ROM or its derivatives such as Cacko. However, OZ lacks an artistic touch. The default theme in GPE is rather ugly, in particular the icons are very plain and the font sizes are badly picked. The default OPIE theme on the other hand looks much more polished with nicer icons and crystal clear fonts. However, though the icons for the OPIE desktop are nice, the same can not be said for the applications. The tiny icons designed for the 200x320 screen resolution look very rugged and out of place in the otherwise good looking OPIE desktop. Hopefully someone with graphical skills will come up with a nicer set of icons for OZ.

Featurewise, OZ has most of what Sharp ROM offers in terms of device support. Screen rotation, screen capture and resume/suspend works almost perfectly with only a few hickups. Softwarewise, OPIE has most of the software available on the Sharp ROM except for the proprietary software bundles. Unfortunately, those are quite important applications, in particular NetFront. GPE has most of the applications available for pdaXrom and PocketWorkstation, so a combo of OPIE+GPE can be comparable to a dual boot Cacko/pdaXrom or Cacko/PocketWorkstation type system.

Hentges is another OZ based distribution which is tailored to be more user friendly and has the most commonly used applications pre-installed. Hentges is also pre-configured to allow you to have both OPIE and GPE running at the same time (not yet released) so you don't need to choose between the two and end up being limited to the applications the choosen flavour provides. Running OPIE and GPE at the same time allows you to use all of the applications available to OZ.

The following section covers how to best use the available packages in OpenZaurus. It also shows how to run both OPIE and GPE applications together to get the best of both the Qt/Embedded and X11 world.

Some of the customisations require additional files which should be downloaded first and placed on a SD or CF card for easy transfer to the Zaurus.

Configuring feeds

By default, the feeds are already configured to access the main feed server for installations. The Package Manager is either pre-configured for either OPIE or GPE, depending on which you installed, but if you want to run both concurrently, then you need to update the feed configuration to include all the feeds.

You can also change the feeds to point to one of the alternate mirror sites, or if you have mirrored the feeds to a CF or SD card, then you can also change the feed to download from your local file source as well which is quite handy if you are offline a lot.

[oz feeds]

The above sample shows a configuration with the OZ feeds mirrored to a CF card.

OPIE Package Manager uses /etc/ipkg.conf to configure all its feeds, whereas GPE Package Manager has individual files for each feed located under /etc/ipkg/

You should add all the additional feeds as well for a bigger choice of available applications for installation. OZ can use packages from both the 3.5.4 and feeds. There are quite a few application packages in the 3.5.4 feeds but not in the feeds.

  • base
  • machine
  • upgrades
  • opie
  • x11
  • perl
  • python
  • contrib

After changing the config files, you will need to run ipkg update to refresh the configuration and package db.

# ipkg update

You will also find that you will get more success when using the command line ipkg command to install packages rather than the GUI Package Manager.

Installing OPIE with GPE

You can install both OPIE and GPE on different virtual terminals and switch between those two VTs to switch between OPIE and GPE. However, running both environments like this concurrently also uses up more resources. Alternatively, you can also pick one of the two environments to be your main environment and run the other in a shrink down version so you can just run the applications.

Personally, I believe OPIE is more mature than GPE as a windowing environment for the Zaurus, and the configuration items in OPIE also appear to be more relevant for the Zaurus than they are in GPE. Thus it makes more sense to add GPE functionality to OPIE rather than the other way around.

The following will assume that OPIE is installed as the main windowing environment...

Installing X/Qt under OPIE

Alternatively, you can also use X/Qt under OPIE to run X based applications without the need to switch virtual terminals. This feature would be similar to the X/Qt functionality under Sharp/Cacko. Unfortunately, unlike the X/Qt packages that are for Sharp/Cacko which has dedicated feeds that contain packages with basic default configurations, the X/Qt package under OPIE is a standalone package of the binary without any configuration scripts or whatsoever. In order to make use of it, quite a lot of manual customisation and tweaking is required under OPIE....

Installing GPE

Although GPE is quite rudimentary you still might want to run a full X server comparable in features and usability to pdaXrom. Using the Hentges GPE image would be a good start. It is much more usable than the standard GPE install. However, there is still a need for a considerate amount of customisation effort to be put into it....

Essential Stuff

There are several essential customisations in order to get OZ working properly.


The default OZ install only has a few timezones predefined. If your timezone is not one of them, then you need to first install a package for your timezone and then configure it. My timezone package that I needed to add was: timezones-australia. Once you installed the timezone package, do the following according to your timezone:

# ln -s /usr/share/zoneinfo/Australia/Sydney /etc/localtime

The above is for the Australia/Sydney timezone. Substitute that part with the appropriate entry for you. Additionally, you also need to add export TZ=Australia/Sydney (substitute with appropriate value) to under /etc/init.d

You also need to modify locale.conf and change the timezone entry for OPIE.


The default keymapping is defined in /etc/

You can customise this file to remap certain keys. The most common change is to exchange , with / which is done by modifying keycode 51, ie:

keycode 51 = slash comma

The ` key (grave) seems to be missing. I have assigned it to Fn + q:

altgr keycode 16 = grave

Also since on Sharp/Cacko ROM a common mapping for { and } is Fn + o and Fn + p, I have added mappings to mimick those familiar key mappings:

altgr keycode 24 = braceright
altgr keycode 25 = braceleft

Since Fn + d shows a . (dot) on the physical keyboard but nothing is mapped for it, I added a mapping:

altgr keycode 32 = period

I also remapped Fn + k back to the yen character since that is what is shown on the physical keyboard:

altgr keycode 37 = yen

Keymappings common to both GPE and OPIE need to be done in, however, there are also keymappings specific for GPE and OPIE respectively which need to be configured separately. The GPE version of Hentges has fluxbox which uses /home/zaurus/.fluxbox/keys

GPE fixes

The default window manager in GPE is matchbox which runs all applications in maximised mode. In order to switch between several applications easily, it is a good idea to install the tasks applet and add it to the taskbar at the bottom of the screen.

It is also a good idea to install the cards applet as well, so you get to control the SD and CF cards.

matchbox also supports screen rotation, however, it is misconfigured in GPE. In order to fix it, add --no-flip to the matchbox-panel command in the matchbox session file:

matchbox-panel --orientation south --no-flip &
OPIE fixes

OPIE is similar to the Sharp distro/Cacko and a lot of the customisations for those can also be applied to OPIE since it is also based on Qtopia but is a newer version (version 2.3 vs version 1.5) and open source.

Unfortunately, the cardmon applet in OPIE is broken. It allows you to unmount the internal MicroDrive and does not show the SD card. To fix this, uninstall or disable the pcmcia applet and install the cardmon applet from the 3.5.4 feed instead of the feed.

You also need to install volumeapplet in order to be able to turn on/off keyboard clicks just like in Sharp/Cacko.

Additional Packages

OpenZaurus has a lot of packages in its official feed, however, it does not have everything pre-installed so many packages need to be manually installed once OZ has been installed. The following are the recommended ones that I added straight away:

Command Line tools and runtimes
  • kernel-module-rtl8150
  • kernel-module-squashfs
  • kernel-module-usbkbd
  • opie-confedit 1.2.1
  • opie-embeddedkonsole 1.2.1
  • opie-keypebble 1.2.1
  • opie-volumeapplet 1.2.1
  • opie-cardmon 1.2.1 (from 3.5.4 feed)
  • sudo 1.6.8
  • file 4.13
  • diffutils 2.8.1
  • gzip 1.3.5
  • inetutils 1.4.2
  • lsof 4.75
  • x11vnc 0.7.1
  • bitchx 1.1
  • dosbox 0.65
  • flite 1.2
  • links 2.1
  • mplayer 1.0pre8
  • mencoder 1.0pre8
  • unzip 5.52
  • zip 2.32
  • jamvm 1.4.2
  • classpath 0.20
  • jikes 1.21
  • mc 4.6.1
  • mrxvt 0.4.1
  • abiword 2.4.5
  • abiword plugins: eml, hancom, jpeg, mswrite, opendocument, openwriter, pdf, sdw, wml, xhtml
  • firefox 1.0.6
  • sylpheed 2.2.4
  • gftp 2.0.18
  • gputty 0.9.8
  • epdfview 0.1.2
  • qpdf 2.10
  • gphoto2 2.1.6
  • gqview 2.1.1
  • gxine 0.4.1
  • prboom 2.2.6

The following are applications that I really need to get working. These either don't exist in OpenZaurus yet, or are out of date and/or need fixing:

  • OpenOffice
  • fbvnc (for Spitz)
  • tightvnc
  • firefox 1.5 with plugins (java,flash,mplayer)
  • putty
  • emelfm2
  • xarchiver
  • qbedic
  • stardict
  • gthumb
  • imagemagick
  • gimp
  • festival
  • xmms (with Zaurus friendly keys)
  • quake2
  • dukenukem3d

Using Packages from other distros

OpenZaurus can also run some packages from other distros. This depends on the dependencies of those packages. For example, OPIE can run some of the Sharp/Cacko binaries because they are also based on Qt/E. OPIE is based on a newer version of Qt/E than Cacko and Sharp ROM and can run quite a few of those applications using compat libraries. However, some Sharp/Cacko applications depend on proprietary non-opensource libraries which cannot be run on OPIE. Opera for example can be run on OPIE.

Some pdaXrom packages can also be run on GPE since both are based on X11 and GTK+. However, pdaXrom also has many applications that use other display widgets such as QT or fltk which GPE does not have by default. Also, pdaXrom packages before beta4 depend on a separate iconv library which is not part of glibc. Packages compiled after beta4 no longer have this dependency just like OZ packages and also use a similar kernel as well and thus should be even more compatible.

Nevertheless, I have tried a few pdaXrom beta1 packages on OZ and they work fine. So instead of trying to build useful packages that don't exist in OZ, I just installed the pdaXrom package on OZ instead. The following are some of the packages that just work:

pdaXrom packages:
  • multi-aterm
  • putty
  • jikes

Similarly, debian arm packages (PocketWorkstation) can also be installed on OZ. The .deb file can be easily converted to .ipk files. In fact, the OZ .ipk format is almost identical to the .deb format.

USB Networking (via client cable)

The virtual USB network interface via the USB client cable does not currently work with Windows. It does however work with Linux. This is just standard ifconfig and route stuff once you have loaded the gadget module. You will need to load it manually after plugging in the USB cable. Don't expect it to be loaded automatically like in Sharp/Cacko or pdaXrom.

Setting up WiFi

Just plug the CF WiFi card in and provided it is supported, the appropriate drivers will be loaded for it and you can configure your network using the network applet. This is straightforward stuff if you know how to setup a network.

Setting up Bluetooth

Just plug the CF Bluetooth card in and provided it is supported, the appropriate drivers will be loaded for it and you can setup PAN or GPRS with the applet. Make sure you don't forget to set your PIN.

Setting up Ethernet network

Using a USB Ethernet adaptor you can connect to an ethernet network. Usually, those adaptors use a rtl8150 or pegasus chip so installing the appropriate kernel module will enable the adaptor as eth0 once plugged in. The rest is standard ifconfig and route stuff.

Configuring Samba and SSH

You can share the files on your Zaurus via Samba. Just install the samba packages and configure smb.conf. Furthermore, you can also get a remote terminal into the Zaurus via ssh and transfer files via scp. OZ by default uses dropbear instead of the more common sshd.

Configuring VNC server and client

Configuring VNC allows you to remotely control other machines or allow other machines control your Zaurus.

USB Keyboard and Mouse

You can plug in external USB keyboard and USB mouse if you have a USB host cable. Using a USB hub, you can have multiple USB devices connected concurrently. The USB keyboard should be correctly mapped and just work. The USB mouse might be a bit more problematic since it might fight for control with the stylus.

Chinese/Japanese support

Support for displaying and inputting Chinese and Japanese is possible. You will need to install unicode fonts with the extended character set that supports the extra Chinese and Japanese characters. Additionally, an input server such as SCIM and inputmethod plugins also need to be compiled and installed...


Backups are always important for recovery in case something goes wrong or accidental deletions. However, doing a NAND backup on any of the C3x00 series models in OZ is useless since it does not even use the NAND flash area. The backup application provided by OZ only backs up the PIM data which is a good thing but not sufficient. A gzipped tarball of everything seems to be the only solution at the moment.

Multi Booting

OZ is able to facilitate booting of different media through the use of altboot. With the addition of kexec to altboot, it is even able to boot another kernel. Using these features you can boot different versions of OZ or even other distros from SD or CF cards.

Altboot allows you to boot straight off an ext2 filesystem from a physical media such as an inserted CF or SD card, or mount an ext2 loop back filesystem from either CF or SD card as well. I have enhanced the altboot config and menu to also allow you to boot off ext2 loop back images from the internal MicroDrive located on /hdd3 partition. In order to do that, place the loop back images under /media/hdd/boot-images and add 30-bootHDD to /etc/altboot-menu and update altboot.conf and altboot.func.

If you want to disable the altboot menu from being shown several times, then disable altboot on the ext2 loop image. This prevents altboot to be run a second time during bootup once you have selected which image to boot.

C/C++ development

A native on-board gcc compiler can be used to develop and compile applications directly on the Zaurus. Although this is not as fast as developing on a PC, it is quite useful when you are using your Zaurus as a laptop replacement and want to build your own apps without access to a PC running Linux.

To install gcc so you can develop X applications, do the following from a terminal:

# ipkg -nodeps install make diffutils pkgconfig
# ipkg install gcc-symlinks g++-symlinks binutils-symlinks libc6-dev gtk+-dev ncurses-dev libpng-dev libjpeg-dev libungif-dev libx11-dev libxpm-dev libxft-dev libxrender-dev libxt-dev xproto-dev libz-dev

Alternatively, I have also created a cramfs image containing a ready made gcc bundle similar to the pdaXrom native gcc image. The native gcc packages for OpenZaurus are based on gcc 3.4.4 and glibc 2.3. I have created an image zgcc-344.cramfs which was build using the armv5te packages from the feed. The following packages are a minimum set that is required to compile C/C++ code and build simple packages:

  • cpp_3.4.4-r5_armv5te.ipk
  • cpp-symlinks_3.4.4-r5_armv5te.ipk
  • binutils-dev_2.
  • binutils-symlinks_2.
  • binutils_2.
  • diffutils_2.8.1-r0_arm.ipk
  • g++-symlinks_3.4.4-r5_arm.ipk
  • g++_3.4.4-r5_arm.ipk
  • gcc-symlinks_3.4.4-r5_armv5te.ipk
  • gcc_3.4.4-r5_armv5te.ipk
  • libc6-dev_2.3.5+cvs20050627-r3_armv5te.ipk
  • libstdc++-dev_3.4.4-r5_arm.ipk
  • make_3.80-r0_arm.ipk
  • pkgconfig_0.15.0-r3_arm.ipk

With this mimimal set of packages, I can compile simple C/C++ programs. I have build a cramfs image (zgcc-344.cramfs) which includes many more development packages and tools for easy compilation of X11 applications similar to what the pdaXrom zgcc image offers. See packages.txt for a list of packages included in this cramfs image.

In addition to installing the packages, I also had to add a few symbolic links as well as apply some changes in the directory structure as well as some configuration changes. All the required changes have been captured in

To use the cramfs image, mount it under /mnt/zgcc and run the zgcc-setup script to create the necessary links. Finally, source zgcc-env and you are ready to compile.

# mount -o loop zgcc-344.cramfs /mnt/zgcc
# /mnt/zgcc/zgcc-setup
# . /mnt/zgcc/zgcc-env

To compile a little test application using the C compiler (gcc), create a file called hello.c with the following content:

#include <stdio.h>
int main()
printf("Hello World for C compiler\n");

Then run the following command which will generate an executable called hello.

# gcc -o hello hello.c

To compile a little test application using the C++ compiler (g++), create a file called hello.cpp with the following content:

#include <iostream>
using namespace std;
int main()
cout << "Hello World for C++ compiler\n";

Then run the following command which will generate an executable called hello++.

# g++ -o hello++ hello.cpp

To compile source packages, first download and extract the source tarball. Then do the following (for example grisbi):

# bzip2 -dc grisbi-0.5.9.tar.bz2 | tar xvf -
# cd grisbi-0.5.9
# ./configure
# ./make
# ./make install

Java development

A java compatible environment exists on the Zaurus via the use of jamvm and classpath as an alternate JVM and jikes as a compiler.

To install java so you can run and compile java applications, do the following from a terminal:

# ipkg install classpath
# ipkg -nodeps install libffi3 jamvm jikes

Back to Main Page

DISCLAIMER: The information contained on this site is provided AS IS. No assurance is given to the accuracy of the information or instructions provided. You may use this as a guide but do not blame me if anything bad happens to your system or your data. Use anything described on this site at your own risk. I shall not be made responsible for anything you do.