I wrote module player in Qt

It was over eight years ago when I wrote application last time. Since then I had my hands in countless programs, libraries etc. but never wrote something new from scratch. Until recently…

Some time ago Mickey Lauer presented his module player for iPhone. I like the idea and started thinking about creating such one for my devices. After some discussions about Modland music collection with him I started coding.

To make things as simple as possible I used Qt framework with Phonon for playing (GStreamer modplug plugin underneath). Current version maybe is not so beauty but it is usable and works fine. Application will be GPL — I used code from Qt demos, read random snippets of code from other programs etc.

Things already implemented:

  • playing local modules
  • fetching modules from modland archive
  • author/song selection
  • playing next song on song end (with looping on author)
  • seeking
  • volume change (will probably get removed from UI)

Things to do:

  • error handling (especially fetching related)
  • download progressbar
  • playing counters
  • favorites
  • playlists
  • small screen usability (stacked windows/tabs)
  • and others…

pic11

For readers: what is a real name of Lord Performer? 😀

DDP — does it has any sense?

Some time ago Nokia offered discounts for their newest tablet: N900 for about two hundred people which were active in Maemo community. For European ones the price is more or less 250€ which looks nice compared to original price which is ~600€.

But there is one nasty part in it — devices have just one week of warranty. What can be checked during that time? Dead pixels?

Situation got more strange when I looked at Maemo forum where people lists misc discounts which they found on the Internet… For example Dell had one for $442 which makes it just a bit more expensive then DDP ones but gives you normal warranty.

This is weird — developers and active people from community gets worse offer then normal users. And additionally all DDP orders are marked as “Critical” which probably is other way of saying “ignore as long as possible” because tomorrow there will be two weeks since I ordered N900 in DDP and all I got was locking of 250€ on my credit card and nothing more.

Previous developer programs were better at handling users (at least that is what I hear from people which were part of it).

Some OpenEmbedded/Poky tricks

During use of OpenEmbedded and Poky build systems I learnt few tricks which I want to start sharing.

Installing l10n packages for all software in resulting rootfs

This one is rarely used — I know one company which makes use of it. How does it works? It is called after root filesystem is populated with packages and goes one by one and install “-locale-LANG” for each required language. As you may expect it makes whole process much, much longer. Activation is easy:

ROOTFS_POSTINSTALL_COMMAND += "install_all_locales; "

Code is available only for building from IPKG packages and is stored in rootfs_ipk.bbclass file. So far that code is present only in Poky Linux.

Building AUTOREV packages over slow link

How many times you had a situation when you did a build and many components used SRCREV="${AUTOREV}" setting? Parsing can take eons then…

But there is a solution. It will cache values of all SRCREV variables so just one parse will be long — next one use cached values. Of course you lose automatic revisions but instead you have fast parsing time which is blessing when most of your work is fixing build problems. Activation is easy:

BB_SRCREV_POLICY = "cache"

Save disc space by not generating GIT tarballs in DL_DIR

How many of you readers share your DL_DIR (directory where OE stores all fetched sources) with others? For those who answered “not me” there is a way to gain some space by not generating tarballs with GIT repositories.

By default BitBake clones GIT tree and checkouts it. Then 2 archives are generated: one with just “.git” directory and second with sources — the one which is used in do_unpack task. So why waste space for storing first one? We have it somewhere in DL_DIR/git/ for next time… Activation is easy:

BB_GENERATE_MIRROR_TARBALLS = "0"

More tricks in next posts.

Driving with Ovi Maps

My Symbian based Nokia E66 phone has Ovi Maps installed so one day I decided to make use of routing function in it when I was driving to the town (on a road where I did not needed to be guided). BT headset on ear, paired with phone and let’s drive.

At start road was selected quite properly, the problems started later. Many times it was recalculating route (the funniest was when I stopped at traffic lights it recalculated route and then made it again after driving for 5 meters). Directions changes information were also distracting: “on 200m go left” then “go right” when I reached point. Or “go left,right” when it was straight road or when I had to turn right at crossing.

I have to admit that after two tries I totally gave up on driving with it and switched back to TomTom device. But there is one good thing in Ovi Maps — it works quite good for walk navigation. I used it in many cities abroad and it handled. I hope that Maemo5 version will work at least that good as Symbian one.

Played a bit with Maemo 5 SDK

Today I found some time and played with Maemo 5 SDK. As I am one of those who do not like Scratchbox I used official image for VirtualBox. After boot I landed in GNOME session of Ubuntu 8.10 and after few moments I got Maemo 5 started thanks to instructions from forum.

Ok, so let’s test it. As official release notes mentioned Polish translation I switched to it. What I saw was disaster… And the problem is that latest firmware has same version available. Examples:

Desktop (here we have wdgt_va_24h_time) Statusbar clock (wdgt_va_date_long this time) Calendar - new entry (wdgt_va forever!) Calendar - today view (today in Polish is wdgt_va_date_long) Calendar - week view (who will tell which day is today?) Calendar - settings (looks nice - except of wdgtbdsave) sfil_ap_name is good name for application World clock (but which cities is has?)

Note: I did system update by using “apt-get update;apt-get upgrade” followed by “fakeroot dpkg --configure -a” (because sbox root ’emulation’ was too weak for “libosso-abook”). As a result translation “6.0+r7250+0m5” were installed (“calendar-l10n-plpl” package). Scary, isn’t it?

Next thing which I looked at was instant messaging — which I was not able to use since there was no Jabber support. It has ICQ, Gadu-Gadu, MSN, Sametime, Salut, QQ, Groupwise, Google Talk, AIM, Yahoo but no Jabber. I even installed “telepathy-extras” but that added me yet another MSN and still no Jabber… Probably other package needs to be installed but why it has to be? OK, maybe SDK image does not contain same packages as device one but why it supports such poor thing like Gadu-Gadu out-of-box?

Contacts app is improved when compared to Maemo4 one — finally something closer to application which I described some time ago in other post. Has some bugs (I can not enter “+48123456789” as number because only digits are available (and ‘p’ for internal numbers).

Looks like there will be a long list of things to report as bugs when/if I will get my N900 (so far it is somewhere in deep nowhere). Why not reporting them now? Simple — I want to be able to check them on device itself.

Other things I will check next time. Now it is time to sleep.

Sim.One #0006 arrived

Today I got nice package in post office — Simplemachines One developer board (Sim.One in short). It is based on Cirrus Logic EP9307 processor with Maverick Crunch floating point unit. I got board with #0006 serial number.

Board is much better then EDB9301 which I used so far for EP93xx toolchain tests. What is on board:

  • EP9307 CPU
  • 64MB ram
  • 8MB NOR flash
  • MMC slot (connected over SPI so ~250KB/s max)
  • 2 USB host ports
  • VGA out port — XGA 8bit or SVGA 8/16/24bit
  • serial port in RJ-45 instead of standard DB9 (but cable is in package)
  • audio in/out jacks
  • many connectors with different signals — will have to check schematics for that.

By default board boots into Debian ‘lenny’ system stored on 4GB SDHC card. But there are problems with it as this is MMC over SPI so speed is very limited (about 250KB/s only) and it time outs quite often so I plan to move to USB stick during next days.

Next step will be adding it into OpenEmbedded and running Ångström as base distribution.

BTW — how did I got it at all? That’s due my recent work on merging EP93xx support into OE — I was asked do I want developer board with this processor.

Poky Linux 3.1.2 released

Yesterday Richard Purdie released maintenance version of Poky ‘pinky’ branch. It contains mostly fixes to get it into buildable state in all distributions released since 3.1.1 was done.

It got over 50 changes during 1.5 year of development. Most of them were done by me as part of my work for Bug Labs company and their BUG Linux distribution. As policy of handling fixes requires to make them also in development branch it was more then just make a fix for ‘pinky’ — I also had to take care of ‘elroy’ (which had to be next stable version) and ‘master’. Some time ago support for ‘elroy’ was dropped anyway.

If you look at ‘git log’ output you will notice few authors other then just me. Thats because if fix was present in other sources such like Poky ‘master’ or OpenEmbedded I cherrypicked it and adapted to make it apply with keeping original author credits.

Did I add something new into it? Yes, few things were added:

  • SPLASH support in task-poky so you can use own bootsplash tool instead of psplash
  • warning for ‘/proc/sys/vm/mmap_min_addr’ not being set to 0 (which would break qemu)
  • Python 2.6 compatibility
  • BP/BPN variables which were used in Jalimo repository which we use as one of overlays
  • automatic resizing of ext2/3 images if rootfs do not fit in default size

What will future bring? I hope that new stable branch for Poky will be created in next few months so developers will be able to switch. I know that some companies did a move from ‘pinky’ to ‘master’ (or snapshot of it + own changes). We at Bug Labs are moving into OpenEmbedded ‘stable/2009’ as we need newer software and want some functionality which is not present in ‘pinky’.

Back from OEDEM 2009

During last weekend I was in Cambridge, UK where OEDEM 2009 took place. This time it was organized by Phil Blundell from Reciva company (they make nice Internet radio devices, new ones do also FM and DAB).

I travelled by Berlin and Stansted due to fact that at those days there are no flights Londyn — Szczecin on Friday and Sunday. That gave opportunity to meet Henning and Robert in Berlin and discuss misc things during travel.

Friday evening was spent in Red Lion pub in Histon. Nice, tasty English beers and interesting place. Both ways with taxi because of raining and price was comparable to public transport.

On Saturday we walked to OEDEM place using Phil’s notes and got there with just one short cut missed (we found it next day).

What was discussed during meeting? Many things, we had also OE e.V. meeting during which we voted for few new members, chosen new board, decided on sponsoring and selected Robert Schuster for PR guy.

So what was on topic:

  • OE e.V. meeting (minutes)
  • Establishment of technical steering committee (summary)
  • OE and Poky (summary)
  • Software development for OE derived distributions (summary)
  • Learning to love distro flags, or, What’s a distro for? (summary)
  • State of the art in package management (summary)
  • Splitting the recipes tree (summary)
  • Future plans for stable branch(es) (summary)
  • Bugtracker Discussion (summary)
  • Hosting arrangements (summary)
  • Death to checksums.ini? (summary)
  • BitBake Future Roadmap (summary)
  • OE Core Changes (summary)

Each entry was already summarized so I provided links for those who did not read OpenEmbedded development mailing list. Discussion was hot, many subjects had different opinions from audience and it was great.

As usual it was nice to meet friends from OE in person and for few of them connect face to name. And again I did not had any spare time to look around the city of OEDEM — too many things in small amount of time. But maybe another time 🙂

Back to Poky Linux development

In February 2007 I started officially working on Poky Linux. It was due to my contracting work for OpenedHand company. In August 2008 Intel acquired them so I ended direct development of Poky in October 2008.

But that does not mean that I ended supporting this build system. I started contract work for BugLabs company and they are using Poky ‘pinky’ release. During that time I fixed some bugs (mostly by backporting fixes from Poky ‘master’ or OpenEmbedded) but most of time did not touched main development branch.

Until now — I have customer which uses main branch for own development. So looks like I will provide some new code for development branch during next weeks.