It is 10 years of Linux on ARM for me

It was somewhere between 7th and 11th February 2004 when I got package with my first Linux/ARM device. It was Sharp Zaurus SL-5500 (also named “collie”) and all started…

At that time I had Palm M105 (still own) and Sony CLIE SJ30 (both running PalmOS/m68k) but wanted hackable device. But I did not have idea what this device will do with my life.

Took me about three years to get to the point where I could abandon my daily work as PHP programmer and move to a bit risky business of embedded Linux consulting. But it was worth it. Not only from financial perspective (I paid more tax in first year then earned in previous) but also from my development. I met a lot of great hackers, people with knowledge which I did not have and I worked hard to be a part of that group.

I was a developer in multiple distributions: OpenZaurus, Poky Linux, Ångström, Debian, Maemo, Ubuntu. My patches landed also in many other embedded and “normal” ones. I patched uncountable amount of software packages to get them built and working. Sure, not all of those changes were sent upstream, some were just ugly hacks but this started to change one day.

Worked as distribution leader in OpenZaurus. My duties (still in free time only) were user support, maintaining repositories and images. I organized testing of pre-release images with over one hundred users — we had all supported devices covered. There was “updates” repository where we provided security fixes, kernel updates and other improvements. I also officially ended development of this distribution when we merged into Ångström.

I worked as one of main developers of Poky Linux which later became Yocto Linux. Learnt about build automation, QA control, build-after-commit workflow and many other things. During my work with OpenedHand I also spent some time on learning differences between British and American versions of English.

Worked with some companies based in USA. This allowed me to learn how to organize teamwork with people from quite far timezones (Vernier was based in Portland so 9 hours difference). It was useful then and still is as most of Red Hat ARM team is US based.

I remember moments when I had to explain what I am doing at work to some people (including my mom). For last 1.5 year I used to say “building software for computers which do not exist” but this is slowly changing as AArch64 hardware exists but is not on a mass market yet.

Now I got to a point when I am recognized at conferences by some random people when at FOSDEM 2007 I knew just few guys from OpenEmbedded (but connected many faces with names/nicknames there).

Played with more hardware then wanted. I still have some devices which I never booted (FRI2 for example). There are boards/devices which I would like to get rid of but most of them is so outdated that may go to electronic trash only.

But if I would have an option to move back that 10 years and think again about buying Sharp Zaurus SL-5500 I would not change it as it was one of the best things I did.


When last time I was in Cambridge we had a discussion about ARM processors. Paweł used term “ARMology” then. And with recent announcement of Cortex-A12 cpu core I thought that it may be a good idea to write a blog post about it.

Please note that my knowledge of ARM processors started in 2003 so I can make mistakes in everything older. Tried to understand articles about old times but sometimes they do not keep one version of story.

Ancient times

ARM1 got released in 1985 as CPU add-on to BBC Micro manufactured by Acorn Computers Ltd. as result of few years of research work. They wanted to have new processor to replace ageing 6502 used in BBC Micro and Acorn Electron and none of existing ones did not fit their requirements. Note that it was not market product but rather development tool made available for selected users.

But it was ARM2 which landed in new computers — Acorn Archimedes (1987 year). Had multiply instructions added so new version of instruction set was created: ARMv2. Just 8MHz clock but remember that it was first computer with new CPU…

Then ARM3 came — with cache controller integrated and 25MHz clock. ISA was bumped to ARMv2a due to SWP instruction added. And it was released in another Acorn computer: A5000. This was also used in Acorn A4 which was first ARM powered laptop (but term “ARM Powered” was created few years later). I hope that one day I will be able to play with all those old machines…

There was also ARM250 processor with ARMv2a instruction set like in ARM3 but no cache controller. But it is worth mentioning as it can be seen as first SoC due to ARM, MEMC, VIDC, IOC chips integrated in one piece of silicon. This allowed to create budget versions of computers.

ARM Ltd.

In 1990 Acorn, Apple and VLSI co-founded Advanced RISC Machines Ltd. company which took over research and development of ARM processors. Their business model was simple: “we work on cpu cores and other companies pay us license costs to make chips”.

Their first cpu was ARM60 with new instruction set: ARMv3. It had 32bit address space (compared to 26bit in older versions), was endian agnostic (so both big and little endian was possible) and there were other improvements.

Please note lack of ARM4 and ARM5 processors. I heard some rumours about that but will not repeat them here as some of them just do not fit when compared against facts.

ARM610 was powering Apple Newton PDA and first Acorn RiscPC machines where it was replaced by ARM710 (still ARMv3 instruction set but ~30% faster).

First licensees

You can create new processor cores but someone has to buy them and manufacture… In 1992 GEC Plessey and Sharp licensed ARM technology, next year added Cirrus Logic and Texas Instruments, then AKM (Asahi Kasei Microsystems) and Samsung joined in 1994 and then others…

From that list I recognize only Cirrus Logic (used their crazy EP93xx family), TI and Samsung as vendors of processors ;D


One of next cpu cores was ARM7TDMI (Thumb+Debug+Multiplier+ICE) which added new instruction set: Thumb.

The Thumb instructions were not only to improve code density, but also to bring the power of the ARM into cheaper devices which may primarily only have a 16 bit datapath on the circuit board (for 32 bit paths are costlier). When in Thumb mode, the processor executes Thumb instructions. While most of these instructions directly map onto normal ARM instructions, the space saving is by reducing the number of options and possibilities available — for example, conditional execution is lost, only branches can be conditional. Fewer registers can be directly accessed in many instructions, etc. However, given all of this, good Thumb code can perform extremely well in a 16 bit world (as each instruction is a 16 bit entity and can be loaded directly).

ARM7TDMI landed nearly everywhere – MP3 players, cell phones, microwaves and any place where microcontroller could be used. I heard that few years ago half of ARM Ltd. income was from license costs of this cpu core…


But ARM7 did not ended at ARM7TDMI… There was ARM7EJ-S core which used ARMv5TE instruction set and also ARM720T and ARM740T with ARMv4T. You can run Linux on Cirrus Logic CLPS711x/EP721x/EP731x ones 😉

According to ARM Ltd. page about ARM7 the ARM7 family is the world’s most widely used 32-bit embedded processor family, with more than 170 silicon licensees and over 10 Billion units shipped since its introduction in 1994.


I heard that ARM8 is one of those things you should not ask ARM Ltd. people about. Nothing strange when you look at history…

ARM810 processor made use of ARMv4 instruction set and had 72MHz clock. At same time DEC released StrongARM with 200MHz clock… 1996 was definitively year of StrongARM.

In 2004 I bought my first Linux/ARM powered device: Sharp Zaurus SL-5500.


Ah ARM9… this was huge family of processor cores…

ARM moved from a von Neumann architecture (Princeton architecture) to a Harvard architecture with separate instruction and data buses (and caches), significantly increasing its potential speed.

There were two different instruction sets used in this family: ARMv4T and ARMv5TE. Also some kind of Java support was added in the latter one but who knows how to use it — ARM keeps details of Jazelle behind doors which can be open only with huge amount of money.


Here we have ARM9TDMI, ARM920T, ARM922T, ARM925T and ARM940T cores. I mostly saw 920T one in far too many chips.

My collection includes:

  • ep93xx from Cirrus Logic (with their sick VFP unit)
  • omap1510 from Texas Instruments
  • s3c2410 from Samsung (note that some s3c2xxx processors are ARMv5T)


Note: by ARMv5T I mean every cpu never mind which extensions it has built-in (Enhanced DSP, Jazelle etc).

I consider this one to be most popular one (probably after ARM7TDMI). Countless companies had own processors based on those cores (mostly on ARM926EJ-S one). You can get them even in QFP form so hand soldering is possible. CPU frequency goes over 1GHz with Kirkwood cores from Marvell.

In my collection I have:

  • at91sam9263 from Atmel
  • pxa255 from Intel
  • st88n15 from ST Microelectronics

Had also at91sam9m10, Kirkwood based Sheevaplug and ixp425 based NSLU2 but they found new home.


Another quiet moment in ARM history. ARM1020E, ARM1022E, ARM1026EJ-S cores existed but did not looked popular.

UPDATE: Conexant uses ARM10 core in their next generation DSL CPE systems such as bridge/routers, wireless DSL routers and DSL VoIP IADs.


Released in 2002 as four new cores: ARM1136J, ARM1156T2, ARM1176JZ and ARM11 MPCore. Several improvements over ARM9 family including optional VFP unit. New instruction set: ARMv6 (and ARMv6K extensions). There was also Thumb2 support in arm1156 core (but I do not know did someone made chips with it). arm1176 core got TrustZone support.

I have:

  • omap2430 from Texas Instruments
  • i.mx35 from Freescale

Currently most popular chip with this family is BCM2835 GPU which got arm1136 cpu core on die because there was some space left and none of Cortex-A processor core fit there.


New family of processor cores was announced in 2004 with Cortex-M3 as first cpu. There are three branches:

  • Aplication
  • Realtime
  • Microcontroller

All of them (with exception of Cortex-M0 which is ARMv6) use new instruction sets: ARMv7 and Thumb-2 (some from R/M lines are Thumb-2 only). Several cpu modules were announced (some with newer cores):

  • NEON for SIMD operations
  • VFP3 and VFP4
  • Jazelle RCT (aka ThumbEE).
  • LPAE for more then 4GB ram support (Cortex A7/12/15)
  • virtualization support (A7/12/15)
  • big.LITTLE
  • TrustZone

I will not cover R/M lines as did not played with them.


Announced in 2006 single core ARMv7a processor core. Released in chips by Texas Instruments, Samsung, Allwinner, Apple, Freescale, Rockchip and probably few others.

Has higher clocks than ARM11 cores and achieves roughly twice the instructions executed per clock cycle due to dual-issue superscalar design.

So far collected:

  • am3358 from Texas Instruments
  • i.mx515 from Freescale
  • omap3530 from Texas Instruments


First multiple core design in Cortex family. Allows up to 4 cores in one processor. Announced in 2007. Looks like most of companies which had previous cores licensed also this one but there were also new vendors.

There are also single core Cortex-A9 processors on a market.

I have products based on omap4430 from Texas Instruments and Tegra3 from NVidia.


Announced around the end of 2009 (I remember discussion about something new from ARM with someone at ELC/E). Up to 4 cores, mostly for use in all designs where ARM9 and ARM11 cores were used. In other words new low-end cpu with modern instruction set.


The fastest (so far) core in ARMv7a part of Cortex family. Up to 4 cores. Announced in 2010 and expanded ARM line with several new things:

  • 40-bit LPAE which extends address range to 1TB (but 32-bit per process)
  • VFPv4
  • Hardware virtualization support
  • TrustZone security extensions

I have Chromebook with Exynos5250 cpu and have to admit that it is best device for ARM software development. Fast, portable and hackable.


Announced in 2011. Younger brother of Cortex-A15 design. Slower but eats much less power.


Announced in 2013 as modern replacement for Cortex-A9 designs. Has everything from Cortex-A15/A7 and is ~40% faster than Cortex-A9 at same clock frequency. No chips on a market yet.


That’s interesting part which was announced in 2011. It is not new core but combination of them. Vendor can mix Cortex-A7/12/15 cores to have kind of dual-multicore processor which runs different cores for different needs. For example normal operation on A7 to save energy but go up for A15 when more processing power is needed. And amount of cores in each of them does not even have to match.

It is also possible to make use of all cores all together which may result in 8-core ARM processor scheduling tasks on different cpu cores.

There are few implementations already: ARM TC2 testing platform, HiSilicon K3V3, Samsung Exynos 5 Octa and Renesas Mobile MP6530 were announced. They differ in amount of cores but all (except TC2) use the same amount of A7/A15 cores.


In 2011 ARM announced new 64-bit architecture called AArch64. There will be two cores: Cortex-A53 and Cortex-A57 and big.LITTLE combination will be possible as well.

Lot of things got changed here. VFP and NEON are parts of standard. Lot of work went into making sure that all designs will not be so fragmented like 32-bit architecture is.

I worked on AArch64 bootstrapping in OpenEmbedded build system and did also porting of several applications.

Hope to see hardware in 2014 with possibility to play with it to check how it will play compared to current systems.

Other designs

ARM Ltd. is not the only company which releases new cpu cores. That’s due to fact that there are few types of license you can buy. Most vendors just buy licence for existing core and make use of it in their designs. But some companies (Intel, Marvell, Qualcomm, Microsoft, Apple, Faraday and others) paid for ‘architectural license’ which allows to design own cores.


Probably oldest one was StrongARM made by DEC, later sold to Intel where it was used as a base for XScale family with ARMv5TEJ instruction set. Later IWMMXT got added in PXA27x line.

In 2006 Intel sold whole ARM line to Marvell which released newer processor lines and later moved to own designs.

There were few lines in this family:

  • Application Processors (with the prefix PXA).
  • I/O Processors (with the prefix IOP)
  • Network Processors (with the prefix IXP)
  • Control Plane Processors (with the prefix IXC).
  • Consumer Electronics Processors (with the prefix CE).

One day I will undust my Sharp Zaurus c760 just to check how recent kernels work on PXA255 ;D


Their Feroceon/PJ1/PJ4 cores were independent ARMv5TE implementations. Feroceon was Marvell’s own ARM9 compatible CPU in Kirkwood and others, while PJ1 was based on that and replaced XScale in later PXA chips. PJ4 is the ARMv7 compatible version used in all modern Marvell designs, both the embedded and the PXA side.


Company known mostly from wireless networks (GSM/CDMA/3G) released first ARM based processors in 2007. First ones were based on ARM11 core (ARMv6 instruction set) and in next year also ARMv7a were available. Their high-end designs (Scorpion and Krait) are similar to Cortex family but have different performance. Company also has Cortex-A5 and A7 in low-end products.

Nexus 4 uses Snapdragon S4 Pro and I also have S4 Plus based Snapdragon development board.


Faraday Technology Corporation released own processors which used ARMv4 instruction set (ARMv5TE in newer cores). They were FA510, FA526, FA626 for v4 and FA606TE, FA626TE, FMP626TE and FA726TE for v5te. Note that FMP626TE is dual core!

They also have license for Cortex-A5 and A9 cores.

Project Denver

Quoting Wikipedia article about Project Denver:

Project Denver is an ARM architecture CPU being designed by Nvidia, targeted at personal computers, servers, and supercomputers. The CPU package will include an Nvidia GPU on-chip.

The existence of Project Denver was revealed at the 2011 Consumer Electronics Show. In a March 4, 2011 Q&A article CEO Jen-Hsun Huang revealed that Project Denver is a five year 64-bit ARM architecture CPU development on which hundreds of engineers had already worked for three and half years and which also has 32-bit ARM architecture backward compatibility.

The Project Denver CPU may internally translate the ARM instructions to an internal instruction set, using firmware in the CPU.


AppliedMicro announced that they will release AArch64 processors based on own cores.

Final note

If you spotted any mistakes please write in comments and I will do my best to fix them. If you have something interesting to add also please do a comment.

I used several sources to collect data for this post. Wikipedia articles helped me with details about Acorn products and ARM listings. ARM infocenter provided other information. Dates were taken from Wikipedia or ARM Company Milestones page. Ancient times part based on The ARM Family and The history of the ARM CPU articles. The history of the ARM architecture was interesting and helpful as well.

Please do not copy this article without providing author information. Took me quite long time to finish it.


8 June evening

Thanks to notes from Arnd Bergmann I did some changes:

  • added ARM7, Marvell, Faraday, Project Denver, X-Gene sections
  • fixed Cortex-A5 to be up to 4 cores instead of single.
  • mentioned Conexant in ARM10 section.
  • improved Qualcomm section to mention which cores are original ARM ones, which are modified.

David Alan Gilbert mentioned that ARM1 was not freely available on a market. Added note about it.

Nine years of embedded Linux

Nine years ago I bought Sharp Zaurus SL-5500 as my first Linux PDA. And due to this I am where I am.

I could say that it started two years earlier when I saw PalmOS devices at local geek meetings. But it took me over year before Palm m105… Then was Sony Clie SJ30 — gorgeous device. High resolution, memory card, 16bit colour. Too bad that applications did not make use of it.

So I went for Linux. There were two options: Zaurus or iPaq. Went for former one as it had keyboard. It was good choice.

Quickly started development of packages and joined OpenEmbedded team. Then became one of OpenZaurus developers. After year or something took over release maintenance and released few last versions. 3.5.4(.1) were the best tested releases of OZ ever — I had over hundred testers for each RC image and they provided installation reports, bug reports and fixes. And it had unified installer for whole range of devices (took me several months to get it polished and few guys added own tweaks). When Ångström distribution started I was the one who officially ended OpenZaurus development.

And all that was in free time. But in mean time I created my consulting company. CELF was my first customer 😉

One nice evening I got question on irc and due to that I left dark side of IT and went from PHP programming to embedded Linux full-time. OpenedHand had interesting projects and clients with many devices. Imagine operating system + kernel + Python + GStreamer in 16 megabytes of flash… And I managed to get it done. While working for them I used proper developer boards (not only customer devices) and there were funny moments…

When we worked with ST Microelectronics on NDK-15 (later replaced by NHK-15 from ST Ericsson) I had to merge two kernel trees from two separate teams. Took me 2 days of mangling 20-30MB diffs but got it done. There are people at ST-E which reminded me this during one of Linaro Connects ;D

Also on GUADEC 2007 when we presented new interface for Openmoko phones NDK-15 had to wait for me as no one at stand was able to get it running (U-Boot config needed changes).

But then Intel acquired OpenedHand… The craziest trip of my life was return from London to my parents place. For three months I even had email but never used it due to problems with Intel corporate network and Linux (do not ask).

Next was Bug Labs and their BUG device. I cleaned their Poky trees, migrated to latest version and later to use OpenEmbedded directly. Less challenges but I also had few other customers at that time to keep me busy. Some of them were OH customers before and went to me for help.

Time passed, 2010 came. One day Canonical made another attempt to seduce me and this time I decided that it looks like good opportunity so I accepted. Sent BUG 2.0 prototype back to NYC and few weeks later I made crazy train trip to small nowhere near Brussels to meet my new coworkers from NewCore. 1-2 weeks later we got our current name: Linaro.

Total change… From embedded devices to ‘Yes, it is ARM. So what?’ kind as we support(ed) devices powerful enough to run normal desktop software. Many changes for me — from OpenEmbedded where you can (cross) build everything in few hours to Ubuntu packaging where sending package for inclusion into archive meant few hours of buildd queue and then few of build. But I learnt a lot here and met another set of hackers including grey beards ones 😉

And all that because I bought Sharp Zaurus SL-5500 nine years ago…

I got interviewed during Linaro Connect

Half year ago at UDS-O in Budapest Michael Opdenacker interviewed some people from Linaro. I remember that at the end of event Kiko asked him did he talked with me cause he thought that it could be interesting for someone.

Then we had another Linaro Connect (in Cambourne) and nothing happened. But in previous week I got an email that there will be interview with me in Orlando and that I should choose time slot for it. So I did and here is the result:


What we were talking about? Check it yourself. And please comment did you enjoyed.

Dublin: Ubuntu sprint and more

Last week there was Ubuntu platform sprint in Dublin, Ireland. I was there as one of invited Linaro guys (we got own room). What for we went there?

Work. Simple word but so much content in it. Sprints like this one allow to cooperate with other developers and this time I spent some time with Ubuntu ARM, Foundations and Kernel teams. But most of time I spent with Linaro guys as we had release of 11.06 to do.

My part was building cross toolchains for Ubuntu — including few already released ones. So I pushed several updates to ‘oneiric’, ‘natty’, ‘maverick’ and ‘lucid’ versions:

  • binutils
  • gcc 4.4.6-3ubuntu1
  • gcc 4.5.3-1ubuntu2
  • gcc 4.6.0-14ubuntu1
  • eglibc 2.13-6ubuntu2
  • linux 3.0-1.2

If you are running 11.10 ‘oneiric’ then all you need is just apt-get install g++-arm-linux-gnueabi and will get cross compiler. For “armhf” compatible one apt-get install g++-arm-linux-gnueabihf needs to be used. For those which run older releases there is Linaro toolchain backport PPA where packages are available for “amd64” and “i386” architectures.

Other part of my work was related with Star rating system which we plan to use to show status of boards supported by Linaro. I did some tests with PandaBoard connected to two monitors at same time and reported several bugs. Situation is nice but many things still need work.

At one moment I was creating “lucid” chroot on my “oneiric” system to be able to compile toolchain. And then I got a problem which ended in bug 802985 which needs fixing in all supported releases… Also debootstrap needs to be expanded to handle multiple suites at one time — otherwise there will be no way to populate chroots with older releases on any machine running 3.x kernels.

But work is not the only thing which we spent time on. Evenings were usually in pubs or similar places.

On Monday I went to hotel bar, grabbed a beer and started discussing with some random people. At one moment (when we were talking about OpenZaurus) one of them asked who I am and then went and bought me beer — he was Zaurus user whom I helped in past 😉 So never know who you can meet…

As I have few friends in Dublin area I contacted them and on Wednesday evening I went with one of them to Club Chonradh na Gaeilge Irish pub where speaking English is nearly forbidden (but we were using Polish so no problems :). There was one bard singing Irish songs. Nice place, nice event.

Thursday was team dinner — went to Rustic Stone. Nice place, awesome food:

My dinner in Rustic Stone

Friday was a day when many of us started packing and some even left earlier to catch flights. As Wookey asked me week before sprint to take my N900 with me we made a deal and I got some Euros and he got phone with all accessories. So guys — now really no more Maemo support from me (not that I did anything in this area since move to Nexus S).

On Friday also other part of visit started for me — my wife Ania arrived and we went to our family to spend nice weekend in Ireland.

We drove to Howth, spent some time looking at area from highest(?) mountain:

Then beach in Portmarnock where my wife started collecting sea shells… Quickly we got lot of them but I managed to put them in luggage somehow 😉

Evening was funny as we had to meet with one of my old friends. The “problem” was that we never met in real life yet and I forgot how does he looks. When I told that to wife and rest of group they were really surprised that such thing can happen ;D But we found each other and went to the Church Bar which is made from old St. Mary’s Church of Ireland which is one of the earliest examples of a galleried church in Dublin. Built at the beginning of the 18th century and renovated in 21st century. Nice place to visit in Dublin.

On Sunday we went into Wiclow county. Upper Lake at Glendalough then Glenmacnass Waterfall and few stops during trip to watch landscapes:

My wife and me

Monday was different — we went to Dublin for normal sight-seeing. You know: buildings, churches, castle…

Then packed bags and went to airport. The good part of Aer Lingus is that there were no problems with checking-in two bags on my ticket (but queue to just drop bags was insanely long). 2h flight, then another 2h in a bus and we finally arrived home. This part of conferences trip I like most — arrival at destination (as in Europe trips can take even 9h for me).

Is designing UI simple with Qt?

I use Qt on my devices since my first LinuxPDA: Sharp Zaurus SL5000 on which I used OpenZaurus with OPIE as primary environment. It was based on Qt/Embedded 2.3.x and was looking ok. UI of most applications work properly in both portrait and landscape modes, adapted to size of fonts (I used smaller then default ones).

Then Zaurus c760 arrived at my place and I did some UI code tweaks to make everything looking better on VGA screen (not that it looked wrong — I just improved few things). At that time I had nearly every Zaurus model in hands and took care to make all looks proper in both orientations.

From time to time I was also playing with 3rdparty applications to adapt them to resolutions higher then QVGA (which was sort of standard in palmtops of that era). Usually loading UI files into Qt Designer and reordering them or adding layouts helped. One of them was Mileage which required adding huge amount of layout elements just to make it look properly (all elements were put as X,Y positions originally).

Some time later I moved to GTK/X11 based environments on portable devices and later my cellphones took PDA place.

But with Nokia N900 I decided to go back to programming with Qt – 4.6 version this time. First was my module player (which I probably never end) and some time later I decided to play a bit with Vexed released by
Paul Romanchenko (rmrfchik on #maemo) where I reorganized UI a bit, added portrait support and did few other tweaks.

But then I switched to ApMeFo and while idea of application is good the UI is disaster:

  • tabs in main window
  • lack of portrait support
  • unusable UI when forced to portrait mode
  • use of non standard button sizes
  • use of non standard font sizes

And sources lacked UI files… So one day I decided that it will be good occasion to learn something new. Author was not responding to my sources request so I launched Qt Designer and started to recreate UI from scratch — using existing sources as information what kind of widgets were used. Took me some time but I got new, a bit improved UI which even worked in portrait mode:

But it still was not what I wanted. It still had tabs and small buttons… First I got rid of tabs:

Rest of functionality was moved to menu and separate window:

I was not too proud of it. OK, it looked better, I even changed some non-UI code but it still was not what I wanted to achieve. But at least I had something what I could give to users for testing.

How does it look now? Let me show not yet published version:

First main window — all buttons are finger friendly. I also grouped them a bit — it is visible in portrait mode which is also great when user want to re-order items.

Dialog to select applications to add got some changes too. It is maybe not conform with UI style guide (OK not under but on right) but it gave me extra line in list widget. Think of multi selection…

As you see (de)activation and folders are now in menu. (De)Activation has also Yes/No requesters 🙂

Folders window is place which needs lot of work. Only delete works now (also with Yes/No requester).

List of things to do is long as users suggested many things. I probably will not add most of them because so far I did not checked how exactly ApMeFo works but once I will read rest of source code I think that something good will come from it.

And is designing UI simple with Qt? I think that it is — developer does not have to worry what kind of paddings are needed to be used, how to place widgets to make UI conform to style guide rules etc. Once you do design with layout elements application adapts itself to what is available.

Five years with OpenEmbedded

It is hard to believe but I started using OpenEmbedded 5 years ago…

When I was planning to buy Zaurus I did not know that this device will give me great new hobby and that hobby will change into well paid job. Today I have few OpenEmbedded powered devices on my desk (or under it) and none of them is used as PDA. New devices are on a way to me or on a “need to order soon” list. Many devices passed thought my hands due those 5 years (for example most of Zaurus models which were donated to OE landed on my desk before was given to our developers).

I learnt a lot about (cross) compiling, know how to play with many different tools used for building and I am good at creating patches.

Ok, there is one bad thing in it — my last application was written for AmigaOS over 8 years ago. Since then I touched code in many projects but never wrote application from scratch. But if we all would be programmers who would work on OE? 🙂

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).


I read thread about opie trademark on ML, read posts about GPE situation months ago and now and decided that is not my community.

OPIE was my favorite environment since I bought Zaurus SL-5500 over 3 years ago. I was one of persons which added OPIE recipes into OpenEmbedded and spent lot of time to get it working properly. When I got Zaurus C760 I concentrated on fixing OPIE for working better with hires displays (most of them are landed in 1.2.2 release).

After those three years (2 as official developer with r/w access to CVS) I decided that it is time to say goodbye. None of my devices run OPIE and no plans that they will ever run it — time pass and show that most of software for it is not maintained and I lost faith in new OPIE/Qtopia 2.x applications over year ago. It does not even allow to connect my PDAs to my home network…

So goodbye and thanks — it was good time.

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.