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.

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.

30 months of OpenEmbedded and me

During discussion with some users on #openzaurus channel I discovered that about 30 months passed since I’m using OpenEmbedded for building software.

First attempts were used to build extra packages for my SL-5500 running OpenZaurus 3.3.6-pre1, then I built OZ “3.5.0” for it and worked on getting OPIE working correctly when compiled with gcc 3.4.x (loading 40MiB large libqte2/libqpe1 inside of gdb to get backtraces). Time passed, new machines appeared: first Zaurus C760, then Linksys WRT54GS.

My wrt54 runs under OpenWRT distribution so I’m able to build additional packages for it with OpenEmbedded (MACHINE=”wrt54″ DISTRO=”wrt54oe” combo) and they works. Of course they are unofficial because OpenWRT team use own buildsystem.

One of my common targets is MACHINE=”native” which I used for OPIE development or building needed tools on remote machines where it was easier then pestering administrators to install ‘mc’ or ‘git’.

Recently I used OE to build system for omap5912osk developer board used by CELF in their testlab. Creating new distribution was interesting because I learnt lot about how ‘task-base’ works and why it is good solution for our targets.

Soon I will have new target — this time it will be x86 based webpad. But I will write more about it when it arrive and start working.

First days using Tosa/2.4

During last days I moved from my C760 to Tosa. It is heavy, big and has awesome screen — I can use it even with lowest brightness setting (one step from “no backlight”). Stylus is made from plastic but is longer then styli from other Zaurus models. Internal WiFi is able to do WPA on firmware level but driver do not support it ;(

First day was SharpROM day because I forgot to take CF card from home to flash OpenZaurus. SharpROM looks quite OK but some things was weird. For example handling of QVGA applications — screen was switched into 240×320 mode with ‘please wait’ message on start and exit… This slowdown plus no possibility to switch off that switching force user to rather skip using such apps. WiFi settings has profiles support which is nice but due to fact that internal wireless use wlan-ng drivers I could not get WPA so was not able to connect to my home AP.

Same day evening I flashed OpenZaurus 3.5.4 (OPIE flavour) into device. System boots and works but I needed to install some upgrades to get fixed keyboard mapping etc. Reconfigured AP to get connection, configured WiFi in tosa and ipkg update;ipkg upgrade was working. Lot of stuff upgraded and after reboot I got working keyboard but lost HostAP configuration files (will hunt this bug and add proper fixes into OpenZaurus upgrades feed). Lack of Control key make it not so usable with OPIE terminals so I use OPIE-IRC on it instead of logging into my irssi-over-screen session. And there are two keys which functionality is something which I must find out (one above Cancel and Backlight/Rotate one).

Machine works quite nice but after using 2.6 kernel on PDA for over one year I feel that 2.4-crapix is slow… Resuming from suspend need time to get machine responding, enabling WiFi means machine not responding for a while too… I hope that 2.6 will get into usable state soon.

OpenZaurus status

As I wrote on OZ website next release of OpenZaurus is coming. All images are working, now it is time to build feeds. I think that it will take few days of work. Progress can be traced in OE Tinderbox as “ewi-OZ-” build.

When it end I will have to check all packages, split them into feeds and then final work on release will have to be done — rebuilding images, testing them on all supported platforms (will have to get some helpers) and then release. And of course sending info to some of Linux targeted websites.

After release I will probably work on improving Tosa (Sharp Zaurus SL-6000) support due to anonymous donor which donated Tosa and Poodle to our project. Both machines will get used to improve their support in OpenEmbedded derived distros.

Users and unmaintained applications

As most of you know I maintain OpenZaurus distribution. We provide few graphical enviroments — OPIE is most popular one. And here comes a problem…

Years ago OPIE forked from Qtopia but it’s still compatible — mostly on source level (any Qtopia application/library can be built for OPIE). Years ago OpenZaurus moved from gcc 2.95.x to more modern compilers — 3.3.x was choosen. This broke binary compatibility and ‘oz-compat’ aka ‘sharp-compat-libs’ package was born — it contain libqte2 and libqpe1 from SharpROM to get possibility to run old binaries under new edition of OZ.

But with OpenZaurus 3.5.1 we started to use ‘soft-float’ toolchain (ARM cpu lack FPU and use FPU emulation on kernel level — soft-float replace FPU instructions with extra code so emulator is not used). This change broke ‘sharp-compat-libs’ — some apps was working, some not but even if something worked then not always correct (for example spreadsheets gave wrong results from calculations).

Newest version of OZ (3.5.4) does not provide ‘sharp-compat-libs’ so users start to request old, dead upstream, not fetchable applications to be added into OpenZaurus. I tried to get one of them working — as usual code required some changes to get it build with gcc 3.4.4 but finally it built. But then new question came: How to manage such dead software… If any problem will arrive no one will fix it rather. So I asked other developers and final version is: no support for such crap at all.

I know that some users will complain more now but sorry — who will maintain such stuff?

Google Summer of Code 2006

During this summer edition of Google Summer of Code I will work as mentor for “A new database model for unification of OPIE/GPE PIM data using SQLite with import/export features to text and iCal formats” project written by Marcos Hiroshi Umino.

This project will unite GPE and OPIE PIM applications format so it will be easier for users to try both before choosing one. This is my first project which I will (co-)maintain with guys from both enviroments.