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

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.

cool geoinfo stuff going on

November 13, 2007

Several interesting news reached my sensory organs today:

Gypsy released
Iain Holmes just released Gypsy, a more elegant GPS daemon for a more civilized time. Full API documentation, a tutorial and even experimental packages are available (shocking, I know).
Gypsy is a good match for mobile devices if you ask me, and to that end I’ve tested it with N800 and a Nokia LD-3W bluetooth GPS — works fine.

Experimental user position support for Pidgin
I haven’t tested this proof-of-concept yet, but it is interesting: Geoposition sharing for pidgin on maemo. Doesn’t use geoclue but doing so might save several hundred lines of code…

Jaiku client released with source code
Henrik Hedberg released Mauku 0.3 (Jaiku client for Maemo) a few days ago. The source code is now available at Garage. Hmm, I smell a small geoclue project here… stay tuned.

Summer of Code has now practically ended. I’ll post a more detailed look at my original plans and actual accomplishments soon, for now I’ll just say that I’m fairly happy with the results: some things we’re left undone, but other unplanned features got implemented. What I’m wondering is how the rest of Maemo SoC went — according to Mathieu Blondels last post he’s doing ok (although that was a month ago), but the other two projects seem to have been dropped in the mid-term evaluation.

Smoove “Instant Desktop migration” and the Ruby bindings project have had no activity at all as far as I can tell (there’s some progress on the Ruby front, but it seems unrelated). Now, a sample size of four means that we can’t draw too much conclusions, but a half-way failure rate of 50% still seems high — compare with Gnome’s 2 out of 29 = 7%. What went wrong?

Eminently employable

Conveniently at the same time as SoC ends, I’ve found out that I won’t be getting either of the two jobs I’ve applied for. Naturally the application processes took about nine weeks to finish… So, if you’re looking for a developer or development support person with any/all of these qualities (preferably around Helsinki), let me know:

  • Involved with maemo from the beginning, familiar with development on the platform
  • Understands open source tools, processes and communities
  • Experience in closed and open source development in several languages on multiple platforms
  • Lots of knowledge and hands-on expertise in Geographic Information Systems

Full time, part time, freelance — I’m not too picky as long as the job is interesting.
Contact information
LinkedIn profile

Finally got the release out the door! More information at the home page, and here’s a link to Geoclue status applet install file (for IT OS 2007) for the impatient:


This isn’t the major release (except for me, this being the Summer of Code evaluation release): Geoclue position API is going through some changes at the moment and the next release will probably be a lot more more interesting. Still, feedback from users and developers is very welcome!

I thought some usage advice might be nice too, so here goes: Geoclue tries to abstract the source of the data away and provide just generic location data, but unfortunately that doesn’t always work like magic (not yet at least)… Here are some tips if you’re not seeing anything useful when you select different position providers:


  • visit Hostip with a browser and click “Make a correction” if your location is not shown or is wrong.


  • Plazes is the most useful provider for frequently visited places with wifi. See my earlier post on why getting started with it is currently a bit difficult.


  • gps only provides coordinates, which are currently not shown on the status applet. You’ll need to use “geoclue-position-example gpsd” on the command line or try the home applet from the garage download page, if you want to see the output.
  • If you do not get any results, make sure you own a bluetooth gps device and that it’s on and paired (using Control Panel –> Bluetooth)

Resource use

I’m always worried about the resource use of things I install on my tablet and I’m pretty sure I’m not the only one, so I guess I should talk about that too:

  • geoclue position providers get started only when requested
  • currently the providers stay running indefinitely
  • CPU use is minimal, I have not observed memory use much yet