Writing Tux Daemon
- Linux On Mobile Computers - -> Linux Mobile Guide

Zaurus SL-5000/5500

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.

Screenshot of the SHARP Zaurus SL-5500 PDA.

The SHARP System

The official site for information about Linux on the Zaurus you may find at SHARP Japan. Do not be afraid, it is in English. :) 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, which is not that useful at the moment. BusyBox , provides nearly all UNIX-commands available on the official system.

The Community Systems

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

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 themselves 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.

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 stick 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.

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.

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.

Cross-Compiling

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.

Applications

Check the QTopia pages for more info and the QTopia - Developement pages. Or check the instructions from OPIE.

Tool Chains

Werner Schulte provides an OPIE development Live CD. The CD contains an ISO image with the tools and methods described in his 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.

Caveats

SHARP introduced a proprietary serial interface at the bottom of the Zaurus. 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 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 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.

Resources

Kernel and Community Distributions

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).

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.