Intro

You'll find some of my experiments on the zaurus slc1000:

Most of the experiments are only applicable to Sharp/Cacko or QTopia based roms. Why I did not choose an x11 based distribution ?

  1. I think that x11 is stupid on a PDA (IMHO it's also stupid on the desktop but there's no alternative)
  2. most x11 apps cannot work on a PDA (too small buttons, forms not optimal for a PDA)
  3. I still believe that the best GUI for a PDA is PalmOS. QTopia is not perfect but it's still much better than pocketpc's or x11/gtk/whatever.
  4. I can still run x/qt for desperate cases...
  5. Cacko has already some nice features like frame buffer acceleration for the PXA270 (bvdd) and a modified 'mplayer'.

I'll also try to indentify all Sharp Zaurus free software on http://zaurus.palmopensource.com (yes, it runs Linux but there's a lot of non-free software available). Of course, I won't list in this directory all Linux console apps ported to the Zaurus, only software useful and usable on a PDA.

Kphone/pi

Zaurus running KP/Pi

The french ADSL provider 'Free' now gives for free, SIP accounts to its customers (freephonie), so i had to check if kp/pi would allow to make calls on the Zaurus ! Unfortunately no. kp/pi does not have the g711a codec. So i added it ! It's a quick and dirty hack that could not be merged upstream. It also starts faster than the original.

Here are the sources and binaries of my modified kphone/pi:

  • The original ipk
  • The patched source with binary. Install the ipk and overwrite the 'kppi' binary with  the patched one from the .tar.gz. A nice ipk will follow soon.

To complete that SIP/Zaurus kit, I bought a cheap headset for mobile phone and soldered a mini jack. If anyone knows about an headset with a 3.5 jack...


Zaurus + Wifi + KP/Pi + Kismet = The ultimate smartphone :-)

Benchmarks

CPU

Every time I get a new system, i must benchmark it (see also my linksys page). Then I know what i can do with this device (can i run povray ? can i encode mp3 in real time ? can i emulate an amiga or a PC ?). So here are my nbench results.

With nbench, at normal speed (416Mhz for the CPU 208 Mhz for the BUS), with gcc 2.95.2 and -O3 optimization I get:

BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 130.2 : 3.34 : 1.10
STRING SORT : 9.2312 : 4.12 : 0.64
BITFIELD : 3.1076e+07 : 5.33 : 1.11
FP EMULATION : 12.609 : 6.05 : 1.40
FOURIER : 13.764 : 0.02 : 0.01
ASSIGNMENT : 0.9311 : 3.54 : 0.92
IDEA : 347.36 : 5.31 : 1.58
HUFFMAN : 41.482 : 1.15 : 0.37
NEURAL NET : 0.013164 : 0.02 : 0.01
LU DECOMPOSITION : 0.42808 : 0.02 : 0.02
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 3.707
FLOATING-POINT INDEX: 0.019
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
C compiler : arm-linux-gcc (unknown version)
libc : unknown version
MEMORY INDEX : 0.868
INTEGER INDEX : 0.970
FLOATING-POINT INDEX: 0.011
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38

So, if you look at the nbench results page, the Zaurus has roughly the power of a Pentium II @ 266 Mhz, but without a floating point unit (maybe wmmx could improve this benchmark ?). Strangely enough, with gcc 3.4.4 and the same flags, the results are worse. But with gcc 3.4.4 and ' -O6 -fomit-frame-pointer -ffast-math -funroll-loops -mcpu=iwmmxt', it's much more interesting, we have a PII 300:



BYTEmark* Native Mode Benchmark ver. 2 (10/95)
Index-split by Andrew D. Balsa (11/97)
Linux/Unix* port by Uwe F. Mayer (12/96,11/97)

TEST : Iterations/sec. : Old Index : New Index
: : Pentium 90* : AMD K6/233*
--------------------:------------------:-------------:------------
NUMERIC SORT : 155.48 : 3.99 : 1.31
STRING SORT : 7.6351 : 3.41 : 0.53
BITFIELD : 4.6381e+07 : 7.96 : 1.66
FP EMULATION : 17.853 : 8.57 : 1.98
FOURIER : 11.791 : 0.01 : 0.01
ASSIGNMENT : 1.0469 : 3.98 : 1.03
IDEA : 401.99 : 6.15 : 1.83
HUFFMAN : 45.181 : 1.25 : 0.40
NEURAL NET : 0.013697 : 0.02 : 0.01
LU DECOMPOSITION : 0.48187 : 0.02 : 0.02
==========================ORIGINAL BYTEMARK RESULTS==========================
INTEGER INDEX : 4.328
FLOATING-POINT INDEX: 0.019
Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0
==============================LINUX DATA BELOW===============================
C compiler : arm-linux-gcc-3.4 (unknown version)
libc : unknown version
MEMORY INDEX : 0.968
INTEGER INDEX : 1.173
FLOATING-POINT INDEX: 0.011
Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38
* Trademarks are property of their respective holder.

(After that i cannot believe that i only get 6fps on pacman with mame... there must be a problem with that mame binary ?!)

To examine Zaurus development in an emulator, I ran nbench in qemu-arm-softmmu 0.8.2, and got 2.013 for "MEMORY INDEX", 1.078 for "INTEGER INDEX" (5.646 for the old int index) and 0.004 for the "FLOATING-POINT INDEX" on a P4 @3GHz. Maybe Qemu can also run qtopia since a 640x480 15 bits framebuffer is emulated ?

Battery Bench

With this small shell script, I've tried to find some real battery life numbers for the Zaurus. The default 1800mAH NiMH Sharp battery is indeed awsome. You use the Zaurus as an MP3 player for 24 hours ! FWI, most iPODs do not have more than 12 hours of battery life.

Recently, I've bought a new battery for my Zaurus. An 'Ebay' 2000mAH LiPO model. Very disappointing ! It's roughtly equivalent to a 1300 mAH battery... Hope I'll have more luck next time on Ebay...

CPU freq
Vcore
Running task
LCD Backlight
Run time. Sharp battery 1800mAH
Graph
Run time. Ebay battery 2000mAH
416 Mhz
1.35v (0xA)
idle
minimum
519 min = 8h39min
battime1.png

416 Mhz
1.35v (0xA)
Kismet with a Sandisk ConnectPlus CF card
minimum
254 min = 4h15min
battime2.png

208 Mhz
1.15v
Kismet with a Sandisk ConnectPlus CF card
OFF
419 min = 6h59min
battime5.png

416 Mhz
1.35v (0xA)
DNETC (100% CPU)
minimum
330 min = 5h30min
battime3.png
249 min = 4h09min
143 Mhz
1.25v (0x8)
MP3 playing with mplayer
OFF
1440 min = 24h !!!
battime4.png

PalmOS PIM conversion

Here's a small Perl script which converts .pdb PIM PalmOS files to CSV files, which in turn are used by zdbat to add entries to the zaurus PIM applications (for sharp and Cacko roms). The current release converts AddressDB.pdb to Sharp's address book, and MemoDB.pdb to sharp text editor and notes.

How to use:

  1. copy AddressDB.pdb, MemoDB.pdb in the same directory as the migration script,
  2. run pdb2zdb.pl on your desktop (Palm Perl module needed)
  3. copy the csv files and the memo directory just created to your Zaurus
  4. backup the files in ~/Applications/dtm/ !!!
  5. for the address book run zdbat on the Zaurus : zdbat address -w -g -c utf8 < address.csv
  6. for the memos simply copy the files in the 'memo' directory to ~zaurus/Documents/Text_Files, or run 'zdbat memo -w -g -c utf8 < memo.csv' if you want to see your notes in the Memo application.

TODO: Datebook conversion.

Zdbat is a nice GPLed tool coded by Yutaka Yamada :  http://tbox.jpn.org/wiki/linuzau/wiki.cgi?zdbat

My Hardware

Wifi with USB Ralink devices and more

One of the best features of the Zaurus,is that you can connect anything on the USB port. You can use desktop Linux device drivers to make any usb device work (scanner, dvd burner, wifi, joysticks...). I have a nice 54mbits wifi dongle with a Ralink chipset, but the driver is not included in the stock Cacko rom.

Here is my latest rt2570.o module, compiled from the CVS sources, for Cacko 1.2.3 2.4.20 kernel.

You may think: Great ! I can use Wifi and plug a CF memory card ! But no... The driver does not seem to work unless the Wifi dongle is connected to a powered hub. Very strange, since this dongle should draw less than 300mA... Please, send me a mail if it works with (or without) a hub.

For ZD1211 and Atmel based USB wifi cards (503A, 505, etc), same problem: they should work but do not ! If you want to try on a Cacko 2.4.20 kernel, download my compiled drivers here.

Wifi with a Sandisk Connect+ CF

For this one I just followed the instructions found on http://www.oesf.org/forums/index.php?showtopic=14341&hl=sandisk_plus&st=15 . I installed sandisk_plus_0.1_arm.ipk and the card firmware in /etc/hotplug/firmware. This card then works perfectly with Kismet. These cards can be easily bought on Ebay. You should also replace Cacko's 1.8.4 Prism firmware, with the 1.7.4 one, which I found more stable.

Wireless tools and drivers

I've compiled a few utilities and drivers, to keep your Zaurus running Cacko a little more up to date:

  • Wireless tools v28 with wireless extensions v20
  • Aircrack-ng v0.7. Airodump and packet injection works with the Hostap drivers below. Should work on any Zaurus distrib.
  • Hostap drivers 0.4.9 with packet injection patch. Compiled for the Cacko's 2.4.20 kernel. Works nicely with aircrack-ng above. To install it, go to /lib/modules/2.4.20/kernel/drivers/net/wireless/, remove the hostap* links, and unpack the archive here. Finally, update the dependencies with 'depmod -a'.

As always, the source of the packages above is here.

Using Cheap ebay GPS receivers

On Ebay you can find cheap USB GPS receivers. The one I bought has a a CP2101 USB to serial chip for the interface which is only supported in latest 2.6 kernel. Hopefully, someone has backported it to the 2.4.

You'll find here a tar containing the full sources and cp2101.o compiled for the Cacko 1.23 2.4.20 kernel. As a bonus, here is the module compiled for a Debian sarge 2.4.27 k7 kernel.

Note that during my experiments I've noticed that qpegps only works with it's own gpsd. If you need a gpsd that works with kismet, you'll need to grab the one distributed with gpsdrive.