Zaurus stuff

You won't find much duplicated material from somewhere on the net. Having said that, most things which are not mine are from Zaurus DevNet Forums. Go there. Superb resource, but not very technically oriented.

Be a developer!

Well, this machine is so much less user-friendly than my previous palm that you don't really have a chance! :-) And it runs Linux, so it's hacker-friendly.

My configuration

Click on any of those links to get my comment.
Sharp Zaurus 5600, ROM 1.0
This was most powerful and newest model at the time I bought it. It has better battery than previous model 5500, transparent cover (very handy for taking a quick look at your calendar), plastic stylus (which is degradation from plastic-metal one which came with 5500) and really good speaker.
Socket Communications Low Power Wireless LAN CF Card
Great card. Really saves you battery life. I was able to get almost 4 hours of WiFi access. A bit expensive, though.
SimpleTech 128MB MultiMediaCard MMC
I wanted MMC card and not SD so I can compile my own latest-and-greatest kernel. That is a good choice, but this particular card worked first time I inserted it, and then started to report read errors. I returned it with hope that I will get another one. But, they just returned my money. Uh, well... (see below)
Amzor 128MB MultiMediaCard MMC
When I realized that I won't get new MMC card (that was after I returned to Croatia), I bought this one. Never heard or Amzor? Neater am I. Is still doesn't work (I guess that my slot in Zaurus is defective). It works fine in USB Card reader!
Ritz 64Mb CompactFlash by Lexar Media
I didn't plan to buy CompactFlash card at first, but since I needed it to change my ROM (err, kernel...) I bought this one in local (USA) photo shop. Probably paid too much for it, but it comes handy as a mp3 storage and for backups.

How to compile new kernel for Zaurus 5600?

First, a warning: kernel source code doesn't include kernel module for SD/MMC slot. I don't care much, because my slot doesn't work. You have two options: you can compile just additional modules (which will work with original Sharp 1.0 ROM) or recompile whole kernel and insert binary module (which might or might not work depending on changes that you made to kernel, e.g. EXTRAVERSION. insmod -f might work though).

Well, it's not easy. Sharp (as of this writing, 2003-06-14) hasn't yet released any ROM source (a.k.a. Linux source code to their specific changes), so you have to find your way around.

One of the possibilities is to use source code for Zaurus B500 (which is same as poodle -- so much names for same thing). You will need one of following files from

  • linux-c700-b500-20021214-rom1_00.tar.bz2 [direct download] - full kernel, 25Mb
  • linux-2.4.18-rmk7-pxa3-embedix-slc700-slb500-20021214-rom1_00.bz2 - just patch for kernel, you will need original kernel from, but I suggest downloading full kernel above
That is, of course, site in Japan. If you don't know Japanese (like I don't) just hover over the link to find file.

You will also need Sharp's version of gcc for cross compile. The one included in The Embedded Debian Project won't work, sorry (it doesn't include gcc which understands -mxscale flag which Sharp's Makefile uses).

On the other hand, if you just want to compile additional module for your current kernel (which I highly recommend because you won't brick your Zaurus) you will actually want to compile with same gcc.

First, copy default configuration for poddle (cp arch/arm/def-configs/poodle .config) and run usual make oldconfig, make dep, make bzImage, make modules.

I have tried this kernel (it's under arch/arm/boot/zImage), and it really works! I even separated drivers for WiFi card in modules so I can change them more easily. That should (along with link at hopefully) solve the problem of "not having kernel source" for 5600.

Since this was written, Sharp has released source of kernel for 5600. That's a good news, and since hackers have been adding features to it (like preemptive patch). Good page about that is located at Zaurus User Group site.

IPsec on my Zaurus

I decided to use IPsec tunnel implementation which is not FreeS/WAN because it would require me to recompile whole kernel. This way, you can recompile just modules for your kernel.

-= cryptoapi-0.1.0 and ipsec_tunnel-0.9 modules along with ipsecadm utility
Warning: this modules work only on Sharp ROM 1.0 on Zaurus 5600.
ipsec_tunnel-2.4.18-rmk7-pxa3-embedix.tar.gz 152 Kb

I would really suggest that you read IPsec tunnel documentation if you want to use this. It's really short and simple. For impatient, let's just say that you have to install above .tar.gz in root (/) of your Zaurus and then create /etc/ipsec/zaurus.key key file using (on host machine):

dd if=/dev/random of=/etc/ipsec/zaurus.key bs=24 count=1
Then, scp that key file to Zaurus (if your Zaurus is sitting in USB cradle, you might use other methods, but don't say that I suggested that) and start IPsec tunnel using provided scripts on host and zaurus . You might want to change scripts because they use fixed IP addresses. Encrypted network is between on host and on Zaurus.

How to upgrade ROM on Zaurus 5600 without loosing your data?

You have heard instructions about upgrading the ROM which include CF card and pressing C and D? For start, those aren't applicable to Zaurus 5600 because original Sharp documentation said that you have to press Q and T but, I couldn't get that to work eater.

However, you can use Maintenance menu to perform same task (and save your data) like this:

Prepare your CF card

You will have to have following files on your card:


I suspected that is the crucial component, and I got it from Sharp ROM 1.07 or 1.10 (both have file with same md5sum). However, now you can peek inside this shell script thanks to Sash's encsh.c which works like a charm on this file. Compile encsh with make encsh, do encsh -d and take a look inside ... File mversion.bin has version which will be displayed in System Info.

All other files for ROM 1.00 (initrd.bin, mversion.bin and zImage.bin) you can take from Sharp community site.

Preliminary benchmarking of ROMs 1.00, 1.07 and 1.10 shows that writes to flash with ROM 1.10 is about 257.89% slower than with 1.00 or 1.07. Maybe that's why Sharp is delaying it's release...

Flash your ROM

  1. Insert the CF card to the SL-5600, and connect AC adapter
  2. Push Reset button
  3. Close the battery cover, and move the Lock Switch to the Lock position
  4. Press ON Key while pressing OK key
  5. The Maintenance menu will be displayed
  6. Select "4. Update" by using cursor keys and push OK key
  7. Select medium from which you want to load update (in my case, "2. CF")
  8. Select "Yes" button by pressing left cursor key, and push OK key
  9. You will get Zaurus CF updater which will display percentage of kernel and flash (initrd) update. Much better than blinking LEDs!
  10. Zaurus will reboot automatically after flashing is over...
  11. The Sharp logo will be displayed after a few seconds, and after about 2 minutes, Welcome screen will be displayed.

Procedure is also claver: it will warn you if you don't plug your Zaurus in AC adapter.

Syncing over anything - from Zaurus to VMware

There are very good instructions on Zaurus forum how to sync over wireless. But, I wanted to sync with VMware, and USB driver doesn't seem to work in VMware. So, I applied my knowledge of IP networks and instructions for wireless sync to produce sync between USB cradle on host computer and InteliSync in VMware.

I would suggest to update your VMWare kernel modules with version from Petr Vandrovec is doing great job maintaining those drivers for community.

This is second version of this instructions: last one had one little problem: it required you to hand-edit configuration files created by That would work great until you re-run (which is needed if you install or compile new kernel). This version users some deliberate network mis-configuration to make changes permanent.

On Zaurus

Change your IP number on Zaurus to and connection to USB - TCP/IP (advanced) like this:

IP, USB - TCP/IP (advanced)

On Linux host

Setup your IP networking with zaurus. I use following in /etc/network/interfaces for my Debian:

iface usb0 inet static
	pre-up modprobe usbnet
	post-down rmmod usbnet
So, my Linux USB device will have IP and Zaurus will use already configured IP

Now, run and edit vmnet1 host-only adapter settings so that network is and netmask is

This will split network in two parts: lower (IP 1-127) will be bound to USB interface (and Zaurus will have IP and upper (IP 129-255) which will be bound to VMware (and vmnet1 interface will have IP while DHCP on this interface will offer IP numbers This is very important, because we want to keep IP free for Windows inside VMware so that Intelisync (which has fixed IP numbers .1 and .2) will work.

On Guest Windows 98

First, change network setting for interface which is host-only adapter

WARNING: This part of page is currently in writing. For some reason (known only to me) I decided to upload this page to all mirrors (probably some other content changed and I wanted mirrors to reflect that). So, you can't follow rest of this instruction and expect this to work. You have been warned.
ipconfig /renew 1
Your adapter should get IP address

Start your VMware create route.bat file and add it to StartUp.

route add mask
route add mask
If you are not using Windows 98 as I am, you might want to use route -p in cmd.exe which will add permanent route for Windows 2000 and above.

Again on Linux host

Add explicit route to your zaurus and arp entry for your VMware host-only adapter (you will have to start your VMware to get vmnet1 interface and IP address

root@llin:~# route add -host dev usb0
root@llin:~# ping -c 1
root@llin:~# arp -i usb0 -s `arp -a | cut -d" " -f4` pub

You might want to add those lines in /etc/network/interfaces like this:

	up route add -host dev usb0
	up ping -c 1>/dev/null
	up arp -i usb0 -s `arp -a | cut -d" " -f4` pub
Now you should be able to ping from Zaurus as well as from VMware.

Start sync

Create shortcut in Windows 98 guest to "C:\Program Files\Sharp Zaurus 2\Intellisync for Zaurus\IS4SL.exe" /E and enjoy syncing.

Unsorted stuff

-= Scripts for /etc/hotplug/usb/ to make your Zaurus automatically recognized when inserted in cradle on Debian unstable (README is inside).
Strangely, other instructions didn't work for me.
hotplug-usb.tar.gz 793 bytes


If you want to convert data from Keyring for Palm OS on PalmOS to ZSafe, you can use my dump-gkr perl script with option -4 for ZSafe 1.x format or -6 for 2.x format.