Skip to content

{ Monthly Archives } April 2010

Memotoo

Server with very good support for SyncEvolution, see http://www.memotoo.com/index.php?rub=infoSyncML. It is part of SyncEvolution’s nightly testing and included in the list of configuration templates that come with SyncEvolution.

SonyEricsson P1i

| Key | Value |
|——|—–|
| Phone manufacturer | SonyEricsson|
| Phone model | P1i|
| Phone firmware version |CXC162108 R6G04 |
| Data that can be synchronized | none |
| Data that has problems | contacts,events,tasks,memos |
| SyncEvolution version | 1.0 beta 3 |
| SyncEvolution platform | Gentoo linux |
| SyncEvolution backend | Evolution/as plain files/ |
| Configuration template included in SyncEvolution: | no, syncevo-phone-config.py could not create one neither |
| Tested by | George Schreiber |

Comments:

Failed to get this phone syncing with the 1.0 beta 2 as well, it seemed like the phone bluetooth got broken (needed bluetooth restart on the phone) when tried to sync according to the wiki description, there was one similar bluetooth problem during running syncevo-phone-config, around the 1100th test (was not watching carefully as this process was running for several hours).

If trying to sync using the config that was created according to the 1.0 beta 2 wiki, it fails with these messages:

[ERROR] ObexTransport: Transport Exception in sdp_source_cb
[ERROR] ObexTransport: Transport Exception in sdp_source_cb
[ERROR] ObexTransprotAgent: Underlying transport error

Changes applied during synchronization:
+---------------|-----------------------|-----------------------|-CON-+
|               |         LOCAL         |        REMOTE         | FLI |
|        Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|   addressbook |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|      calendar |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|          memo |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|          todo |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|          start Fri Apr 23 22:17:19 2010, duration 0:10min           |
|          external transport failure (local, status 20043)           |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
First ERROR encountered: ObexTransport: Transport Exception in sdp_source_cb

the logfile (for details) ends like this (apparently where things go wrong):

     [2010-04-23 22:17:19.241] 0: integer ITEMLIMIT

     [2010-04-23 22:17:19.241] 1: integer NEEDFILTER

     [2010-04-23 22:17:19.241] 2: integer PASSES

     [2010-04-23 22:17:19.241] Resolving - processitemscript,
   ctx=0xCA8FCD8, VarDefs:

     [2010-04-23 22:17:19.241] 0: integer ITEMLIMIT

     [2010-04-23 22:17:19.241] 1: integer NEEDFILTER

     [2010-04-23 22:17:19.241] 2: integer PASSES

     [2010-04-23 22:17:19.241] 3: integer n

     [2010-04-23 22:17:19.242] SyncML server account:

     [2010-04-23 22:17:19.242] client: SyncEvolution 1.0beta3 for
   workstation

     [2010-04-23 22:17:19.242] device ID:
   syncevolution-44d23b69-c550-444f-b60f-2d453269e597

[2010-04-23 22:17:24.398] ObexTransport: Transport Exception in
   sdp_source_cb

     [2010-04-23 22:17:24.398] Server Alerted Sync init with SANFormat 12
   failed, trying with legacy format

     [2010-04-23 22:17:29.537] ObexTransport: Transport Exception in
   sdp_source_cb

     [2010-04-23 22:17:29.538] TransportException thrown at
   ObexTransportAgent.cpp:376

     [2010-04-23 22:17:29.538] ObexTransprotAgent: Underlying transport
   error

Configuration template:

=== srejbi_p1i/config.ini ===
syncURL = obex-bt://00:1E:45:E2:71:E0
username =
password =
loglevel = 6
clientAuthType = md5
#remoteIdentifier = Sony Ericsson PC Suite for Smartphones
remoteIdentifier = mRouter SockComm
PeerIsClient = 1
enableWBXML = 0
WebURL = http://www.scheduleworld.com
ConsumerReady = 0

=== srejbi_p1i/.internal.ini ===
HashCode = 3690260817
ConfigDate = 20100423T131201Z
sync = two-way
type = addressbook:text/x-vcard
uri = addressbook
=== srejbi_p1i/sources/addressbook/.internal.ini ===
sync = two-way
type = calendar:text/x-vcalendar
uri = calendar
=== srejbi_p1i/sources/calendar/.internal.ini ===
sync = two-way
type = memo
uri = memo
=== srejbi_p1i/sources/memo/.internal.ini ===
sync = two-way
type = calendar:text/x-vcalendar
uri = todo
=== srejbi_p1i/sources/todo/.internal.ini ===
# used by the Synthesis library internally; do not modify
# adminData =

# unique integer ID, necessary for libsynthesis
# synthesisID = 0

will try to generate another config with 1.0 beta 3 and update the wiki when there are some more results…

UPDATE:

regenerated the config files using the beta 2 howto. my best guess is that the phone syncml client is buggy, the same thing happens as before:

check that phone is ok for sync:

sdptool search --bdaddr 00:1E:45:E2:71:E0 SYNCML
Searching for SYNCML on 00:1E:45:E2:71:E0 ...
Service Name: SyncMLClient
Service Description: SyncML BT client
Service RecHandle: 0x10045
Service Class ID List:
  UUID 128: 00000002-0000-1000-8000-0002ee000002
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 3
  "OBEX" (0x0008)

run sync:

syncevolution srejbi_p1i
[INFO] calendar: inactive
[INFO] memo: inactive
[INFO] todo: inactive
[INFO] Server sending SAN
[ERROR] OBEX Request 3 got a failed response Forbidden
[ERROR] ObexTransprotAgent: Underlying transport error

Synchronization failed, see /home/george/.cache/syncevolution/srejbi__p1i-2010-04-24-10-53/syncevolution-log.html for details.

Changes applied during synchronization:
+---------------|-----------------------|-----------------------|-CON-+
|               |         LOCAL         |        REMOTE         | FLI |
|        Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|   addressbook |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|          start Sat Apr 24 10:53:19 2010, duration 0:03min           |
|          external transport failure (local, status 20043)           |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
First ERROR encountered: OBEX Request 3 got a failed response Forbidden

log file:

Start of log - Synthesis SyncML Engine 3.4.0.6

     [-- collapse all --][++ expand all ++]

     [2010-04-24 10:53:19.458] CreateContext SyncEvolution// => 0

     [2010-04-24 10:53:19.458] Module_Capabilities:
   PLATFORM:Linux
   DLL:true
   MINVERSION:V1.0.6.0
   MANUFACTURER:SyncEvolution
   DESCRIPTION:SyncEvolution Synthesis DB Plugin
   plugin_datastore_str:no
   plugin_datastore_key:yes
   ITEM_AS_KEY:yes
   plugin_datablob:no

     [2010-04-24 10:53:19.460] Module_PluginParams
   Engine=01070000

     [2010-04-24 10:53:19.462] SyncML server account:

     [2010-04-24 10:53:19.462] client: SyncEvolution 1.0beta3 for
   workstation

     [2010-04-24 10:53:19.462] device ID:
   syncevolution-44d23b69-c550-444f-b60f-2d453269e597

     [2010-04-24 10:53:19.465] calendar: inactive

     [2010-04-24 10:53:19.467] memo: inactive

     [2010-04-24 10:53:19.469] todo: inactive

     [2010-04-24 10:53:19.478] D-Bus client :1.17332 has disconnected

     [2010-04-24 10:53:19.478] D-Bus client :1.17332 is destructing

     [2010-04-24 10:53:21.197] Connecting Bluetooth device with address
   00:1E:45:E2:71:E0 and channel 3

     [2010-04-24 10:53:21.760] OBEX progress

     [2010-04-24 10:53:21.819] OBEX Transport: get header who from connect
   response with value SYNCML-SYNC

     [2010-04-24 10:53:21.819] Server sending SAN

     [2010-04-24 10:53:21.819] ObexTransport send is called

     [2010-04-24 10:53:21.819] OBEX progress

     [2010-04-24 10:53:21.938] OBEX progress

     [2010-04-24 10:53:22.642] OBEX Request 3 got a failed response
   Forbidden

     [2010-04-24 10:53:22.643] TransportException thrown at
   ObexTransportAgent.cpp:408

     [2010-04-24 10:53:22.643] ObexTransprotAgent: Underlying transport
   error

and some “fun” (phone needs a bluetooth restart to get back to normal):

sdptool search --bdaddr 00:1E:45:E2:71:E0 SYNCML
Searching for SYNCML on 00:1E:45:E2:71:E0 ...

until a BT restart is done on the phone, further sync attempts end up like this:

[INFO] calendar: inactive
[INFO] memo: inactive
[INFO] todo: inactive
[ERROR] ObexTransport: Transport Exception in sdp_callback_impl
[ERROR] ObexTransportAgent: Bluetooth service search failed
[ERROR] ObexTransprotAgent: Underlying transport error

Synchronization failed, see /home/george/.cache/syncevolution/srejbi__p1i-2010-04-24-10-56/syncevolution-log.html for details.

Changes applied during synchronization:
+---------------|-----------------------|-----------------------|-CON-+
|               |         LOCAL         |        REMOTE         | FLI |
|        Source | NEW | MOD | DEL | ERR | NEW | MOD | DEL | ERR | CTS |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|   addressbook |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|          start Sat Apr 24 10:56:24 2010, duration 0:02min           |
|          external transport failure (local, status 20043)           |
+---------------+-----+-----+-----+-----+-----+-----+-----+-----+-----+
First ERROR encountered: ObexTransport: Transport Exception in sdp_callback_impl

log:

Start of log - Synthesis SyncML Engine 3.4.0.6

     [-- collapse all --][++ expand all ++]

     [2010-04-24 10:56:24.184] CreateContext SyncEvolution// => 0

     [2010-04-24 10:56:24.184] Module_Capabilities:
   PLATFORM:Linux
   DLL:true
   MINVERSION:V1.0.6.0
   MANUFACTURER:SyncEvolution
   DESCRIPTION:SyncEvolution Synthesis DB Plugin
   plugin_datastore_str:no
   plugin_datastore_key:yes
   ITEM_AS_KEY:yes
   plugin_datablob:no

     [2010-04-24 10:56:24.185] Module_PluginParams
   Engine=01070000

     [2010-04-24 10:56:24.187] SyncML server account:

     [2010-04-24 10:56:24.187] client: SyncEvolution 1.0beta3 for
   workstation

     [2010-04-24 10:56:24.187] device ID:
   syncevolution-44d23b69-c550-444f-b60f-2d453269e597

     [2010-04-24 10:56:24.191] calendar: inactive

     [2010-04-24 10:56:24.193] memo: inactive

     [2010-04-24 10:56:24.193] todo: inactive

     [2010-04-24 10:56:24.203] D-Bus client :1.18023 has disconnected

     [2010-04-24 10:56:24.203] D-Bus client :1.18023 is destructing

     [2010-04-24 10:56:26.394] ObexTransport: Transport Exception in
   sdp_callback_impl

     [2010-04-24 10:56:26.394] ObexTransportAgent: Bluetooth service
   search failed

     [2010-04-24 10:56:26.395] TransportException thrown at
   ObexTransportAgent.cpp:376

     [2010-04-24 10:56:26.396] ObexTransprotAgent: Underlying transport
   error

(that looks fair enough as apparently the BT-syncml component must be crashed on the phone)

config (simplified, addressbook only, same results if playing with WBXML or remoteIdentifier):

===config.ini===
syncURL = obex-bt://00:1E:45:E2:71:E0
remoteIdentifier = PC Suite
PeerIsClient = 1
SyncMLVersion = 1.2
enableWBXML = 1
WebURL = http://www.scheduleworld.com
ConsumerReady = 1
===sources/addressbook/config.ini===
sync = two-way
type = addressbook:text/x-vcard
uri = Contact
===

Sony Ericcson K750i

Key Value
Phone manufacturer Sony Ericsson
Phone model K750i
Phone firmware version ?
Data that can be synchronized contacts, events, tasks, memos
Data that has problems
SyncEvolution version 1.0 beta 3
SyncEvolution platform Linux desktop
SyncEvolution backend plain files in syncevo-phone-config
Configuration template included in SyncEvolution: no
Tested by Patrick Ohly

Comments:

Only tested with “syncevo-phone-config –advanced”. In other words, at least simple items could be copied to and from the phone.

Configuration template:

=== template.ini ===
fingerprint = <Model> <Manufacturer>
=== config.ini ===
SyncMLVersion = 1.1
peerIsClient = 1
remoteIdentifier = PC Suite
=== sources/addressbook/config.ini ===
type = addressbook:text/vcard
sync = two-way
uri = Contact
=== sources/calendar/config.ini ===
type = calendar:text/x-vcalendar
sync = two-way
uri = Calendar
=== sources/todo/config.ini ===
type = todo:text/x-vcalendar
sync = two-way
uri = Task
=== sources/memo/config.ini ===
type = memo:text/plain
sync = two-way
uri = Memo

eGroupware

Contributed on 10.09.2006 by Mathias Weyland, who also graciously provided access to a server for testing for a while. Not currently tested.

SyncEvolution can handle synchronization with eGroupware (eGW), starting with 0.4-pre2 plus one patch, which was included in 0.4.

Make sure eGW fits the needs for correct operation with syncML, in particular php5 and Pear::Log. See here for information about requirements and settings.

The SyncEvolution setup is rather straightforward. Although the SyncML code of eGW is based on horde (see above), there’s no need to restrict authentication to auth-basic.

Set syncURL to http://<host>/<egw-base>/rpc.php. Set “type = text/calendar” and “uri = ./calendar” for the calendar and “type = text/x-vcard” and “uri = ./contacts”, respectively for the address book.

Warning: “uri = ./calendar” apparently is the official uri, but several users reported that with that setting events created in eGW were not copied into Evolution while “uri = calendar” worked alright. Until this is clarified, the recommendation is to use “uri = calendar”.

All in all, synchronization is working well, but I’d like to mention some things I noticed not to work:

  • Recurring events don’t stop at a final date in eGW, even when this final date has been set in evolution.

    “A known issue of old Evolution versions.” — Patrick

  • Recurrence exceptions are not respected.

    “eGW seems to rely on storing the remaining instances of an event, but does not include this information in the data it sends to SyncEvolution. On the other hand, SyncEvolution also does not yet support this either. Exceptions defined in Evolution’s dialog are stored as simple properties and are sent to the server, but eGW does not seem to use that information.”

  • New appointments in eGW are not sync’ed to evolutions. But updates are.

    “Could not reproduce. If it still occurs, please submit a bug report.”

  • With SyncEvolution 0.6, Ioannis Ioannou had a problem with lost or messed up telephones. Part of the problem was in SyncEvolution (it did not correctly detect types as sent by eGW, fixed in 0.7), part of the problem was in eGW (it does not handle the vCards sent by SyncEvolution correctly). Ioannis found out that eGW has hard-coded mappings for incoming data, which might have to be adapted on a case-by-case basis for clients. He submitted a patch (thanks!) which adds a SyncEvolution mapping to eGW. Hopefully this problem will be fixed. The original version of his patch changes class.vcaladdressbook.inc.php in egroupware/addressbook/inc and was tested on 1.4.001, 1.4.002, and the trunk of 2007-09-25th.
  • If communication with eGW stops with a Server Failure: server returned error code -1 error, then the reason is most likely a parser problem in eGW. Some information about this can also be found in the same discussion thread.

Horde

Contributed on 08.05.2006 by Todd Pytel based on an early 0.4 CVS snapshot.

The Horde framework includes a SyncML component compatible with SyncEvolution and other SyncML clients. This component is built in to the core framework and does not need to be separately installed. For synchronization to work, you need to do a few things….

  1. Use fresh Horde sources: Many SyncML changes are applied only to Horde’s CVS HEAD branch. The stable branch does include some SyncML support, but it’s not as complete as what’s found in CVS HEAD. If you really don’t want to use CVS HEAD sources entirely, you might be able to get away with updating just the files /horde/rpc.php and /horde/turba/lib/api.php. Try the versions from the stable CVS branch first before trying HEAD, and don’t complain if they don’t work correctly on top of a release installation. Much better to just use CVS HEAD altogether.
  2. Configure authentication: On the Horde server, the only thing that might require configuration is authentication. By default, SyncEvolution will use md5 authentication, which is nice when you’re using HTTP rather than HTTPS. Support for md5 was very recently added to Horde, and will almost certainly have changed by the time you read this. At the moment, see the comments in SyncML/Backend.php around line 404 for details. Alternatively (and more easily), run SyncML over HTTPS and tell SyncEvolution to use basic, non-md5 authentication, by adding

    clientAuthType = syncml:auth-basic serverAuthType = syncml:auth-basic

    to the ~/.sync4j/evolution/horde/spds/syncml/config.txt file (see below).

  3. Configure SyncEvolution: Read the generic SyncEvolution docs, then come back here. Copy one of the prepackaged configuration directories (like etc/scheduleworld_1) to ~/.sync4j/evolution/horde as a starting point. It doesn’t matter much which template directory you use. They’re not very different, and there’s not much to configure. You need to modify (or create) the following items. In ~/.sync4j/evolution/horde/spds/syncml/config.txt:

    syncURL = https://your.horde.site.com/horde/rpc.php

    Adjust http/https appropriately and make sure the address matches the webroot configuration on the server.

    deviceId = sc-api-nat-&lt;identifier&gt;

    Each computer/username combo that syncs should have a different identifier, for example, using an identifier like “home-myusername” makes sense. The username and password lines should match your Horde username and password. Add the AuthType lines from #2, if you don’t want md5 authentication. Next, decide which Evolution databases you want to synchronize. I use only the addressbook, but the others should be similar. In ~/.sync4j/evolution/horde/spds/sources/addressbook_1/config.txt set

    uri = contacts

    That’s it. The other components use “calendar” (Kronolith), “notes” (Mnemo), and “tasks” (Nag). If you don’t want to synchronize a particular database, be sure to set “sync = none” in its config file.

  4. Try it out:

    syncevolution horde

    If you get errors, check out the Horde Sync wiki for more information on debugging. The sync@lists.horde.org mailing list is also very useful. Check the archives there, to see if there’s any info about your problem.

Enhancement (Note: This may be unnecessary when Turba 3 is released.)

The default configuration for Turba (Horde’s address book component) is less than ideal for SyncML, because the turba_objects database table is somewhat oversimplified (for example, all components of an address are combined in a single field). This leads to vcards that are missing some fields when they’re synced between Horde and Evolution. Fortunately, Turba is very clever, when it comes to reading its database, and can automagically adjust to many nondefault configurations. If you’re creating a fresh Turba installation, you can improve its SyncML capabilities greatly by using this custom sources.php file. If you do this, then you’ll also need to make sure the appropriate fields are available in the turba_objects table in your database. Using this postgres script, instead of the one included with Horde, will create an appropriate turba_objects from scratch. For MySQL, there is no such script available, so make the changes manually. Nothing else needs to be done with Turba, apart from using the custom sources.php and creating an appropriate turba_objects table. The Turba code will automatically recognize the new fields and use them correctly in SyncML transactions. Thanks to Karsten Fourmont for providing this solution.

Synthesis

The Synthesis server is a very configurable server which stores its data in a database. Contact data can be exchanged in vCard 2.1 and 3.0 format when using the default configuration, but due to how it is stored, several attributes used by Evolution get lost or modified. It might be possible to protect against loss of those attributes, by tuning the Synthesis server setup. More work would also be required to exchange calendar entries and tasks, because in the default configuration they are not accepted in the iCalendar 2.0 format of Evolution.

Ovi

OVI.com is Nokia’s set of web services, including among them complete PIM data handling and synchronization with phones via SyncML. Formal interoperability testing has not been done yet, but a user of SyncEvolution 0.9.1 reports that it works for him. Getting the necessary setting information for SyncEvolution is a bit tricky, so check out his nice report for a step-by-step guide.

Funambol

Since SyncEvolution 0.9 with calendar and task support. Funambol supports iCalendar 2.0 in the current server, so this is enabled in the configuration template. Not all iCalendar 2.0 features are supported by the server, most notably support for meetings (drops attendees), meeting invitations (drops UID), detached recurrences (drops RECURRENCE-ID). See README.funambol for details.

Interoperability with the Funambol server was improved in SyncEvolution 0.9 by adding support for some vCard extensions (X-MANAGER/ASSISTANT/SPOUSE/ANNIVERSARY, #2418). Lost ACTION property has a work around (#2422).

To enable the full support for all data in a configuration created with SyncEvolution < 0.9, so that it exchanges items in the more suitable iCalendar 2.0 format, use:

  syncevolution --configure \
                --source-property sync=two-way \
                funambol calendar todo
  syncevolution --configure \
                --source-property type='calendar:text/calendar!' \
                funambol calendar
  syncevolution --configure \
                --source-property type='todo:text/calendar!' \
                funambol todo

Without the exclamation mark, format auto-negotiation would pick the less capable vCalendar 1.0 format because that is marked as preferred by the server.

Google

Google contact sync (only with SyncEvolution >= 0.9)

Google follows the vCard 2.1 specification, and thus does not support some of the vCard 3.0 additions, nor some of the common extensions. As a result, several properties are not synchronized (nickname, birthday, spouse/manager, URLs, …). Only one top-level organization seems to be supported. For details, see README.google.

Regarding Google’s SyncML support, refresh-from-client and one-way-from-client sync modes are not supported. Deleting contacts moves them out of the main address without deleting them permanently. When adding such a contact again, the server discards the data sent by the client and recreates the contact with the data that it remembered.

Because SSL certificate checking for Google works only with libsoup if the platform has a patched libsoup (http://bugzilla.gnome.org/show_bug.cgi?id=589323) or libsoup >= 2.28, certificate checking remains turned off by default for Google. If your platform has a suitable libsoup (like Moblin 2.0), then enable checking with:

  syncevolution --configure \
                --sync-property SSLVerifyServer=true \
                --sync-property SSLVerifyHost=true \
                google

Google Calendar sync

Only supported indirectly through other SyncML services, like ScheduleWorld and GooSync, because Google itself does not provide access via SyncML.

ScheduleWorld

ScheduleWorld preserves almost all Evolution contact and calendar data. The exceptions are:

  • recurring events relative to UTC are transformed to events relative to the user’s time zone, as configured in his settings
  • the schema used to store contacts does not distinguish between different emails, so although all email addresses are preserved, their type gets lost