While in Shanghai a few weeks ago, I picked up a Nokia 6131 telephone. Prices there are quite reasonable, and I was fed up with my Motorola Razr (the worst phone ever invented, as far as I can tell). Friends familiar with Nokia phones suggested I might prefer a Series 40 phone, which while less feature-rich than the Symbian models tend to run quite a bit faster. Shopping for telephones was quite easy; every model I'd ever heard of was available from multiple vendors. Someday maybe the US will rediscover the simple joy of providing what the customer wants.

In any case, once we had switched the 6131 from Chinese to English, I slipped my sim card into place and was happily conversing and taking pictures with the new toy.

Of course, one of the big goals in moving from the Razr to the Series 40 was to get synchronization between my Evolution contacts and calendar and the applications on the telephone. Not since my Treo 600 had I been able to see my schedule and access my whole phone book from my cell phone.

The 6131 putatively supports SyncML, but attempts to get the opensync SyncML plugin working ended in failure after much gnashing of teeth. The plugin would load, but the synchronization process would just hang without transferring a single phone number. Sigh. Clearly this phone doesn't quite follow the same interpretation of the syncml standard as the opensync plugin.

Finally, I started looking around for alternatives when I discovered that the Gnokii folks had created a gnokii opensync plugin using their Nokia-specific backend. Shockingly, there was no Debian package, so I downloaded the latest source and built it. Surprisingly enough, it appears to work fine.

Well, almost fine. I've got 'a few' contacts in my address book, and the simplistic gnokii code for locating a free address book slot was reading every address book entry looking for a free spot. Oddly, it spent a lot of time re-reading address book entries. That was easy to fix at least.

Next, I discovered that the gnokii sync code wasn't dealing with finite repeating events, events which repeat for a while and then stop. Every repeating event would go on forever. I use repeating events for conferences by setting them to repeat every day for the length of the conferences. I go to a few conferences each year, so with 10 years of conference history, I had several repeating events occurring 'today'. I tried to make this work correctly; the phone appears to have a notion of 'occurrences', which I was guessing meant a count of repeat events. I didn't manage to get this working, so I kludged around it and set these events to non-repeating, which at least removes them from view for the moment.

Of course, hacked versions of gnokii and gnokii-sync are available from my git repository.

Ah, life with a functioning telephone again. We'll see how long this lasts.