Howto setup SyncEvolution on a Nokia N900 with Egroupware

I’ve documented my current selection of smart phones and their respective features, advantages, and disadvantages elsewhere. The Nokia N900 does many things right (in my point of view), but is missing one crucial component by default: SyncML synchronization to HTTP servers. Fortunately, being largely open source, other developers have already taken care of this issue by porting the SyncEvolution package over to Maemo (the Debian-based Linux distribution running on the Nokia N900).

In this little howo, I document how to install and configure SyncEvolution on an N900 to synchronize via SyncML to an Egroupware server. It is largely based on this discussion in the maemo.org forum and the SyncEvolution documentation. I only added (by trial and error) those bits in the configuration that are required to make it talk to Egroupware. Errors are, of course, fully mine.

In the following, I assume that either rootsh is installed, or, more comfortable, an ssh server is running on the phone and you can log in from your normal machine.

Furthermore, the following applies to Egroupware 1.6.001 with the SyncML enhancements patches applied. I also tried updating to 1.6.002 (the Debian packages) and applying the patches again, but this actually made things worse concerning SyncML. As I have not yet found time to track down what’s wrong with the update, I am still using 1.6.001 with the appropriate patches. SyncEvolution on the N900 may or may not work with other versions of Egroupware and with or without other versions of these enhancements patches - I didn’t try.

1. Installing SyncEvolution on the N900

This is fortunately very simple. At the time of this writing, Debian packages for Maemo/N900 are available in two repositories: the extras-devel branch on maemo.org and Ove Kaaven’s repository. As I don’t want to expose myself to extras-devel right now, I am adding the latter (for example in Program Manager):

http://people.debian.org/~ovek/maemo/

with “distribution” simply set to “/” (without the quotes). The resulting entry in /etc/apt/sources.list.d/hildon-application-manager.list should then read:

deb http://people.debian.org/~ovek/maemo /

After adding this repository, a simple

apt-get install syncevolution

(executed as root) will fetch all required packages.

2. Configuring SyncEvolution for use with Egroupware

After unsuccessfully playing with various parts of the SyncEvolution configuration and always being rewarded with obscure error messages, the following worked best for me (executed as “user”:

  • syncevolution –configure Mobical
  • cd /home/user/.config/syncevolution/
  • mv mobical egroupware
  • cd egroupware
  • Edit config.ini (e.g. with vi) to change syncURL, username, and password appropriately. Nothing else needs to be modified in this file.
  • Edit sources/addressbook/config.ini to change uri to “./contacts”.
  • Edit sources/calendar/config.ini to change uri to “calendar” (yes, explicitly without the ./ in front).
  • Edit sources/memo/config.ini to change uri to “./notes”.
  • Edit sources/todo/config.ini to change uri to “./tasks”.

After these steps, my config files look like this:

/home/user/.config/syncevolution/egroupware/config.ini:

syncURL = https://[my server address]/egroupware/rpc.php username = rene password = [no, I'm not putting my password on this page either] # clientAuthType = md5 deviceId = sc-pim-n900-5c4f1cd6-4411-4a63-9613-676ec8e3f1b6 # enableWBXML = 1 # SSLServerCertificates = SSLVerifyServer = 0 # SSLVerifyHost = 1 ConsumerReady = 1

/home/user/.config/syncevolution/egroupware/sources/addressbook/config.ini:

sync = two-way type = addressbook uri = ./contacts

/home/user/.config/syncevolution/egroupware/sources/calendar/config.ini:

sync = two-way type = calendar uri = calendar

/home/user/.config/syncevolution/egroupware/sources/memo/config.ini:

sync = two-way type = memo uri = ./notes

/home/user/.config/syncevolution/egroupware/sources/todo/config.ini:

sync = two-way type = todo uri = ./tasks

3. Run SyncEvolution

Run (again as “user”):

syncevolution egroupware

to start syncevolution with this configuration. To my surprise, this worked nicely and synced most of the fields I use in Egroupware. I have not yet checked extensively (and compared to my previous “production” phone, the N95), but it seems that SyncEvolution with the N900 contacts and calendar applications can give me something that I couldn’t get to work with the N95: birthdays and other anniversaries displayed in my main mobile phone calendar. Sweet.

To get a nice program icon for starting this without typing in the shell, create (as root) a file /usr/share/applications/hildon/syncevolution.desktop:

[Desktop Entry] Encoding=UTF-8 Version=1.0 Name=Syncevolution Comment=Sync Cal, Tasks, Contacts Exec=/usr/bin/osso-xterm -e "/usr/bin/syncevolution egroupware" Icon=general_synchronization Terminal=true Type=Application X-HildonDesk-ShowInToolbar=true X-Osso-Type=application/x-executable

Thanks for this hint go to “Isdreamer” on the maemo.org forum.

I am currently trying to find a good way to automate this, which will probably either involve installing cron/fcron, or, better, using the “alarm” API offered by Maemo.

Potential errors

  • The “CurlTransport Failure: couldn’t connect to host” error happens for me when I use my web server host name in syncURL, but not when I use its IP address. In my case, the most likely cause is missing or partially broken IPv6 support in the Maemo version of libcurl (as my server is reachable under both IPv6 and IPv4 addresses when using its host name).
  • A generic “Synchronization failed, see /home/usre/.cache/syncevolution/egroupware-…../sysynclib_linux.html for details.” error was the main problem on which I spent quite a few hours. I still don’t know the underlying cause, but starting from a default “Mobical” SyncEvolution configuration and adapting it as documented above solved it.
René Mayrhofer
René Mayrhofer
Professor of Networks and Security & Director of Engineering at Android Platform Security; pacifist, privacy fan, recovering hypocrite; generally here to question and learn