Since I just started testing Evolution as my PIM, including mail, calendar, todo and contacts, I thought it would be in its place to write a short post on synchronizing Evolution with a Sony Ericsson K610i (and quite possible other SE phones as well).

As in the previous try, I had no luck making the synchronization work with OpenML, but had to use IrMC instead. I have no idea if this is because of some problem with SE’s OpenML implementation, or perhaps it’s just that I have misunderstood what OpenML is all about. Anyway… IrMC works fine so far.

I had a few hiccups during the first synchronization, so a backup of your contacts and appointments might be a good idea if you value your data. I had to empty my phones calendar to get sync to work properly, even though you could just sort out the conflicts manually the first time. I also had to purge old appointments in my calendar to get the synchronization to work correctly. Initially my calendar file in ICS format was 121Kb, and that seems to be more appointments than the phone can handle. I purged all appointments older than 60 days, and that resolved the problem.

Installation

The required packages, not including Evolution, are:

multisync

multisync-tools

bluez-utils

opensync-plugin-evolution

opensync-plugin-irmc

You can get them all with:
sudo apt-get install multisync multisync-tools bluez-utils opensync-plugin-evolution opensync-plugin-irmc

After installing the packages you just need to setup a synchronization group using multisync tools.

msynctool --addgroup EvoK610irmc

Here “EvoK610irmc” is the name of the group that will hold the synchronization pairs, you can choose anything that you feel is appropriate.

Then it is time to add the participants to the group. First the evolution plugin, which need no further configuration, if you are using the standard calendar and address book:

msynctool --addmember EvoK610irmc evo2-sync

Then add the IrMC plugin by writing:

msynctool --addmember EvoK610irmc irmc-sync

That’s pretty straight forward so far.

Configuration

The evo2-sync plugin does not need any further configuration, as long as you are using the default calendar, address book etc. If you want to see, and possibly change the configuration, this can be done with the following command:

msynctool --configure EvoK610irmc 1

which allows you to view and change the settings of the first member in the EvoK610irmc group. The configuration is XML syntax, and is opened in the default editor, which is Nano in my terminal. My default configuration look like this: evo2-sync.config.

The second plugin configuration need to be set up with your phone’s address and IrMC channel. The first part is to find your phone’s address. Write:

Then it’s time for configuring the second member of the sync group, the irmc-plugin. Write:

msynctool --configure EvoK610irmc 2

The configuration should be like this: irmc-sync.config. Then it’s time to synchronize your data.

Usage

To synchronize your phone and Evolution simply fire up multisync with the command:

msynctool --sync EvoK610irmc

That’s at least what you should do, ideally. My experience is that you need to exclude some parts of the synchronization, and perhaps split it up in pairs. There are five types of objects available for synchronization: event, todo, contact, note and data. First, the note object type does not seem to have any effect on my synchronization. Notes on my phone are not synced to memos in Evolution, or the other way round, so I leave the note object type out of my synchronization. Secondly the data object must be included. If it’s exclude the synchronization can not connect to Evolution. Finally, my experience is that it’s best to split synchronization in two steps, since there is a tendency that the sync will hang and/or fail if you try performing a synchronization with all object types together.

During synchronization conflicts might be encountered. You will be asked to resolve these conflicts, selecting either side 1 (Evolution), side 2 (the phone), duplicate, the newest etc. If you are certain how you want to resolve conflicts, it is possible to include the –conflict option when synchronizing. For example: