After many happy years
with my palmos PDA, I started being angry
with
some of this OS limitations (buggy bluetooth and poor range,
crappy web browser), and I got tired of waiting for an hypothetical
Linux/PalmOS device. So i bought a sharp zaurus SL-C1000. 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 ?
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.
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:
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 :-)
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:
TODO: Datebook conversion.
Zdbat is a nice GPLed tool coded by Yutaka Yamada : http://tbox.jpn.org/wiki/linuzau/wiki.cgi?zdbat
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.
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.
I've compiled a few utilities and drivers, to keep your Zaurus running Cacko a little more up to date:
As always, the source of the packages above is here.
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.
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 ?
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 |