Moblin 2.0 beta is out! This is very exciting for us: letting everyone see our hands work after having worked in private for six months… Now, I’m obviously biased, but personally I think it’s turning into a really awesome operating system / user experience — it’s not finished yet, but the awesomeness is there. See the video for some highlights.

I’ve been mostly working on synchronization myself: a daunting task that surely would have ended in pain if Patrick Ohly (SyncEvolution author) hadn’t joined our team. After Patrick came on board we quickly came up with a plan:

  • Concentrate on netbook<->server sync for Calendar events, Tasks and Contacts
  • Port SyncEvolution to use the just open sourced Synthesis SyncML engine
  • Add a D-Bus api to SyncEvolution in addition to command line access
  • Write a GTK+ application (in unmistakable Moblin style, thanks to Nick and other talented designers I have the pleasure to work with) that uses the D-Bus API

I’m happy to announce that the above is implemented in Moblin 2.0 beta:

Current Sync user interface

Current Sync user interface

m_zone shows events and tasks on the left pane

m_zone shows events and tasks on the left pane

We still have lots of things on the TODO list (more compatibility testing with servers, several missing UI features, automatic syncing, better integration with the rest of the Moblin stack to name a few), but the current features are now usable: I keep my own PIM data synchronized between my Nokia N85, a laptop with Debian unstable and a Moblin 2 netbook using as the server.

So, if youre trying out the Moblin 2.0 beta, please try Sync as well. Contributions are warmly welcome at the project site. By the way: Although we’ve heavily concentrated on the netbook use case, everything should work outside of Moblin as well.

The Lesser General Public License is only a half-hearted Open Source Software license. We believe it encourages vendors to take from the community without giving anything back […]

This assessment was QT Software’s opinion until Jan 14th. Current answer to QT FAQ #159 is worded with less conviction.

Apparently blogging about new features is now a requirement when committing to GUPnP repository! I should really start reading the small print before signing…

So, I improved gupnp-binding-tool a bit. For those who didn’t guess from the name, it is a GUPnP binding generator, a bit like dbus-binding-tool. It lets you, the UPnP application developer, deal with an API specific to your UPnP service (or control point) and hides most of the uglyness that naturally follows from GUPnPService and GUPnPServiceProxy being very generic.

Here are the main new features:

  • server (device) side bindings in addition to control point bindings: “–mode server”
  • state variable notifications support
  • “–prefix” option

You can take a look at the updated server tutorial , but what it really boils down to is in this example. First, implementation of the SetTarget action handler without wrappers:

static gboolean status;

set_target_cb (GUPnPService *service,
               GUPnPServiceAction *action,
               gpointer user_data)
  /* get new value */
       "NewTargetValue", G_TYPE_BOOLEAN, &status,
  /* change notification */
       "Status", G_TYPE_BOOLEAN, status,

  gupnp_service_action_return (action);


/* connect handler */
g_signal_connect (service,
                  G_CALLBACK (set_target_cb),

Notice the magic strings defining method and variable names and the type definitions that can’t be checked at compile-time? Getting those wrong will mean a run-time error in the best case, and they definitely won’t be available in your editors auto-completion.

Now take a look at the same handler using bindings generated with “–mode server –prefix switch” from the SwitchPower service definition (see gupnp/examples/SwitchPower1.xml):

static gboolean status;

static void
set_target_cb (GUPnPService *service,
               GUPnPServiceAction *action,
               gpointer user_data)
  /* get new value  */
  switch_set_target_action_get (action, &status);

  /* change notification */
  switch_status_variable_notify (service, status);

  gupnp_service_action_return (action);


/* connect handler*/
switch_set_target_action_connect (service,

Better, eh?

PS: The standard device/service definitions are available at

Welcome to the future

June 23, 2008

Few things are cooler than being able to work on interesting new stuff. Other people immediately building wild things on top of that work, however, is even cooler.

So, I worked briefly in the GUPnP project, making bindings for Vala. Before I managed to blog about it (hey, midsummer and all…) Zeeshan had ported gupnp-media-server to Vala and Jorn Baayen had built gupnp-media-renderer!

so… what does that mean for people who do not speak UPnP fluently? It means that I just used my N810 Mediastreamer to select the song Måndagsbarn by Veronica Maggio (a flac file on my laptop) for playing on my living room stereo set. Pretty cool, eh?

Now guess how many configuration steps were needed for all three devices to work together?  None, it just worked. Very cool.

Maybe it’s not comparable to the rocket backpack we’re all waiting for and maybe I’m just easy to impress, but I still found Ross‘ response to all this very appropriate: “Welcome to the future!”

PS: Did I mention it also works for video and images? Well, it does!

PS2: Some of the stuff mentioned here has not been released yet and may still change (at least gupnp-media-renderer is in svn only). The GUPnP framework on the other hand is ready and stable: See the documentation for API reference and tutorials.

In other news, Tampere is a host city candidate for GUADEC+Akademy 2009. Go Tampere!

(old) news

May 8, 2008

Forgotten this blogging thing altogether… well, here goes:

Geoclue 0.11

Geoclue 0.11 was released. I’m fairly satisfied with it and would love
comments from application developers. Some highlights:

  • Refined API. Easier to use and includes some nice additions like async-method calls (no more freezing UIs).
  • Usable Master provider:
    Geoclue Master provides Address and Position data using the best available geoclue provider. Master may not be industrial quality yet, but it is IMO usable (testing is more than welcome).
    See documentation for usage examples.
  • A couple of new providers:
    Gsmloc — uses a cell phone, libgammu and to get a position. No signals though.
    Localnet — uses router MAC address and a local file to get an address. Excellent for often visited places.

Get Geoclue as a tar-ball or via git:

git clone git://

OpenedHand is hiring

Several open positions: We’re looking for people with kernel, OpenEmbedded, GTK+, Clutter, UI design and graphic design skills (not necessarily all in the same person). Take a look.

Guadec 2008

Looks like I will be in Guadec talking about Geoclue! This will be joint operation with Iain and Bergie, and we’ll cover Geoclue, Gypsy and location-aware applications in general. I’m really looking forward to the whole event: I’ve wanted to go for a couple of years, but never really had the chance.

Yahoo has some kind of web based location sharing system called Fire Eagle. Could be interesting, but it’s currently “invitation-only”, in the best  web 2.0 spirit. This includes users and developers. So far, I understand the point, but the specs and API definitions are not publicly available either! Even the information that Fire Eagle is invitation-only is restricted: I had to get a throwaway Yahoo-login to find that out.

Dear Yahoo!, I don’t like jumping through hoops. Please call me when your specs are available: +358-400-609787 (I don’t have an answering service but I promise I’ll answer you some day, just keep trying).

Kesäkoodi is a “Google Summer of Code”-like program for Finnish students (university and univ. of applied science).  Bergie just reminded me that the project plan deadline is Feb 20th — that’s next week.

The project areas are not defined beforehand, but some “areas of special interest” are mentioned:

  1. social media
  2. location and context sensitivity
  3. mobile apps
  4. system management
  5. operating systems

About #2 and #3: I’ve got the feeling this summer would be a good time to work on Geoclue. We’ll have the new API finished Real Soon Now™  (promise), and there should be lots more developer interest when we reach summer.

If you’re studying in Finland, have some coding skills and are interested in a location-related programming project, stop by #geoclue irc channel (on or ping me on jabber. Do stop by even if you don’t have a specific idea — maybe we can figure something out…

I failed

February 6, 2008

After getting feedback from osso-gpsd maintainer and some more testing, I think that I was probably seeing a placebo effect with the gpsd leap-year fix — the patch does fix the leap-year bug but I  believe the fix time improvements were statistical anomalies and placebo. Bruises the ego to admit I was fooled, but that does fit the evidence best.

Not only that but in my attempt to be a responsible (non-maintainer) packager I’ve also done a mistake: I made my testing package version 1.0-25-jku0 to show that it’s not the original 1.0-25 version. This installs just fine, but later on upgrading will fail because osso-software-version depends on the exact version 1.0-25 :(

I strongly suggest everyone who installed my testing package to install version 1.0-25 from the same place (I don’t think it’s actually available from anywhere official). Like the version number implies, this is the non-patched version so your GPS time will be a day off until March. Really sorry for the trouble folks and thanks to Owen Williams for notifying me about the problem.

I’ve been playing with a possible solution to the time-to-fix problems of the Nokia N810 GPS, and it looks good: Getting a fix used to require 5-15 minutes even in very good conditions. Today I have experienced fix times between 30 seconds and 3 minutes — even from the window which was previously almost impossible.

The solution? Don’t have a 86400 second error in GPS time keeping.

I’m not kidding: there’s a leap year bug in gpsd which makes it add an extra day to all timestamps between Jan 1st 2008 – Feb 28th 2008. All gps-related code apart from gpsd is closed source so I can’t tell for sure, but I’m guessing this false time is used when the gpsdriver is initialized with the “last known position data”.

The evidence is just anecdotal, and this could be just a fluke. If anyone else wants to try and confirm, my patched testing packages are available. The first fix after installing should still take a long time, but I expect the following fixes to be faster. Please comment if you do any tests.

EDIT:  Nokia osso-gpsd maintainer says this in the bug:

The analysis that the leap year bug would affect fix times is wrong.

Based on the comments here I’m assuming it’s not just placebo that we’re all seeing, so I’ll have to investigate a bit further.

EDIT  2: Well, not only was I probably wrong, but the package prevents system upgrade. I’ve removed the patched packages and have original 1.0-25 up, please install that if you tried my patched version.

I’ve been trying to test the GPS on my newly-arrived N810. So far I have not succeeded in getting a fix from my window. Time-To-First-Fix while walking outside (with very good view of the sky) has been 5-10 minutes.

This is not what I had been hoping for. It seems I’ll still be carrying an external GPS with me, at least sometimes — just like like I have to carry a camera with me if I want to take half decent photos, even though my phone has two cameras in it. Good gadgets seem to be difficult to make. Good convergence gadgets are still, in my opinion, mostly an unproven theory.

Otherwise I’m very satisfied with the device: it feels really solid, and I’m still amazed how they fit the keyboard into a device smaller than the N800.

Not SiRF III? 

Anyway, about the GPS: There were rumours around the internet that the chipset is SiRF III, but this does not seem to be the case. Internettablettalk forum member ag2 found this string in /usr/sbin/gpsdriver:


GPS5300 is a gps-on-a-chip for OMAP based phones from Texas Instruments. From their product brochure (emphasis mine):

The GPS5300 NaviLink 4.0 solution enables a rapid time to first fix (TTFF) from weak satellite signals… .


  • Can someone confirm the chipset details?
  • Assuming we do have a GPS5300 on the tablets, does “rapid” have an alternate meaning in Dallas? Maybe it’s just that everything is bigger there, even time-to-first-fix.