Intro
You'll find some of my experiments on the zaurus slc1000:
- kphone/pi patches
- Palmos to Zaurus PIM conversion tools
- My hardware
- Benchmarks (CPU and battery)
- And of course, my PalmOpenSource database for the Zaurus
Most of the experiments are only applicable to Sharp/Cacko or QTopia based roms. Why I did not choose an x11 based distribution ?
- I think that x11 is stupid on a PDA (IMHO it's also stupid on the
desktop but there's no alternative)
- most x11 apps cannot work on a PDA (too small buttons, forms not optimal for a PDA)
- 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.
- I can still run x/qt for desperate cases...
- 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
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:
- copy AddressDB.pdb, MemoDB.pdb in the same directory as the
migration script,
- run pdb2zdb.pl on your desktop (Palm
Perl module needed)
- copy the csv files and the memo directory just created to your
Zaurus
- backup the files in
~/Applications/dtm/ !!!
- for the address book run zdbat
on the Zaurus : zdbat address -w -g -c utf8 < address.csv
- 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.