3. SHARP SL-5000/5500/C700-860/C3x00/6000 aka Zaurus

The SHARP Zaurus SL-5000/5500 wasn't the first Linux PDA, but the one with the greatest success in the Linux community and beyond.

Figure 6.2. Screenshot of the SHARP Zaurus SL-5500 PDA.

Screenshot of the SHARP Zaurus SL-5500 PDA.


3.1. The SHARP System

You may find the official site for information about Linux on the Zaurus at SHARP Japan (in Japanese). You can get the official kernel, either complete or just the patches for the Zaurus there. You can also get the official root-filesystem, that is the initrd, but without the QTopia environment. Check the documentation at SHARP how to create your zImage, bootflag and initrd for flashing the ROM of the Zaurus with your custom setup. Or go to your country-specific division of SHARP to get a complete ROM in one file called "ospack", which is Zaurus.DE for Germany or MyZaurus for the US versions. The kernel is rather old: 2.4.6 with 2.4.6-rmk2-patches and some more from Lineo. The rmk-patches are from Linux ARM Community. The root filesystem from SHARP is known for its weird structure with symbolic links all over the place. The custom compile worked. Remember to hit the "/"-key when the Zaurus displays "Wait... ", so you can choose to start a login instead of QTopia, which is not available then. Unless you downloaded QTopia, (cross-)compiled it and installed it into the root filesystem. BTW, you can create a new user with "adduser", a command provided by BusyBox. BusyBox , provides nearly all UNIX-commands available on the official system.

3.2. The Community Systems

Currently I know of two running systems: OpenZaurus and Debian (unofficial).

3.2.1. OpenZaurus

OpenZaurus tries to create the same environment as the one from SHARP, but based upon free software only. At the moment, it still uses the old kernel from Sharp, but slightly modified in regards of usage of the FLASH-ROM as RAM and division of RAM between RAMDISK and RAM. Unfortunately, the driver for the SD-controller is binary-only and thus non-free. But also SHARP itself tries to convince the vendor, SDCA, to provide the sources for the public. Moreover, OpenZaurus created a sane root-filesystem we all know from our regular Linux systems. It also replaces QTopia by Open Palmtop Integrated Environment - OPIE , which is a fork from QTopia with no relations to Trolltech anymore. All applications from QTopia should run on OPIE, but not quite: The Doom-like game called Zraycast does not run on OPIE, but does on QTopia (more or less). You can download a ready zimage, bootflag and initrd directly or checkout the sources from CVS. The downloaded images worked fine.

3.2.2. Debian

The current, unofficial version of Debian Zaurus really tries to be a regular Debian system with apt and X. A simple version of dpkg is already shipped with BusyBox , which makes it a little bit easier. The maintainer has therefore stripped down some more tools to fit them into the Flash-ROM. It uses the kernel provided by OpenZaurus and thus the one from Sharp. There are some issues with the RAMdisk, calibration of the stylus and sleep / power-off/-on. As soon as it is in a more stable state, it will join forces with EmDebian and the sources will become available (probably already furnished upon request). The downloaded images still have to be tweaked. :) All systems, including the sources from SHARP, are set to use the US keyboard layout (or the German keyboard). It seems that the keymap available is fixed in the kernel and there are no user-space tools installed per default to change this. Perhaps I will give the package "console-tools" on Debian a try.

3.2.3. PocketWorkStation

Here are some of the features of PocketWorkStation a Debian/GNU Linux distribution for PDAs:

  • Full Debian GNU/Linux operating environment, with easy access to the many GB of available software. Want the Konqueror web browser and have 50MB free space on your SD card? Run apt-get install konqueror, go eat lunch and come back to find it ready to run. No porting needed.

  • Includes X11 able to run most Linux applications - it supports virtual screens larger than the physical screen, realtime anti-aliased scaling and rotation, 3-mouse-button emulation and a full keyboard (useful i.e. if you need to send Ctrl-Alt-Del to an application).

  • VNC client fbvnc (same features as X11 above) - remote administer your NT box from your Zaurus.

  • Runs completely out of a single directory (a 256MB SD card is ideal), no re-flashing or modification of the existing operating system is required.

  • Switch between QTopia and X11 whenever you like without rebooting or needing to stop any of your X11 applications.

3.3. Synchronization with your Linux PC

The QTopia-Desktop is available as a download from Trolltech for free (as in beer): There is a FAQ, which explains the necessary steps for setup (Ethernet-over-USB). It is not quite up-to-date, because SHARP has tightened the security with their current ROM-release, so you have to give the IP-address 192.168.129.1 to your usb0 network device. You have to download and compile a patch for your kernel to use the driver usbdnet (see aforementioned website). Afterwards, a connection between the QTopia-Desktop and the Zaurus is possible. I had a lot of problems with the usb network layer on my system and could not sync properly. A switch from the driver uhci to usb-uhci for my host dit it. Just recently I had to reboot my notebook and the Zaurus due to a hiccup in the corresponding usb-net drivers. The network via an ethernet-card in the CF-slot is much more reliable than the connection via usb and you can still use the keyboard. The disadvantage is, that you cannot have a storage device in your CF-slot while you are on-line.

3.4. External Serial Keyboard

So far I was not able to get it going. There is a site which offers a serial keyboard driver and a patch for the iPAQ . Since the iPAQ and the Zaurus are based on the same CPU architecture, StrongArm, I hope that the driver provided there will also work on the Zaurus. You also need a user-space tool called inputattach, which you can also get from there (source or binary for ARM). I got a Happy Hacking Keyboard Lite with a PS/2 connector. An adaptor translates to serial which itself is plugged into to the Collie serial <-> serial connector. I do not know if this chain is even possible to work. The provided patch applied with only one failing hunk which made a trivial change in the sources (include/linux/serio.h) necessary; check the output. After having re-configured the SHARP kernel config and having compiled the modules, I transferred them to the Zaurus. The modules marked and created are: newtonkbd.o, serio.o, serport.o and perhaps stowaway.o from drivers/char/joystick/ and input.o and keybdev.o from drivers/input/. When you start inputattach, you have to use the line inputattach --newtonkbd /dev/ttyS0, _not_ ttySA0 as stated on the website. For some strange reason, the Collie serial driver does not comply to the official StrongARM documentation of the kernel, which states that the serial ports are accessible via /dev/ttySAx. And because the serial_collie.o is already compiled into the Sharp kernel, you do not have to load the generic module serial.o. Well, I also tried the serial_collie.o as a module, while it was still compiled into the kernel. There were no complaints when loading it, but the system froze unpredictably, so I had to do a soft-reset quite often. Why can I load a module whose code is already in the kernel, I wonder... Anyway, it does not work. :( I tried inputattach in the --dump mode (you have to undefine a variable in the source and recompile) and it seems that there is nothing happening between the serial port and the keyboard. The call for select (man 2 select) fails due to a timeout.

3.5. Cross-Compiling

3.5.1. Kernel

In order to build the kernel, initrd and applications you need a cross-compiling environment, GCC is preferred. EmDebian offers .deb packages for Debian GNU/Linux i386. Note: you have to look up the download links in the old site (a link is provided on the new site), because they are missing on the new site (though the download page exists). There are some dependancy problems with the g++ and libstdc++-dev packages which can be "resolved" with a --force-depends. The package libstdc++-dev has some problems finding an info-file: just create a symlink from /usr/share/info/iostream.ifo.gz to /usr/share/info/iostream-295.info.gz. You should get some pointers for other systems at the Linux ARM Community. Once installed, you can grab a standard kernel, apply the current ARM-patches and modify the top Makefile to target the arm-architecture. I did not try that so far.

3.5.2. Applications

Check the QTopia pages for more info and the QTopia - Development pages.

3.5.3. Tool Chains

Werner Schulte explains how to build a OPIE development Live CD. The CD contains an ISO image with the tools and methods described in his Opie Development HOWTO - LiveCD chapter. The CD allows the user to crosscompile OPIE programs without having a cross-compiler installed on his linux-box (also i386 embedded available).

Instructions for building a cross-compiling GCC for the Zaurus under Mac OS X.

A DemoLinux distribution to show the Trolltech Qtopia development environment for the SHARP Zaurus Personal Mobility Tool or any ARM based device running the Trolltech QPE system provided by Pellico Systems.

Zaurus Development with Damn Small Linux offers a cross-development environment to build binaries for the ARM processor used in the SHARP Zaurus Linux PDAs. You may run it either inside the QEMU virtual machine or from a Live CD.

KernelKit is a Knoppix derivative dedicated to developers of Linux device drivers and Free Software embedded systems. In particular, it includes uClibc cross-compiling toolchains for several embedded architectures (currently ARM, i386, MIPS, mipsel, PPC, and m68k) and emulators (currently qemu and SkyEye). It can be used for demonstration or training purposes, or by developers who cannot install GNU/Linux on their workstations.

3.6. Caveats

SHARP introduced a proprietary serial interface at the bottom of the Zaurus SL-5x00 series. You can buy an adaptor to a regular serial interface from them, but unfortunately, the plug is very thick and you cannot open the slide for the keyboard anymore. Hopefully, you can still plug an external keyboard into this port! You can at least plug the power cord into the adaptor so you do not have to run on battery. There are third-party adaptors available, which overcome this caveat.

There is no speaker for the soundchip of the SL-5500. You have to use the socket for the headphones to hear OggVorbis and the alikes. The buzzer currently supports only 14 different sounds defined in <kernel-source>/include/asm-arm/sharp_char.h , check for SHARP_BUZ_ALL_SOUNDS.

3.7. Resources

3.7.2. Kernel and Community Distributions

3.7.4. Applications, Desktop Environments

  1. Open Palmtop Integrated Environment (OPIE)

  2. GPE Palmtop Environment, GTK-based alternative to OPIE

  3. QTopia

  4. QTopia-Desktop

  5. The iPAQ and Zaurus Development using QPE handbook by Werner Schulte describes how to install the Familiar Linux and Qtopia / OPIE on the Compaq iPAQ Handheld (and SHARP Zaurus) and how to develop applications for the iPAQ/Zaurus using the Familiar distribution and QPE desktop from Trolltech or OPIE (the free clone).

3.8. Conversion from Palm Pilot to Zaurus

See my survey of applications and conversion tools between a conventional PDA operating system (only PalmOS yet, WinCE/Pocket PC and Epoc will follow hopefully) and a Linux PDA.