The C700 is a nice device that can make any hacker drool.
Here is a list of pointers and remarks
that I have collected between november 2002 and november 2003.
The SL-C700 is a swell machine — a tiny ARM-based PDA that has
a great bright active matrix 640x480 VGA-resolution 16bpp color display,
together with a QWERTY keyboard.
All in all, it's exactly the hardware I was dreaming of in 1993,
now made real.
The problem is that the software doesn't quite fit my needs,
and I've no time to hack it all.
Also, the tiny fonts on the tiny screen are too much for my impaired vision,
and the tiny keyboard doesn't fit my typing needs.
So I am back to using my trusty old
Jornada 820 instead.
2 Buying a SL-C700 outside Japan |
Sharp sells its SL-C700 only in Japan,
but you can import them from various people,
who will also configure them in English for you.
3 Using Linux on the SL-C700 |
Random pointers to sort out:
1,
2
-
When the machine initially boots up,
you must wait for three screens;
after the third one, you click and end up on a screen with the Qt logo,
some text on japanese, a cursor that oscillates between 5 positions,
and no apparent way out.
Actually, it's a touchscreen calibration program:
use your stylus to click on the cursors, and be done with it!
Now your machine is ready, running Qtopia,
the Qt based graphical user interface for PDAs.
You can use the instructions from
Zaurus Kaikan
or another site above to switch to English.
-
There is an integrated buzzer for sound output,
but for decent output and any input, you must use external
headset and microphone.
However, there is but one jack for both input and output,
so you must plug and unplug either microphone or earset
depending on use.
I have tried to plug both in simultaneously with a multiplexer,
but you lose a lot in gain;
actually, my headset can serve as a microphone with a better gain
than the simultaneous combination of microphone and headset in a multiplexer.
The microphone plugged in alone has the best gain,
but it's an annoyance to have to plug a different connector
everytime you want to hear what you just recorded.
In any case, the machine is not quite ideal with respect to recording
(there's a lot of background noise, too).
Darn.
Finally, I opted for a peripheral that has an earphone on one channel,
a microphone on the other channel, and plugs into the 3.5mm stereo jack.
I've seen headsets with one jack for three channels
(stereo headphones and mono microphone) but I haven't tried them,
so I don't know if they will work (information welcome).
-
IP-over-USB can be achieved by following the instructions in
this post.
At first, I tried the
usbdnet module
(originally from
this site
and repackaged
here);
however, this kernel module is very unstable,
will work on one machine, fail on another one.
The usbnet driver from linux-2.4.21-rc2
or a recent 2.5 kernel reportedly works much better,
and my own experience concurs to this rumor.
However, due to buggy interaction with other parts of the kernel
(memory being released before it ceases to be used?),
all these modules may crash the kernel and bring the whole system down
if/when Zaurus goes to sleep while the USB link is active
(at least up to version 2.4.21).
Note that the Zaurus SL-C700 has an ID of 04dd/8007,
and that you might have to add it to the driver manually
by duplicating the 04dd/8006 entry,
if your version of the driver doesn't know it yet (e.g. in 2.4.21).
-
Processor: the CPU in the C700 is an Intel XScale PXA250 at 400MHz
(optimize with gcc --arch=armv5l).
The PXA250 has a stupid bug that Linux has to work around
by disabling the cache write-back feature,
which makes the processor much slower
than it could otherwise be, depending on the usage pattern.
See the
processor errata.
The successors to the C700,
the C750 and C760, use a fixed PXA255 processors,
and are thus significantly faster, despite the same clock speed.
They also have more memory and longer-lasting batteries — real good stuff.
-
The Sharp ROM ships with a deficient terminal application
(not 8-bit clean, gets confused by non ascii characters;
sends SIGSTOP and loses tty settings when the machine is suspended).
It has a deficient web browser
(strips HTML files to 65534 characters;
doesn't realize I'm connected to the net via USB and
annoyingly asks whether I want to connect at every page;
no directory index;
font size limitation).
It has a deficient stylus input support, at least for the english keyboard
(applications gets garbage instead of ASCII input).
I have gathered enough essential programs to survive
on top of the Sharp ROM
(a sensible konsole, zsh, less, screen, jed, ssh, cvs, perl
— although somehow out-of-date versions).
But I can't manage to get a 8x16 font (or even 7x15)
for a real 80x25 or 80x30 full screen VGA terminal.
All in all,
I long for a better software distribution that better fits my needs.
-
I've tried OpenZaurus'
experimental C700 support
(official experimental binaries
— another guy has compiled
a more recent version
— install guide
— c700 specific instructions).
There is a
discussion forum about it,
and you can also try find some help on
irc.freenode.net channel
#openzaurus (also see #zaurus and #openembedded).
OZ seems to have up-to-date packages, european character recognition,
a cross-dev solution and a lively community, so it is the long-term bet.
-
Here are the issues I had
with the current (2003-04-26) experimental version of OZ for the C700.
Flash upgrade happened correctly, and
I ended up in the Opie stylus calibration screen
(Opie is the free software spin-off of Qtopia).
No problem until then.
-
After you calibrate your stylus, however, OZ detects that the default date
(January 1st 1970) as incorrect and asks you for a new date;
however, it then dies with a window
"Error: could not start the application systemtime",
which window pops up again anytime you try to set the date
from the clock application.
Happily, it is possible to set the date from the command line,
though the busybox version of date cannot parse as input
the output of GNU date on my desktop;
you must use the date -s MMDDhhmmCCYY.ss format,
so I can set time to May 27 2003 23:33:25 with:
date -s '052723332003.25'
(the .25 doesn't seem to work, but we can live without it).
With a proper network connection (see below),
you may just set time from the desktop
through which you connect to the network with
date -s $(ssh desktop date +%m%d%H%M%C%y)
You can also configure your machine to get time from NTP.
Later on, when you have a reachable OZ feed,
you can ipkg install opie-systemtime,
and from then on you can set the time from opie.
-
Next problem was lack of autodetect for the IP-over-USB on the OZ side.
You have to insert module pxa_ib for that,
then you can ifconfig and route as usual
with IP device usbd0.
I couldn't find where to change the autoconfigured IP address,
so I have to ifconfig anyway from a script I launch manually.
Similarly, I have to run a script manually on the Linux desktop
so as to configure the IP address (there it's usb0),
routing, firewall, NAT, etc.
But I also have to run a script manually before
to disconnect the cable or shut down the zaurus
so as to avoid system crash on the desktop.
-
ssh was preinstalled with OZ.
From the main feed, I could easily install the following packages:
rsync, cvs_client, less, sox, konqueror-snapshot-full.
From another place, I got an ipk for screen,
and a deb for zsh (you have to force installation with ipkg)...
-
As for memory, the 32MB of RAM, without swap
(well, you could use CompactFlash
despite it's being very slow at writing
and with a limited number of allowed writes,
but I guess that it'd require a microdrive to have real usable swap),
it's not much, especially since the system isn't usable
without a fancy C++ GUI and software originally designed for desktops.
Whenever I launch two vim sessions in a konsole, one page in konqueror,
and the mediaplayer, the machine runs out of RAM, Opie dies,
and I am back at the linux console.
I suppose that it's better with the 64MB of RAM on more recent Z's,
but still that's a serious limitation.
-
When at the linux console, just running qpe
won't give you a working opie environment,
for opie will be confused at the screen rotation setting
(the menu bar remaining on one side even though you rotate, and similar stuff),
not to talk about having to redirect standard error output to /dev/null
to avoid cluttering the screen with console error messages.
The linux console is also unusable as is,
because it doesn't handle the power management, the on/off key, etc.
Plus you can't change virtual consoles, etc.
I haven't tried X yet.
-
Remaining problems I haven't solved yet:
(1) With OZ's mediaplayer, playing sound is so jerky as to be unusable.
I haven't even tried recording.
(2) The OZ keymap is different from the Sharp ROM keymap,
and I haven't found the documentation for the OZ layout,
or how to rebind the keys.
Here is what I've been told about keyboard bindings:
For opie terminal, the bindings are found in qt/embedded sources in
src/kernel/qkeyboard_qws.cpp;
see the numerous keyboard handlers, find the one that applies here.
For pure console, in linux kernel sources
drivers/char/corgi_keymap.map controls keymap
use loadkeys/loadkmap/dumpkeys to fiddle with it.
(3) the konsole font size maxes out at 6x13,
whereas I'd like to use a 7x15 font,
a 8x16 font or bigger fonts even;
I'd also like bigger and antialiased fonts in Konqueror.
I'm told some people have since released fixed versions.
(4) I miss some software such as a decent editor
(emacs or at least jed,
both of which require a working control key),
sound decoder/player and recorder/encoder (ogg and mp3),
clisp (ok got it now),
scribe, dict, ispell.
-
Building stuff from a i386 cross-development platform is said to be easy,
so that I should be able to fix these and gather my favorite programs.
For the development environment, go to #openzaurus on
irc.freenode.net
and ask the following tidbits of information to ibot:
oz buildroot, oz snapshot, oz bk, bitkeeper.
As a summary, after installing bitkeeper, you may
bk clone bk://openzaurus.bkbits.net/buildroot buildroot-oz; # setup
cd buildroot-oz; bk -r co -q; # checkout or update
cp def-configs/corgi-opie .config .. ; make oldconfig; # configure
make menuconfig ; # customize the configuration
make; # compile things
To update your repository, try
cd buildroot-oz; bk pull; bk -r co -q
For more information, read the faqs on
bitkeeper.com.
The new build system (being developed) is at
http://openembedded.bkbits.net/.
-
Check what you installed where and create or check symlinks to there
with such commands as ipkg-link list /mnt/ram.
Where is the documentation of ipkg and its friends?
Latest news: I sold my Z to a friend
who has got more time than I have to make the device usable.
He lives happily with the Sharp ROM and additional stuff.