If you assisted the talk Iago did at GCDS’09 about MAFW, maybe you remember he showed a demo to explain some of the concepts managed in MAFW. And if you paid attention too :wink: you noticed the demo was running on a standard desktop, not in scratchbox. Yes, cool!

Though MAFW is a key component in Maemo 5, it doesn’t have a lot of dependencies from Maemo. Thus, it is relatively simple to port. And to allow people to play with MAFW even without a scratchbox, we ported it to desktop. So this post is about how to build and/or use MAFW on desktop.

Also, if you’re lazy, I’m providing the binary packages too. So no excuse to give it a try!

Before continuing, some points must be clearly explained. First, this is not an official port, but one we did in our spare time. The aim is to help people that want to take a look at MAFW without expending too much time installing a scratchbox. So do not expect any kind of support (well, not really true, you can still send me an email about issues you find, and I’ll try to help you as much as possible; but no promises at all). And to illustrate this is just a port with no guarantee, the current port has some already known issues: it doesn’t build on amd64 architectures, and changing volume doesn’t work. So consider it as a beta (maybe alpha?) version :smile:. Finally, the base packages provided are the same that come with Maemo 5 Beta 2 SDK. Our intention is to show the same experience you’ll get with Maemo 5 in the desktop.

Building packages from scratch

This section is intended for those who want to build the packages from the sources. The steps described here are meant for Ubuntu 9.04 (Jaunty), though probably would work with other distros with some minor changes. If you want to skip this section, at the end the binary packages are provided too.


Like other Ubuntu packages, MAFW has some requirements. Most of them are packages that come both in Ubuntu and Maemo 5. But a couple of them are special requirements, as they are only in Maemo 5. So I’ve ported them to Ubuntu. As MAFW, this is a quick port, so there aren’t guarantees everything will work like a charm. But so far, they worked fine for me.

Hildon Thumbnail

This library is in charge of creating thumbnails and extracting cover arts embedded in mp3 files.

Build the package downloading the source and applying a patch, or directly installing the binaries.


Tracker is an indexer and search framework.

Again, just download the source, apply a patch and build the packages.

Building mafw

This could be considered the base of MAFW. Download the source, apply this patch, build and install it.

Building mafw-shared

This package allows to run each plugin as an independent process, using dbus to stablish communications.

In this case, it can be built directly in desktop downloading the source and building it. No patches are required.

Building mafw-tracker-source

This source is in charge of providing local content through Tracker. Thus, it depends on tracker and hildon-thumbnail.

Building mafw-tracker-source is as easy as downloading the source, compiling and installing the packages.

Building mafw-iradio-source

This source allows to store URL links for further accessing.

Again, like mafw-tracker-source, download the source, compile and install.

Building mafw-upnp-source

As its name suggests, this source allows to browse through an uPnP server and accessing its contents.

In this case a patch is required to build in desktop: download the source, apply this patch, and then compile it.

Building mafw-gst-renderer

Unlike the previous plugins, this one is in charge of playing the content provided by source plugins through gstreamer.

To build it, download the source, apply this patch, and make the package.

Building mafw-test-gui

This is just a demo example implemented on top on MAFW. It allows to browse through available sources and play the content.

Download the source, apply this patch, and build the package.

Using the binaries

If you prefer, binary packages for MAFW and dependants are also provided. Just download and install binaries for hildon-thumbnail, tracker and MAFW itself.

Running MAFW

Verifying requirements work fine

Before starting MAFW, we want to be sure that everything works O.K. At least, mafw-tracker-source and mafw-gst-renderer, so we will able to play some song.

First of all, we need to verify tracker is working and indexing fine. I don’t want to spend time here. So the easy way of checking it is getting the music indexed by Tracker:

$ tracker-files -s Music

This should show all songs in the home. Tracker have some kind of delays to avoid wolf down all resources. So maybe it could take some minutes before showing any clip.

The second issue to verify is gstreamer can play fine. I suggest to install all gstreamer plugins to be sure everything will work fine. You can test by playing some clip with gst-launch-0.10 playbin2.

Launching MAFW

Now, time to launch MAFW.

Each plugin will run in its own process, and they will communicate among them through dbus. So let’s launch them:

$ mafw-dbus-wrapper mafw-iradio-source &
$ mafw-dbus-wrapper mafw-upnp-source &
$ mafw-dbus-wrapper mafw-tracker-source &
$ mafw-dbus-wrapper mafw-gst-renderer &

Finally, launch the demo program that comes with MAFW:

$ mafw-test-gui

If everything went fine, you will be able to browse through your local music (and uPnP servers if available), create playlists and play them.

Enjoy the concert!

Blog Logo

Juan A. Suárez



Words from the Inside

Uninteresting things from an uninteresting developer

Back to Overview