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):
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:
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
sync = two-way
type = addressbook
uri = ./contacts
sync = two-way
type = calendar
uri = calendar
sync = two-way
type = memo
uri = ./notes
sync = two-way
type = todo
uri = ./tasks
3. Run SyncEvolution
Run (again as "user"):
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:
Comment=Sync Cal, Tasks, Contacts
Exec=/usr/bin/osso-xterm -e "/usr/bin/syncevolution egroupware"
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.
- 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.