What interest me in ARM world

When I published my last post about ARM boards there were many questions and suggestions with interesting devices. Thank You all for it.

But there were also suggestions about ARM9 or ARM11 based devices. So I decided that it is good time to write what interest me now in ARM world.

But first some inventory. I had/used/have several devices with ARM cpu:

  • StrongARM (armv4) one:

    • Sharp Zaurus SL-5500 (which took me to ARM world)
  • ARM920 (armv4t) ones:

    • Openmoko GTA01 bv3, bv4 (s3c2410)
    • EDB9301 (EP9301 cpu)
    • Sim-One (EP9307)
  • ARM926 (armv5te) ones:

    • Sharp Zaurus sl-5600 (pxa250)
    • Sharp Zaurus c760/sl-6000 (pxa255)
    • Sharp Zaurus sl-c3000 (pxa272)
    • Sheevaplug (kirkwood)
    • Atmel devboards (at91sam9263, at91sam9m10)
    • ST-Microelectronics/ST-Ericsson NDK-15, NHK-15 (st88n15)
    • Nokia 770 (omap1710)
    • Linksys NSLU2 (ixp425 iirc)
  • ARM1136 (armv6) ones:

    • Nokia N810 (omap2430)
    • Bug r1.0, r1.2 (i.mx31)
  • Cortex-A8 (armv7a) ones:

    • Beagleboard B7, B7, C3 (omap3430)
    • Nokia N900 (omap3430)
    • Nexus S (exynos3)
    • Genesi Efika MX Smartbook (i.mx51)
    • Freescale Quickstart (i.mx53)
  • Cortex-A9 (armv7a) ones:

    • Pandaboard EA1, A1 (omap4430)
    • Archos G9 80 (omap4430)

All of that during last 8 years. Most of my ARM live so far was around ARM926 based devices (some of them still can not be listed here) and I do not want to go there again. Kirkwood core was fastest one with 1.2GHz clock and 512MB of RAM it was really fast machine. I only missed Serial ATA in my Sheevaplug (rev 1.0) but even with hard drive on USB it was nice improvement.

Then I played a bit with ARM11 processors. Ok, they were faster than most of ARM9 cpus but I already had experience with Sheevaplug. And after few months first Cortex-a8 board landed on my desk — I got Beagleboard B7 from Bug labs as test platform for their new device. This was improvement!

I still remember my reaction when connected it to normal LCD monitor and saw it used at 720p resolution (1680×1050 was a bit hard for omap3). Moved to Nokia N900 few months later and found that fast cpu means nothing when paired with slow storage and not enough memory for system.

So today I prefer to not look below Cortex-A9 (or comparable cores like ones from Qualcomm or Marvell). Hope to play one day with Cortex-A5 (which should replace ARM926 one day) just to see how low-end armv7a cpu behave.

And wait for ARMv8 to hit market.

My palmtops story

All started years ago — I was living in Wrocław then. Each Thursday groups of friends met in pub. About half of them used PalmOS powered palmtops. Due to them I started thinking about buying palmtop for myself.

Palm M105

About year later I bought my first PDA: Palm M105. It had monochrome screen (16 shades of grey), PalmOS 3.5 and 8MB of RAM (which is also used as storage). Standard AA(A) batteries were able to power it for quite long time. I moved my calendar, address book into it, used it as e-book reader (with Plucker), public transportation timetable (Przewodas and Fahrplan) and many others things.

Sony CLIE SJ30

One day I decided that 160×160 screen is too small and colour would be nice thing to have. So I bought Sony CLIE SJ30. It was powered by PalmOS 4.1 and had great 320×320 screen. Took me a bit of time to collect apps which were able to make use of that resolution (as PalmOS treats all devices as 160×160 ones — only fonts looks better). I also started hacking some applications to make use of HiRes screen and fonts.

It was nice device and my first one with memory card slot — I used 128MB MemoryStick with it.

But hacking applications was frustrating — system did not made any use of HiRes screen, GUI sizes were mostly hard coded so even replacing fonts with smaller ones did not give more informations on screen. I decided to change platform.

Sharp Zaurus SL-5500

At that time (end of 2003 year) I had two other choices: PocketPC or Linux. I decided to not go into PalmOS 5 as it was not better then older versions. So after checking market I decided to go Linux way (which was even easier as I used Linux on Desktop for quite long time then).

And that’s how I bought Zaurus SL-5500. I found someone who fetched it from USA for me (I even got 3 months warranty from Sharp as it was refurbished device). It was costly device — I had to sell CLIE, its memory card to be able to get “collie” into my hands.

13 February 2004 Zaurus arrived with SharpROM 2.38 installed. It was nice change from PalmOS world but it lacked “hackability” so I decided to switch into open alternative: OpenZaurus. It was 3.2 version (last one with binary compatibility with SharpROM).

Change was great — finally system which I can hack as much as I want to. After some time I switched to “3.3-pre1” version which was totally experimental but it had newer OPIE. But also it lacked software due to not being compatible any more with SharpROM…


I started searching for tools to build some applications. First it was “buildroot” used by OpenZaurus but some guys told me that I should forget about it and start to use something called OpenEmbedded.

Gods… this was hard tool. I had to buy extra RAM to my desktop machine just to use it. But after about week (or two) of asking stupid questions to Kergoth and Mickeyl I finally got ideas how to use it and started to build extra applications for collie (which still was using OZ 3.3-pre1).

My Zaurus started to have less and less packages from OpenZaurus 3.3 and most of installed software was built with OpenEmbedded. So one day I decided to build whole image with OE. It took me week. After that I got write permissions and joined OE core team 😉

We worked hard on our build system and in September 2003 OpenZaurus 3.5.1 was released. It lacked some software present in previous releases but also gave many others. Community started to use it, then some developers joined us so next releases had more software, more machines supported, more environments (not only OPIE but also GPE).

Zaurus c760

Time passed… I was spending lot of time on user support and one day people from #oe and #openzaurus channels started to congratulate me on getting new toy. I was surprised as I had no idea what are they talk about. Someone pointed me to OESF forums thread where Richard Jackson wrote that he donates his c760 for me. It was great day.

Zaurus arrived few days later and I flashed it with OpenZaurus on same day (played few minutes with SharpROM). I did lot of VGA related hacking on it (mostly OPIE). It was my favourite PDA for long time.

Zaurus SL-6000L

In May 2006 one OpenZaurus user contacted Mickeyl and me. He wanted to donate two Zaurus palmtops for OpenEmbedded project: SL-5600 (poodle) and SL-6000L (tosa). Both devices arrived at my place month later.

Tosa is very interesting device — very bright screen (best in whole Zaurus line), internal WiFi (Prism2 on USB bus) and usable USB host. But it is also very huge — too big to be usable ;(

Zaurus SL-5600

Crap screen (same as in collie) and only 32MB RAM. Looks like Sharp wanted to produce newer collie but lacked RAM chips. If it would get 64MB of memory it would be nice replacement.

I did not played with it too much — it moved to Mickeyl during OEDEM 2006.

Zaurus SL-C3000

Another device from OpenEmbedded project. I took it from Mickeyl during OEDEM 2006, played a bit, resolved some problems and during FOSDEM 2007 gave it for Rolf ‘Laibsch’ Leggewie.

I did not like it — too thick and heavy.

PalmPilot 5000

One day I had occasion to buy PalmPilot 5000 so I bought it. It was funny to see that PalmOS5 Datebook is nearly same as the one in PalmOS 2.0 — only ~8 years of time difference…

Nokia 770

During FOSDEM 2007 I got Nokia 770 from MDK. For long time I did not found good use for it. For PDA usage I had cellphone (Sony Eriksson k750i), for web browsing I used my desktop… Finally it became used as games platform — Mahjongg, Sudoku, Battleweled and few others. Plus sometimes some web browsing.

Finally during last trip to London I found use for it (based on experience from GUADEC). After installation of Maemo Mapper it turns into nice city map.

FIC Neo1973 GTA01

Some time before FOSDEM I got email that I am one of 50 developers selected for OpenMoko phase0 program. In March I got GTA01Bv3 and two months later GTA01Bv4 came as upgrade.

I have to admit that I have mixed feelings about this device. Compared to iPhone or recent HTC phones it is bulky and feature crippled. But Neo1973 GTA02 has to fix at least features part 🙂

There were two versions of UI for them: OM 2007.1 and then OM 2007.2 version which we (OpenedHand) prepared for GUADEC. I remember that time when recipes for components were changing many times during one day until poky-image-phone was ready and working. I still have this image (but with upgraded packages) on my GTA01Bv3 phone. It was interesting to see when OH guys were comparing behaviour of applications on 200MHz device with same apps on 266MHz one.

Nokia N810

My recent buy. Hard to tell more about it now.

Current situation

Now I use my cellphone for PIM tasks (calendar, address book, tasks, notes). It is not perfect but I have it always nearby. My SL-5500 is on a way to new home where it will be used for developing Linux 2.6 drivers. Nokia 770 is game platform like it was. Tosa waits for someone who wants to work on improving its situation (it can be drivers work, images polishing etc). PalmOS devices are packaged in a box with many other not needed computer/electronics stuff.

For now I think that mainly Nokia N810 will be used (for fun and work). Zaurus c760 will be booted from time to time to test some things and so will Neo1973 GTA01Bv4 phone (this one is all time USB connected).

Keyboard in palmtops

Few days ago I shared my thoughts on replacing Zaurus palmtop with other device. According to comments few people do not understand why hardware keyboard is so important for me.


Nearly 4 years ago I bought my first Linux powered PDA — Sharp Zaurus SL-5500 (codename: “collie”). One of nice features was hardware keyboard:

Collie keyboard

It is thumb operated keyboard but usable after a bit of learning. You have everything needed to operate in console, writing text — even Vi is usable (“Cancel” key works as Esc).


Time passed and I got another Zaurus — this time it was clamshell model — c760 (codename: “husky” or “c7x0”). This device has great keyboard. Keys are small but there is separate row with numerical keys so it is improvement from “collie” one.

C7×0 keyboard

Those Japanese keys right to “Fn” one are mapped as “Control” and “Alt” so user can even try to use Emacs 🙂 For Vi lovers there is “Cancel” key which works as Esc.


Another months passed and another Zaurus arrived at my place — this time is was SL-6000L (codename: “tosa”). It has keyboard similar to “collie”: but more comfortable due to size of keys:

Tosa keyboard

“Esc” is on “Cancel” like it is in collie.


Recently one Finnish company released new product from their line of tablets: N810. It was their first tablet with integrated keyboard. Thanks to photos provided by Koen I can comment a bit on it too. It it similar to “collie” and “tosa” keyboards when it comes to mapping (no numeric keys, lot of symbols available only with “Fn” key) but it also lack “Tab” key which can make shell using a bit harder.

N810 keyboard

There is “Esc” key — one of side keys works as one (not visible on photo).


For now the best keyboard is “c7x0” one — all needed keys are available, lot of others can be made available by editing keymap. And when I have to hack something on device good keyboard is one of most important things. I can not count how many times I ended with having 3-4 consoles running on my c760 with miscellaneous applications started due to amount of hacking required by projects.


UPDATE: Matthias ‘CoreDump’ Hentges reminded me about Zaurus SL-Cxx00 keyboards (used in c1000/c3000/c3100/c3200 models):

Spitz keyboard

Yes — they are similar to “c760” one but have changed cursors into 4-pad and each key is separate one — they are no longer parts of membrane. Many people found that one more comfortable then “c7x0” one but I am not one of them — used both and still prefer older one.

2.6.23 on Tosa

Thanks to work done by Dmitry Baryshkov we have 2.6.23 kernel working properly on Zaurus SL-6000 (Tosa). Ångström images are already present so users can test how does it works for them.

Today I reflashed Tosa with fresh build and did some testing. We still have problem with framebuffer (famous yellow lines) but otherwise it looks quite good. USB host is working very nice — I connected few devices:

root@tosa:~$ lsusb
Bus 1 Device 9: ID 1457:5122
Bus 1 Device 8: ID 046d:c70a Logitech, Inc.
Bus 1 Device 7: ID 046d:c70e Logitech, Inc.
Bus 1 Device 6: ID 046d:0b02 Logitech, Inc.
Bus 1 Device 5: ID 0a46:9601 Davicom Semiconductor, Inc.
Bus 1 Device 4: ID 05e3:0606 Genesys Logic, Inc.
Bus 1 Device 2: ID 0bb2:0302 Ambit Microsystems Corp.
Bus 1 Device 1: ID 0000:0000

Detailed checking as to wait until I charge this device to 100% because now it shutdown after few minutes.

Handhelds.org fork of kernel…

Today I wanted to check status support of TC6393XB companion chip (used in Zaurus SL-6000 for USB Host and few other things) in Linux kernel as the last working version which we (OpenEmbedded kernel hacking team) have is 2.6.17 (a bit old). Most of Google search results pointed to our patches so I tried to search also for “Toshiba Mobile I/O Controller” which also gave me pointer to handhelds.org fork of Linux kernel.

I fetched CVS HEAD (had to remind how to use it since most of projects which I use switched to Subversion or Git). After browsing their repository it looked like they have driver but marked as non functional so no use for me rather.

By curiousity I diffed handhelds.org fork against vanilla 2.6.21 (as hh.org kernel is still 2.6.21). Result was 10 megabytes file (with -X dontdiff -x CVS switches) — I wonder did they ever considered merging with upstream…

OpenZaurus time is over – long live Ångström

Some time ago new kernel hacker joined team of people working on 2.6 kernel for Zaurus machines — Thomas Kunze gave us SD/MMC driver for collie and works on other subsystems to get this machine working. As result collie got added into list of Ångström supported devices and test images were generated.

Also during last time people were asking Koen Kooi when Ångström is going to be released. He usually answered that it depends on OpenZaurus release plans (OZ first).

But we lack developers to work on two distros in one time. Release of OpenZaurus 3.5.4/ took me few months of work as I had to organize beta testing program, build images, fix bugs, find someone to work on documentation, build feeds. Then due to limited access to main mirror I had to work on upgrades feeds. Those tasks will be split to more people in Ångström.

As a result I was going to tell world that there will be no new OpenZaurus releases ever. But I did not wanted to sound like dictator — I asked other developers on openzaurus-devel ML what they think. There were 3 options:

  1. we release OpenZaurus 3.5.5 for all Zaurus models
  2. we release OpenZaurus 3.5.5 for Collie/2.4 only
  3. we close OpenZaurus history and switch to Ångström

During week twelve persons replied — no one chosen option 1st or 2nd…

So Ångström is a future for our machines — and many others already supported in OpenEmbedded. End of OpenZaurus does not mean that Zaurus models are obsolete or that users need to switch to pdaXrom or Cacko.

It needs work to create nicely working distribution which will use up-to-date technologies, will base on current software etc. Personally I do not even plan to look at 2.4 kernel for Zaurus any more — it was ‘created’ in such bad way that… no comment

What does OpenZaurus meant to me?

For me it was really nice to have OpenZaurus on each Zaurus model which I had in my hands. It started with SL-5500 collie which I bought for quite big amount of cash (about 2/3 of my month salary), then was C760 donated by Richard Jackson. Later I got SL-5600 and SL-6000 donated by anonymous donor from USA. During OEDEM I got SL-C3000 from Mickeyl and gave him SL-5600 instead. Now SL-C3000 is in Rolf Leggewie hands and SL-6000 waits for developer which would like to work on improving support for it (SL-5600/6000/C3000 are OpenEmbedded project devices).

Thanks to OpenZaurus I started to use OpenEmbedded. First as stupid novice, then advanced user finally one of core developers. Without playing with those systems I would not be the person which I am today. Since I left my previous work as PHP programmer I finally do what I like to do (and I am paid for it).

Without playing with it I would not have all those gadgets/toys which I have here.

I would like to thanks for some persons:

  • Chris ‘kergoth’ Larson for starting work on OpenZaurus distro
  • Michael ‘mickeyl’ Lauer for maintaining OZ
  • Richard ‘rp’ Purdie for maintaining Linux-2.6 for all Zaurus models
  • John Lenz for starting work on getting Linux-2.6 working on collie
  • Dirk Opfer for Tosa part
  • Graeme ‘xora’ Gregory for being one of most active Zaurus developers
  • Koen Kooi for maintaining Ångström distro
  • Scott Bronson and Simon ‘lardman’ Pickering for work on OpenZaurus documentation
  • Thomas Kunze for work on SD/MMC driver for collie
  • all other OpenZaurus hackers

For all time which they spend on getting Zaurus machines supported.

WPA in Debian and Poky

During last week I switched my home WiFi from insecure WEP to WPA2.

Why not used WPA before? My x86 test machine was ProGear which use Orinoco PCMCIA card (no WPA support) and I also used Tosa with that crap called wlan-ng (also no WPA support). Now I have USB Ethernet card and PCMCIA->CF adapter so both can be connected via wire or with CF WiFi card (Prism2 with 1.8.4 firmware so WPA out-of-box).

But since I use Dell D400 as x86 test machine ProGear is not powered — I will probably put it on shelf to get some desk space free (there is no such thing as big enough desk — just ones that are not cluttered yet).

But how to get WPA working in Debian, Poky, Ångström, OpenZaurus or other distros? You basically need few things:

  • WPA-Supplicant
  • card with good driver (so no Orinoco or wlan-ng crap)
  • proper configuration
  • network with WPA

First I configured “maluch” (D400). Installed wpasupplicant package and discovered that it is not supported out-of-box. README propose two methods:

  1. Use only one network and configure network in /etc/network/interfaces
  2. Roaming networks with extra scripts

I decided to follow 3rd way where you need to edit /etc/network/interfaces just to tell wpa-supplicant which config it has to use and which driver:

iface eth1 inet dhcp
        wpa-driver wext
        wpa-conf /etc/wpa_supplicant/config

This way wpa-supplicant is started automatically with /etc/wpa_supplicant/config file as configuration. This file also contain all networks which you want to connect. It can be edited by hand or using external tools — wpa_cli or wpa_gui (QT3/QT4). Have to check does it works ok with other networks then my home one but it should work.

Then same configuration on Zaurus C760 running Poky — Prism2 card in CompactFlash slot. Connecting to network works out-of-box now. On Nokia 770 all I need to to was entering WPA-PSK key.

The worst part was MS Windows laptop — I had to remove all networks from list of preferred ones, reboot and then enter WPA-PSK key to get it working.

Now it should be harder to connect to my network 😉


Today I released third testing version of OpenZaurus version. It support only two models:

  • poodle (SL-5600/B500)
  • tosa (SL-6000)

I decided to do not ship collie (SL-5000/5500) images as they need some work (for example they lack udev) and as usual there is a problem to get OPIE/GPE images fit in this small rootfs space.

The most important changes in this release:

  • touchscreen on tosa does not show heartbeat like it was before
  • sound on poodle works — does not generate random noise

I want to mention our kernel hackers: Richard Purdie and Liam Girdwood for sound fix, Mike Arthur for touchscreen fix. Without their work this release would not happen.

Tosa and 2.6 kernel

Few days ago I flashed 2.6.17 on tosa (with unofficial OpenZaurus OPIE image) and I have to say that it was good choice. After fixing keymap (pushed into OpenEmbedded) and adding one script into apm (not yet pushed) I have machine which suspend/resume very fast, has working WiFi after each resume and behave better then it was with 2.4 (see my previous post).

But it is not yet ready for end users:

  • sometimes battery info report 0% — suspend/resume help
  • USB Host module lack Power Managment — need to be removed/inserted on suspend/resume
  • touchscreen is weird — horizontal lines got ‘pings’

Tomorrow I will get USB keyboard from friend so will test how it is — usage of external (wired) keyboard with PDA…

Tosa USB experiences

Yesterday I got USB Host cable from Trisoft (donated like I wrote before) so I decided to check how it works.

First try was my TDK Bluetooth dongle which I got year ago. Installed kernel-module-hci-usb, connected dongle and it was not working. So I rebooted and after reboot and manual module loading I got hci0 shown in hciconfig output. But I was unable to do any scanning for devices.

Then I disconnected BT and connected my few years old 64M pendrive. Tosa did not even notice that change… so I did another reboot. After that I got /dev/sda1 mountable and working.

In next weeks (plan to have 2 week vacations) I plan to test some more USB equipment — plan to buy powered hub, already have multiport card reader, will borrow USB keyboard etc. And most important thing — test 2.6 kernel on tosa.