KDE + Akonadi

Overview

This page describes how KDE users can use SyncEvolution to synchronize their PIM data without depending on Evolution or Evolution Data Server (EDS). The design of SyncEvolution explicitly allows to read/write data from different storages via backends, and one such backend uses the the Akonadi API.

The core SyncEvolution code also runs well in KDE. However, usage of KWallet instead of GNOME keyring has to be enabled explicitly when SyncEvolution's modules for both are are installed, because SyncEvolution cannot determine automatically whether the user runs KDE or GNOME. The only remaining dependency on GNOME is libsoup-gnome, which works in KDE but depends on GNOME settings to detect the system's proxy settings. If this is a problem, then proxy settings can also be changed in the SyncEvolution configuration itself.

However, KDE support is work in progress. Help by someone in the KDE developer community is needed to finish this feature and support if and when normal users start to use it.

Installation

Install any of the 1.2.99.x pre-releases of SyncEvolution 1.3 from the downloads directories (.tar.gz, .rpm) or from the unstable apt repositories (replace "stable" with "unstable"). Install the syncevolution-kde packages. This will pull in the core syncevolution-bundle, which contains all the real files.

Alternatively one can compile from source (master branches of SyncEvolution and libsynthesis) with --enable-kwallet and --enable-akonadi. To avoid the dependency on EDS, use --disable-ecal and --disable-ebook.

Configuration

Automatically detecting that the user wants to use Akonadi instead of EDS and which databases to use by default in Akonadi is not implemented. Therefore a KDE user has to tell SyncEvolution about that as a first. Once that part is configured, all further steps are the same as for Evolution users. See the HOWTOs to get an idea of what can be done with SyncEvolution.

Once installed, run the following command

$ syncevolution --print-databases
...
KDE Address Book = KDE Contacts = kde-contacts:
Database "akonadi" opened using driver "QMYSQL"
   akonadi_vcard_resource_0 (akonadi:?collection=8) <default>

KDE Calendar = kde-calendar:
   akonadi_ical_resource_0 (akonadi:?collection=9) <default>

KDE Task List = KDE Tasks = kde-tasks:
   akonadi_ical_resource_0 (akonadi:?collection=9) <default>

KDE Memos = kde-memos:

Memos don't seem to have any database unless created manually somehow in KDE. There's some code in the SyncEvolution Akonadi backend for memos, but is uncertain how complete the support is.

Pick the Akonadi URI of each database that you want to synchronize and configure the @default context so that those databases are used. At the same time ensure that KWallet is used for passwords from now on:

$ syncevolution --configure \
                keyring=KDE \
                addressbook/backend=kde-contacts \
                addressbook/database=akonadi:?collection=8 \
                calendar/backend=kde-calendar \
                calendar/database=akonadi:?collection=9 \
                todo/backend=kde-tasks \
                todo/database=akonadi:?collection=9 \
                @default addressbook calendar todo

Now any configuration for a SyncML peer (server or phone) or setup of CalDAV/CardDAV/ActiveSync syncing in the @default context will use these settings. As the name implies, the @default context is used implicitly unless specified otherwise. In particular, the GTK based sync-ui uses it, so until the Qt UI is ready, the GUI included in the SyncEvolution binaries can be used as fallback.

Troubleshooting

Once the @default context is configured, it should be possible to access all of the data in the four data default databases:

$ syncevolution --print-items @default addressbook
81
$ syncevolution --export - @default addressbook
BEGIN:VCARD
ADR;TYPE=home:Test Box #1;;Test Drive 1;Test Village;Lower Test County;1234
5;Testovia
ADR:Test Box #3;;Test Drive 3;Test Megacity;Test County;12347;New Testonia
ADR;TYPE=work:Test Box #2;;Test Drive 2;Test Town;Upper Test County;12346;O
ld Testovia
BDAY:2006-01-08
CATEGORIES:TEST
EMAIL:john.doe@other.world
FN:John Doe
N:Doe;John;;;
NICKNAME:user1
NOTE:This is a test case which uses almost all Evolution fields.
ORG:Test Inc.;Testing
PRODID:-//Synthesis AG//NONSGML SyncML Engine V3.4.0.0//EN
ROLE:professional test case
TEL;TYPE=HOME;TYPE=VOICE:home 2
TEL;TYPE=FAX;TYPE=HOME:homefax 5
TEL;TYPE=CELL:mobile 3
TEL;TYPE=CAR;TYPE=VOICE:car 7
TEL;TYPE=PREF:primary 8
TEL;TYPE=VOICE;TYPE=WORK:business 1
TEL;TYPE=FAX;TYPE=WORK:businessfax 4
TEL;TYPE=PAGER:pager 6
TEL;TYPE=VOICE:primary 8
TITLE:Senior Tester
UID:TDt77SeFdO
URL:http://john.doe.com
VERSION:3.0
X-KADDRESSBOOK-ANNIVERSARY:20060109
X-KADDRESSBOOK-MANAGER:John Doe Senior
X-KADDRESSBOOK-SPOUSE:Joan Doe
END:VCARD

$ syncevolution --print-items @default calendar
...
$ syncevolution --print-items @default todo
...

Note that SyncEvolution does not try to start Akonadi daemons if they are not running yet. A D-Bus session with those daemons already running is required. See akonadictl. Previous releases tried to start Akonadi, but that occasionally had problems and wouldn't be right if the user doesn't want to use Akonadi, for example in --print-databases.

To debug problems between SyncEvolution and Akonadi daemons, run SyncEvolution like this:

$ SYNCEVOLUTION_DEBUG=1 syncevolution --daemon=no ...

dbus-monitor may also show something interesting.

Know Issues

[ERROR] stderr: syncevolution(9962)/libakonadi Akonadi::AgentManagerPrivate::createDBusInterface: AgentManager failed to get a valid AgentManager DBus interface. Error is: 1 "org.freedesktop.DBus.Error.NameHasNoOwner" "Could not get owner of name 'org.freedesktop.Akonadi.Control': no such name"
is printed when Akonadi is not yet running. It seems to get started okay despite that error message - sometimes.

KDE Address Book = KDE Contacts = kde-contacts:
[ERROR] stderr: syncevolution(10193)/libakonadi Akonadi::AgentManagerPrivate::createDBusInterface: AgentManager failed to get a valid AgentManager DBus interface. Error is: 1 "org.freedesktop.DBus.Error.NameHasNoOwner" "Could not get owner of name 'org.freedesktop.Akonadi.Control': no such name"
[ERROR] Couldn't Start Akonadi Server: hence the akonadi backend of syncevolution wont work ..
... and then --print-databases aborts. Fixed in versions >= 1.2.99+20120312, which continue to iterate over other backends.

Database "akonadi" opened using driver "QMYSQL"
is some debug output from the Akonadi libs which shouldn't go to stdout. Only happens when using --daemon=no.

Comments (67 total)

From unstable apt repositories

Hi Patrick,

Under KUbuntu Oneiric, from unstable apt repositories (deb http://www.estamos.de/download/apt unstable main), here is what I get:

peter@dv-460mt:~$ sudo aptitude install syncevolution-evolution [sudo] password for peter: The following NEW packages will be installed: syncevolution-evolution{b} 0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 11.7 MB of archives. After unpacking 43.2 MB will be used. The following packages have unmet dependencies: syncevolution-evolution: Conflicts: libsmltk0 but 3.4.0.16.1-1 is installed. Conflicts: libsynthesis0 but 3.4.0.16.1-1 is installed. The following actions will resolve these dependencies:

   Remove the following packages:                  

1) acroread
2) flashplugin-downloader
3) ia32-libs-multiarch
4) libacl1
5) libasound2
6) libasound2-plugins
7) libasyncns0
8) libatk1.0-0
9) libattr1
10) libaudio2
11) libavahi-client3
12) libavahi-common3
13) libc6
14) libcairo2
15) libcomerr2
16) libcups2
17) libcupsimage2
18) libcurl3
19) libdatrie1
20) libdb5.1
21) libdbus-1-3
22) libdrm-intel1
23) libdrm-nouveau1a
24) libdrm-radeon1
25) libdrm2
26) libexpat1
27) libffi6
28) libflac8
29) libfontconfig1
30) libfreetype6
31) libgcc1
32) libgcrypt11
33) libgdbm3
34) libgdk-pixbuf2.0-0
35) libgl1-mesa-dri
36) libgl1-mesa-glx
37) libglapi-mesa
38) libglib2.0-0
39) libgnutls26
40) libgpg-error0
41) libgssapi-krb5-2
42) libgtk2.0-0
43) libice6
44) libidn11
45) libjack-jackd2-0
46) libjasper1
47) libjpeg62
48) libjson0
49) libk5crypto3
50) libkeyutils1
51) libkrb5-3
52) libkrb5support0
53) liblcms1
54) libldap-2.4-2
55) libllvm2.9
56) libmng1
57) libnspr4
58) libnspr4-0d
59) libnss3
60) libnss3-1d
61) libogg0
62) libpango1.0-0
63) libpciaccess0
64) libpcre3
65) libpixman-1-0
66) libpng12-0
67) libpulse0
68) libqt4-dbus
69) libqt4-declarative
70) libqt4-designer
71) libqt4-network
72) libqt4-opengl
73) libqt4-qt3support
74) libqt4-script
75) libqt4-scripttools
76) libqt4-sql
77) libqt4-svg
78) libqt4-test
79) libqt4-xml
80) libqt4-xmlpatterns
81) libqtcore4
82) libqtgui4
83) librtmp0
84) libsamplerate0
85) libsasl2-2
86) libsasl2-modules
87) libselinux1
88) libsm6
89) libsmltk0
90) libsndfile1
91) libspeexdsp1
92) libsqlite3-0
93) libssl1.0.0
94) libstdc++6
95) libsynthesis0
96) libtasn1-3
97) libthai0
98) libtiff4
99) libuuid1
100) libvorbis0a
101) libvorbisenc2
102) libwrap0
103) libx11-6
104) libxau6
105) libxcb-render0
106) libxcb-shm0
107) libxcb1
108) libxcomposite1
109) libxcursor1
110) libxdamage1
111) libxdmcp6
112) libxext6
113) libxfixes3
114) libxft2
115) libxi6
116) libxinerama1
117) libxrandr2
118) libxrender1
119) libxss1
120) libxt6
121) libxxf86vm1
122) nspluginviewer
123) nspluginwrapper
124) zlib1g

   Leave the following dependencies unresolved:    

125) ia32-libs recommends ia32-libs-multiarch
126) ia32-libs-multiarch recommends libgl1-mesa-glx 127) ia32-libs-multiarch recommends libgl1-mesa-dri 128) libqtgui4 recommends libcups2

Accept this solution? [Y/n/q/?]

It doesn't seem right to me, I dare not say Yes!! Please advise - thank you.

Ubuntu Oneiric

libsmltk0 and libsynthesis0 are libraries used by SyncEvolution. In Ubuntu and Debian, they are packaged separarately, whereas syncevolution-evolution .deb contains them.

The right way to resolve this is to uninstall libsmltk0, libsynthesis0 and syncevolution, then install syncevolution-evolution. In my experience, that happens automatically as part of "aptitude install syncevolution-evolution".

The following NEW packages will be installed:
  libsmltk0{a} libsyncevolution0{a} libsynthesis0{a} syncevolution syncevolution-common{a} syncevolution-libs{a}
0 packages upgraded, 6 newly installed, 0 to remove and 293 not upgraded.
Need to get 2.017 kB of archives. After unpacking 6.132 kB will be used.
The following packages have unmet dependencies:
  syncevolution-evolution: Conflicts: libsmltk0 but 3.4.0.16.6-1 is to be installed.
                           Conflicts: libsyncevolution0 but 1.2.2-1 is to be installed.
                           Conflicts: libsynthesis0 but 3.4.0.16.6-1 is to be installed.
                           Conflicts: syncevolution but 1.2.2-1 is to be installed.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     syncevolution-evolution    

Accept this solution? [Y/n/q/?]
...
The following packages have unmet dependencies:
  syncevolution-evolution: Conflicts: libsmltk0 but 3.4.0.16.6-1 is installed.
                           Conflicts: libsyncevolution0 but 1.2.2-1 is installed.
                           Conflicts: libsynthesis0 but 3.4.0.16.6-1 is installed.
                           Conflicts: syncevolution but 1.2.2-1 is installed.
The following actions will resolve these dependencies:

     Remove the following packages:
1)     libsmltk0                  
2)     libsyncevolution0          
3)     libsynthesis0              
4)     syncevolution              
5)     syncevolution-common       
6)     syncevolution-libs         

Accept this solution? [Y/n/q/?]
...

That's on Debian Testing.

What I don't understand is proposal to uninstall all of those packages on your system. They shouldn't depend on any of these libs. Are you sure that your system is up-to-date? If not, then perhaps aptitude is trying to do some package changes entirely unrelated to installing syncevolution-evolution.

Perhaps do a "aptitude update && aptitude upgrade" first, or uninstall the conflicting packages explicitly ("aptitude purge syncevolution libsmltk0 libsyncevolution0 libsynthesis0 syncevolution-common syncevolution-libs").

Hi Patrick, When I

Hi Patrick,

When I uninstalled syncevolution, the packages libsmltk0, libsynthesis0 were left, so I unistalled them as advised manually then installation went smoothly as follows:

peter@dv-460mt:~$ sudo aptitude install syncevolution-evolution The following NEW packages will be installed: syncevolution-evolution 0 packages upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 11.7 MB of archives. After unpacking 43.2 MB will be used. WARNING: untrusted versions of the following packages will be installed!

Untrusted packages could compromise your system's security. You should only proceed with the installation if you are certain that this is what you want to do.

syncevolution-evolution

Do you want to ignore this warning and proceed anyway? To continue, enter "Yes"; to abort, enter "No": y Unrecognized input. Enter either "Yes" or "No". Do you want to ignore this warning and proceed anyway? To continue, enter "Yes"; to abort, enter "No": yes Get: 1 http://downloads.syncevolution.org/apt/ unstable/main syncevolution-evolution amd64 1:1.2.2-2 [11.7 MB] Fetched 11.7 MB in 40s (289 kB/s)
Selecting previously deselected package syncevolution-evolution. (Reading database ... 173360 files and directories currently installed.) Unpacking syncevolution-evolution (from .../syncevolution-evolution_1%3a1.2.2-2_amd64.deb) ... Processing triggers for desktop-file-utils ... Processing triggers for man-db ... Processing triggers for hicolor-icon-theme ... Setting up syncevolution-evolution (1:1.2.2-2) ...

peter@dv-460mt:~$

Thank you, Peter.

package conflicts

Sounds like "syncevolution-evolution" needs to conflict with all of the split packages. I'll add that as part of reorganizing the package names.

My plan is to introduce a "syncevolution-bundle" package which contains everything shipped by syncevolution.org, then have "syncevolution-evolution" and "syncevolution-kde" with no content and just a dependency on "syncevolution-bundle". That makes it possible for current users to upgrade to the next version seamlessly. It also leaves the possibility open to have real, separate builds of SyncEvolution for the different desktops.

ERROR: --print-databases: unknown parameter

Once installed I get:

peter@dv-460mt:~$ syncevolution --version peter@dv-460mt:~$ syncevolution --print-databases ... ERROR: --print-databases: unknown parameter peter@dv-460mt:~$

I'm not sure whether I should have done something following installation before running this. Please advise. Thank you.

SyncEvolution version for KDE >= 1.2.99+20120228

Is the output of "syncevolution --version" really empty?

I get:

$ syncevolution --version
SyncEvolution 1.2.99+20120228+SE+cb0b7f6+SYSYNC+5e0f652 (pre-release)
using libedataserver-1.2.so.14
using libebook-1.2.so.12
using libecal-1.2.so.10
using libecal-1.2.so.10
using libbluetooth.so.3
Loading backend library /usr/lib/syncevolution/backends/syncebook.so
Loading backend library /usr/lib/syncevolution/backends/syncactivesync.so
Loading backend library /usr/lib/syncevolution/backends/syncdav.so
Loading backend library /usr/lib/syncevolution/backends/syncecal.so
Loading backend library /usr/lib/syncevolution/backends/syncmaemocal.so
Loading backend library /usr/lib/syncevolution/backends/syncsqlite.so
Loading backend library /usr/lib/syncevolution/backends/syncxmlrpc.so
Loading backend library /usr/lib/syncevolution/backends/syncakonadi.so
Loading backend library /usr/lib/syncevolution/backends/syncqtcontacts.so
Loading backend library /usr/lib/syncevolution/backends/syncaddressbook.so
Loading backend library /usr/lib/syncevolution/backends/syncfile.so
Loading backend library /usr/lib/syncevolution/backends/synckcalextended.so

The error for "--print-databases" is what you would get with SyncEvolution 1.2.x.

Note that you need to use "experimental" in your apt source repository to get the 1.2.99 prerelease.

unstable => experimental

Oops, I just noticed that I only uploaded to "experimental", instead of "unstable" as described in the Wiki page.

"experimental" is what I use myself before pushing to repos also used by normal users. The pre-release seems to be stable enough, so I have promoted it to "unstable". Please do an "aptitude update && aptitude upgrade".

Version Mismatch

Yes, the output of "syncevolution --version" really was empty?

As instructed, I've just done the following:

peter@dv-460mt:~$ sudo aptitude update

...

peter@dv-460mt:~$ sudo aptitude upgrade

...

peter@dv-460mt:~$ syncevolution --version

[INFO] proceeding despite version mismatch between command line client 'syncevolution' and 'syncevo-dbus-server' (1.2.2 != 1.2.99+20120228+SE+cb0b7f6+SYSYNC+5e0f652)

peter@dv-460mt:~$ syncevolution --print-databases

...

ERROR: --print-databases: unknown parameter

[ERROR] arguments parsing error

[ERROR] running the command line inside the D-Bus server failed

peter@dv-460mt:~$

Please advise, thanks.

kill syncevo-dbus-server

Please kill the running syncevo-dbus-server from release 1.2.2: killall /usr/libexec/syncevo-dbus-server.

That should get of the version mismatch warning and finally give you --print-databases.

There should be some auto-shutdown code in syncevo-dbus-server that detects package upgrades. I wonder why that failed.

Successfully Configured

Yes, yes, yes, successfully configured and I've managed to sync Kontact's contacts and calendar with my Nokia 2630 and Google Contacts!!!

A few strange things happening - but that is possibly me!

Many thanks, Patrick, for getting me this far.

next steps

Good that it is working now. It would be good to investigate the remaining "few strange things", though.

Can you file bugs as described in http://syncevolution.org/support and link to the bugs here, to help people who start with this HOWTO?

problem with --print-databases

I'm also trying to get PIM contect sync running using syncevolution and I'm happy to see you working on KDE/Akonadi integration here. Thank you very much for that :-)

Unfortunately I have a problem to determine the right databases for my Akonadi access. Some thing with --print-databases seems to go wrong:

> ~$ syncevolution --print-databases > CalDAV: > select database via absolute URL, set username/password to scan, set syncURL to base URL if server does not support auto-discovery () > > CardDAV: > select database via absolute URL, set username/password to scan, set syncURL to base URL if server does not support auto-discovery () > > Evolution Address Book = Evolution Contacts = evolution-contacts: > [ERROR] Background sync daemon has gone.

Do you know what's wrong here?

--print-databases backend=kde-...

Somehow EDS isn't usable, which causes --print-databases to abort. That it aborts isn't intentional and I will change that. In the meantime, please use:

for backend in kde-contacts kde-events kde-tasks; do
   syncevolution --print-databases backend=$backend
done

I know you want to use KDE, but perhaps we can investigate why EDS causes this failure nevertheless? For that, please run

SYNCEVOLUTION_DEBUG=1 syncevolution --daemon=no --print-databases

Anything useful in the output?

Next try:

dbus-monitor &
syncevolution --print-databases

Again, anything interesting in the output?

Thank you very much. Now I

Thank you very much. Now I found the corresponding collections. (kde-events == kde-calendar?)

with SYNCEVOLUTION_DEBUG=1 syncevolution --daemon=no --print-databases the KDE crash handler comes up:

Application: SyncEvolution (syncevolution), signal: Segmentation fault [KCrash Handler]

> #6 SyncEvo::Cmdline::listSources (this=0x7fff91371800, syncSource=..., header=) at /data/runtests/work/sources/syncevolution/src/syncevo/Cmdline.cpp:1887 > #7 0x00007f7ad93b52ea in SyncEvo::Cmdline::run (this=0x7fff91371800) at /data/runtests/work/sources/syncevolution/src/syncevo/Cmdline.cpp:729 > #8 0x000000000041dff5 in SyncEvo::main (argc=, argv=) at /data/runtests/work/sources/syncevolution/src/syncevolution.cpp:536

As dbus-monitor is completely flooding my konsole window I don't know which parts could be useful for you.

segfault

Is that the complete stack backtrace? Where are lines #1 - #5?

How useful do you find the KCrash handler? SyncEvolution "accidentally" inherited that feature when adding KWallet support. You should be able to submit the bug report via email, just mail it to syncevolution@syncevolution.org, as suggested by the dialogs.

crash handler

it's not the complete backtrace. while the backtrace is generated, #1 to #5 can be seen within a very short period of time. But it immediately disappears, the backtrace finishes and comes up with #6 to #8 only as already shown above.

How useful is it? I don't know because I'm not deep into that stuff, sorry :-) But it rates the backtrace info to be worthless and I can't find debug symbols for the package.

So I think a bug report would not be big help, would it?

backtrace

so I managed to capture the KCrash report using a screenshot:

[Thread debugging using libthread_db enabled]
0x00007f11b417e500 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82
in ../sysdeps/unix/syscall-template.S
[Current thread is 1 (Thread 0x7f11b6625840 (LWP 26750))]

Thread 1 (Thread 0x7f11b6625840 (LWP 26750)):
#0 0x00007f11b417e500 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-
template.S:82
#1 0x00007f11b417e3bc in __sleep (seconds=0) at ../sysdeps/unix/sysv/linux/sleep.c:138
#2 0x00007f11b52d0f25 in startProcessInternal (argc=<optimized out>,
argv=0x7fffe10e2810, waitAndExit=true, directly=false) at
../../kdeui/util/kcrash.cpp:558
#3 0x00007f11b52d160a in KCrash::startProcess (argc=19, argv=0x7fffe10e2810,
waitAndExit=true) at ../../kdeui/util/kcrash.cpp:524
#4 0x00007f11b52d19d7 in KCrash::defaultCrashHandler (sig=<optimized out>) at
../../kdeui/util/kcrash.cpp:435
#5 <signal handler called>
#6 SyncEvo::Cmdline::listSources (this=0x7fffe10e4d90, syncSource=...,
header=<optimized out>) at
/data/runtests/work/sources/syncevolution/src/syncevo/Cmdline.cpp:1887
#7 0x00007f11b5ca42ea in SyncEvo::Cmdline::run (this=0x7fffe10e4d90) at
/data/runtests/work/soures/syncevolution/src/syncevo/Cmdline.cpp:729

Hopefully I didn't mistype a lot :-)

KCrash useful

I am not familiar with KCrash either. It seems it automagically removed the initial part of the backtrace because it was inside KCrash's own error handler and thus unrelated to the crash. That's neat, albeit a bit surprising for someone who doesn't know how KCrash works.

The real problem is in the line #5 quoted earlier. That's a bit puzzling, because the code around line #6 should have done the necessary NULL pointer check.

The report would have been useful. That KCrash cannot find debug packages is okay, debug information is part of the main package itself. I don't know KCrash well enough, so I don't know how it arrived at the conclusion that the report was not useful. IMHO any kind of backtrace is useful - well, at least much better than what I used to get earlier, when users had to know how to run the executable under gdb :-)

btw: it works!

Just wanted to tell you that I was able to sync my Nokia 2700 contacts and calendar now with Akonadi using your description and finding the appropriate databases with --print-databases backend=XXX. Afterwards I was syncing using the GTK-GUI. Thank you very much for that, great job!

crash fixed

I've found and fixed the problem. Solution will be in the next binary update.

Kwallet support in pre-compiled binary

I've installed the 1.2.99.x pre-release of syncevolution in ubuntu via apt and in opensuse. Synchronization with akonadi works fine, but the password is stored in the gnome keyring, even the KDE_FULL_SESSION variable is set. Is the kwallet support disabled in the binaries?

KWallet support will be updated

KWallet support should be included, but I haven't tested it.

I have already rewritten that code, the next binaries will work differently. In my testing with those binaries KWallet is used, so I suggest that you wait a few days and then try again.

1.2.99+20120312 released

Binaries for a new 1.2.99+20120312 snapshot have been released, in all formats (.rpm, .deb, .tar.gz, source).

Major changes:

  • Platform-specific code is now in loadable modules.

  • .deb packages consist of a "bundle" .deb (all files, no dependencies on KDE or EDS) and dummy "kde" and "evolution" .debs (depend on bundle, define dependencies).

  • Crash in --print-databases when EDS was unusable is fixed.

  • --print-databases continues iterating over backends even if one backend fails.

Problem with new release

I have removed my previous installation and config files then installed only syncevolution-bundle and syncevolution-kde and then successfully followed the instructions above to apparently successfully configure.

I then run sync and get an invitation to select a sync service. I select my nokia 2630 then attempt to sync. A syncing message comes up on the phone but it gets stuck at this point!!!!

Should I have syncevolution-libs installed or anything else? I've tried but dependensies won't let me.

Please advise. Thank you.

Problem with new release

Could you help with this please (under KUbuntu Oneiric), Patrick. Thank you.

Nokia 2630

I don't think the new release broke anything. But to be sure you can install the older one, packages for rpm and .tar.gz are in the same folder as the latest one. For Debian/Ubuntu there is http://downloads.syncevolution.org/syncevolution/archive/

If it continues to fail, then please send me log files of a failed sync, to patrick.ohly at gmx.de. See ~/.cache/syncevolution for the logs.

Task sync problem

I compiled syncevolution 1.2.2 with --enable-akonadi, configured as described above and successfully synced with my egroupware server (By the way, I got akonadi database list by syncevolution without any parameters). But now I can get task from server, but can't send to server a new task or changes in task.

SyncEvolution 1.2.2 + KDE + tasks

SyncEvolution 1.2.2 already had very similar KDE support, so when compiling from source it is possible to use the older release. Printing databases was done differently, as you noticed. But it would be better to test with the latest sources when using KDE, because only that will detect regressions before they enter 1.3. It's also where problems will be fixed.

Please try with the latest source. I suspect that it'll have similar issues, but I'd like to be sure before investigating further. Please also include information about your version of Akonadi and KDE. The KDE PIM team reports that a lot of problems were fixed in KDE 4.8, so it might be worth trying that, too.

SyncEvolution 1.2.2 + KDE + tasks

Before SE 1.2.2 I'd took several unsuccessfull attempts to compile SE 1.2.99 and I have no time to resolve issues. SE's compiled and used on ArchLinux + KDE 4.8.1 with latest update.

1.2.99 fails on ubuntu 10.04 and 12.04

I have installed SyncEvolution on ubuntu 10.04 and 12.04 from the unstable apt repositories.

I got the same error with both systems : SoupTransport Failure.

As far as Ubuntu 12.04 is concerned, I'm running SyncEvolution 1.2.99+20120312+SE+c44d3f3+SYSYNC+eea3635 on KDE 4.8.2.

The server is a free Funambol server running on the local network. It syncs like a charm, with Evolution trough SyncEvolution (installed from the distribution packages) running another Ubuntu 12.04 system. The server also syncs with an Android device using FunV10. So the server is not the problem.

syncevolution funambol
[INFO] todo: inactive
[INFO] calendar: inactive
[INFO] memo: inactive
[INFO] SoupTransport Failure: http://pim.lan:8080/funambol/ds via libsoup: Internal Server Error
[INFO] Transport giving up after 0 retries and 0:00min
[ERROR] transport failed, retry period exceeded
[INFO] addressbook: inactive
[ERROR] aborted on behalf of user (local, status 20017)
[INFO] creating complete data backup after sync (enabled with dumpData and needed for printChanges)

Internal Server Error

The "Internal Server Error" is a HTTP error code, sent by the HTTP server. I don't know why it works with one client and not with another. Could it be that one client uses IPv4 and the other IPv6?

The Wiki page about KDE is not a good place to ask such unrelated questions. It's also easy to overlook. Would you mind posting on the mailing list? You can use gmane if you prefer a web interface. See https://syncevolution.org/support

Why not a libsoup integration issue ?

Both tests on Ubuntu 12.04 were made on a common system, a fork of the same clean installed virtual machine. The Evolution+SyncEvolution branch works. The KDE+SyncEvolution branch fails. Since both are supposed to interact with the server through SyncEvolution and the same code of libsoup-gnome, is it absolutely unrealistic to suspect the client side (integration with libsoub or keyring of the kde-compliant version, for instance) ? In each case, the http server is the same. The "http error 500" also means the client asked the server to access a denied ressource...

About integration of SyncEvolution with KDE, the GTK sync-ui doesn't use the KDE Wallet. So i wonder how can SyncEvolution get the confidential passwords from the KDE Wallet if GTK sync-ui is "used as fallback" ? For my tests, I edited the peer configuration file and replaced "-" by the textual password (but stil had the problem). I also tried to set the password through the SyncEvolution CLI but got an error message :

Gkr: secret service operation failed: The name org.freedesktop.secrets was not provided by any .service files [ERROR] error code from SyncEvolution fatal error (local, status 10500): Try to save password in gnome-keyring but get an error. Error communicating with gnome-keyring-daemon

Is the packaged version integrated with KDE Wallet ? Did someone succeed using the packaged version with Ubuntu 12.04 ?

I hope it can help.

Bleck

SyncEvolution 1.2.99+20120312+SE+c44d3f3+SYSYNC+eea3635 (pre-release)

Same system?

In your initial report you said that it worked "on another Ubuntu 12.04 system". To me that difference seemed like a more likely explanation than the difference in binaries. Of course something on the client side is different and thus causing the problem, but as the server does reply (at least that's what I can tell so far from the error messages quoted), it would be useful to look at server logs to determine how the clients behave differently.

Alternatively, you could capture Ethernet logs with Wireshark or, perhaps easier, run SyncEvolution in debug mode.

Can you compare the working against the failing version on the same OS installation when using the following command?

SYNCEVOLUTION_DEBUG=1 syncevolution --daemon=no --sync two-way config name

If that doesn't show anything network related, then Wireshark would be the next step.

Regarding KWallet vs. GNOME keyring: the GTK UI does not use either of these directly. Passwords are stored and retrieved there by the syncevo-dbus-server transparently or (with --keyring) by syncevolution.

The failure with "org.freedesktop.secrets was not provided by any .service files" implies that GNOME keyring wasn't running in the D-Bus session. Did you try to use GNOME keyring or KWallet? In other words, what kind of user session was the command run in?

If you were trying to use KWallet, was KDE_FULL_SESSION set in your environment?

keyring ?

Hi Patrick,

I ran "SYNCEVOLUTION_DEBUG=1 syncevolution --daemon=no --sync two-way" and got exactly the same error messages I quoted in my first message.

I installed Wireshark. Thought I'm not used to it, I think I could capture the transactions related to the sync. Searching through the data grabbed, I'm surprised there is no evidence of the account password exchange. I looked for it in clear text and MD5 encoding and could not find it. It may suggest an authentication issue ? I easily found data expected to be transfered such at the account login

The GTK UI is not stable. I have eratic problems using it. Now, i can't save my configuration due to keyring access :

** (sync-ui:3083): WARNING **: Error in Session.SetConfig: Try to save password in gnome-keyring but get an error. Error communicating with gnome-keyring-daemon

though i succeeded using it some time ago... The password was saved in the gnome keyring, I suppose, for there was no Kwallet instance yet.

I only open KDE sessions since I didn't install the packages needed to open a Gnome session. KDE_FULL_SESSION is set to TRUE in my environment.

Same error with both binaries?

Now the question is: does it fail the same way on that system with the 1.2.2 binaries? If not, what's the difference?

You can switch to version that with "aptitude install syncevolution-evolution=1:1.2.2-2", assuming that you have the stable apt repo in your source list in addition to the unstable one.

So Wireshark confirms that HTTP messages are sent. You can find those more easily when running "loglevel=4 --sync two-way" and then looking at the session directory.

Is there really nothing in the server log about that internal server error?

Password issues are indeed a suspect, although I have no idea why that should cause such an error.

You can try providing the credentials on the command line, with "username=xxx password=yyy loglevel=4 --sync two-way".

no error with stable binaries

To avoid collisions I created a third fresh branche of the virtual machine. All 3 versions share the same Ubuntu-AMD64 12.04 up to date basic system, with the following options:

  1. syncevolution-evolution from Ubuntu repositories - works
  2. syncevolution-kde from the project unstable repository - generates an internal error on the funambol server
  3. syncevolution-evolution from the project stable repository - works

I forgot to say the 3 systems are configured to only run KDE sessions.

The "--daemon=no --keyring" combined options let me use the KDE Wallet on system 2 & 3 (didn't try on 1). Thanks Patrick ! ;)

KWallet support is broken

I've installed KDE on my system. Previously I only some bits and pieces of it installed (like KWallet and Akonadi), but obviously the limited kind of testing that I had done with that wasn't enough. I was hoping that a KDE developer would help with that, but no luck so far (hint, hint, ...).

Anyway, with a KDE session started normally I can reproduce that KWallet is not used. The reason is that "syncevo-dbus-server" doesn't have KDE_FULL_SESSION set and thus doesn't recognize that it is meant to use KWallet.

The command line without daemon and with keyring support (--daemon=no --keyring) accesses the KWallet, as intended.

That means that a different way of distinguishing between GNOME and KDE users is needed. I'm not sure how to do that.

On my system, both GNOME keyring and KWallet are now installed. So a check "is installed" doesn't tell SyncEvolution what the user wants to use.

In a fresh KDE session, neither KWallet nor GNOME keyring daemons are running. So "is running" also doesn't work.

"is working" also cannot be used. Trying to use either one or the other auto-starts the daemon, which involves popping up dialogs about keyring unlocking (GNOME) or configuring the wallet (KDE). Depending on what SyncEvolution tries to use first, either GNOME or KDE users will be unhappy.

Any bright ideas for an automatism?

Manually configuring SyncEvolution would work. Something like a global "desktop" option in ~/.config/syncevolution/config.ini with values "KDE", "GNOME", etc. If unset, an automatism would be used which for the time being (lacking a better idea) uses GNOME.

Akonadi sources already have to be configured manually, so it wouldn't be much extra work for KDE users.

Funambol broken: "internal server error"

I know what is causing the "internal server error". It's unrelated to password handling and/or KDE support, and was already fixed in later SyncEvolution versions (not released as binary though).

The Funambol server fails to handle non-numeric sync capabilities:

   <SyncCap>
        <SyncType>1</SyncType>
        <SyncType>2</SyncType>
        <SyncType>3</SyncType>
        <SyncType>4</SyncType>
        <SyncType>5</SyncType>
        <SyncType>6</SyncType>
        <SyncType>7</SyncType>
        <SyncType>X-SYNTHESIS-RESTART</SyncType>
   </SyncCap>

This is a bug in the server, SyncType is allowed to contain strings. They make more sense for extensions, too, because there is no central authority which registers them to avoid collisions.

Later SyncEvolution versions use a random number instead of X-SYNTHESIS-RESTART, to keep the Funambol server happy.

compiling the last version

Nice to read ! Where can I get the source code of the fixed version ? The binary packages at http://downloads.syncevolution.org/apt/ and the sources at http://downloads.syncevolution.org/syncevolution/kde/amd64-tar-gz/ both seem to have the same date (12-Mar-2012).

I'm not good at compiling but I badly need Akonadi-Funambol sync for a set of Kubuntu 10.04 systems ;)

lastest source in git

The latest source is only in the git repos. If you can wait perhaps a day, I am preparing new binaries. I only need to finish the "force KWallet" config setting.

Not that badly needed

Thanks a lot ! I don't need it that badly that I can't wait a day. Anyway, I'm not sure it wouldn't take more time before I succeed compiling form sources :)

new binaries: 1.2.99+20120530+SE+48b6fef+SYSYNC+2d7d1b2

Release 1.2.99+20120530+SE+48b6fef+SYSYNC+2d7d1b2 contains the fix for the Funambol incompatibility and introduces a keyring config property. From the NEWS file:

Automatically detecting KDE users is not possible at the moment. Instead KDE users have to manually set the new "keyring" global config property to "KDE" (case insensitive) if the SyncEvolution installation supports both, because GNOME Keyring is the default to avoid surprises for traditional users. If only KWallet support is enabled, then this is not necessary.

"GNOME" and "true/false/1/0/yes/no" can also be set. This has the advantage that keyring usage can be enabled permanently for the command line in --daemon=no mode; normally keyrings are not used in that mode because accessing them can bring up UI dialogs.

It also becomes possible to disable keyring usage in syncevo-dbus-server, something which couldn't be done before.

The --keyring command line option is still supported, as an alias for "[--sync-property] keyring=value". The default value for --keyring is true, to match the traditional behavior. In contrast to other sync properties, setting "keyring" does not require an explicit --run parameter. Again this is done to mirror traditional usage.

Great on Kubuntu 10.04

Thank you !

I gave a try to the new binaries on Kubuntu 10.04. Syncs with no problem with my Funambol (10, free) server.

I noticed an unexpected behaviour, syncing the contacts. The first normal sync after the refresh-from-server updates all the contacts on the server. I could not see what was really updated. Just checked it didn't produce duplicates and the major information was still unaltered (didn't check all the fields). All seems to be ok. The same "refresh-back" didn't happen with the appointments. This behaviour may be a consequence of how Akonadi interacts with Kontact ?

I didn't succeed using Kwallet as a default keyring but I guess it is due to my poor knowledge of syncevolution CLI options ;) All I can say is that syncing or using the sync-ui after having set "syncevolution --configure keyring=KDE @default" still uses the gnome-keyring). Reading carefully the documentation and understanding what "traditional behaviour", "default [not] keyring", "syncevo-dbus-server", "only Kwallet support" mean may help me :)

contacts change tracking + KWallet

The updating of contacts after a refresh-from-server is indeed unexpected. I don't see that happening here. Sorry, analyzing this exceeds the time that I have for KDE support.

The "syncevolution --configure keyring=KDE @default" command doesn't work because the command line doesn't understand that a single global option is meant to be set. Gah, should have tested it. What did work for me is "syncevolution --configure keyring=KDE username=xxx password=yyy memotoo", in other words, including the keyring option at a point when some other config is getting modified. It can also be included in the line which configures the Akonadi sources. I've tested that and changed the Wiki page accordingly.

even better on Kubuntu 12.04

The unexpected "refresh-back" may be a 10.04 issue. I tried the last binaries on Kubuntu 12.04 and didn't see it. Even better, some field labels that had disapeared in the regurlar version of Kontact for 10.04 are back ; for instance, "home/voice" and "work/voice" were labelled "other".

I hope some KDE developpers will take over. Akonadi is (was ?) such a key feature of KDE 4 that I was staggered it still didn't provide native syncML support. Now that you've pushed syncevolution so far into the KDE direction, I hope they will contribute to the project and add the final integration.

issue with KDE 4.9 akonadi and N900 over bluetooth

Hi I have an issue, if somebody can help me: I want to: sync contact, calendar and task from Kubuntu 12.04 KDE 4.9 32 bit (with akonadi) to a N900 over bluetooth Syncevolution to be runned from the Kubuntu PC. Packages version : SyncEvolution 1.2.99.4 (pre-release)

To do this I have prepared a script that should configure it, but I must be missing something. Maybe I don't get the context and config notion right.

What I don't understand especially is: 1) why it says there is no backend availabel for addressbook 2) why ity says there is no configuration called "my_n900" while the --print-configs just before seems to suggest there is

3) Anyhelp to make it work is welcome

THE SCRIPT I AM RUNNING AFTER A FRESH INSTALL OF syncevolution-kde and syncevolution-bundle syncevolution --print-databases hcitool scan syncevolution --configure --template Nokia_N900 --sync-property syncURL=obex-bt://2C:D2:E7:0C:37:A2 my_n900 \ keyring=KDE \ addressbook/backend=kde-contacts \ addressbook/database=akonadi:?collection=78 \ calendar/backend=kde-calendar \ calendar/database=akonadi:?collection=11 \ todo/backend=kde-tasks \ todo/database=akonadi:?collection=11 \ @default addressbook calendar todo syncevolution --print-configs syncevolution --remove my_n900

THE OUTPUT OF THIS SCRIPT IN THE CONSOLE max@netbook:~$ ./sync_feu.sh CalDAV: select database via absolute URL, set username/password to scan, set syncURL to base URL if server does not support auto-discovery ()

CalDAVTodo: select database via absolute URL, set username/password to scan, set syncURL to base URL if server does not support auto-discovery ()

CalDAVJournal: select database via absolute URL, set username/password to scan, set syncURL to base URL if server does not support auto-discovery ()

CardDAV: select database via absolute URL, set username/password to scan, set syncURL to base URL if server does not support auto-discovery ()

Evolution Address Book = Evolution Contacts = evolution-contacts: not enabled during compilation or not usable in the current environment

Evolution Calendar = evolution-calendar: not enabled during compilation or not usable in the current environment

Evolution Task List = Evolution Tasks = evolution-tasks: not enabled during compilation or not usable in the current environment

Evolution Memos = evolution-memos: not enabled during compilation or not usable in the current environment

KDE Address Book = KDE Contacts = kde-contacts: My Contacts (akonadi:?collection=78) Other Contacts (akonadi:?collection=79) akonadi_googlecontacts_resource_5 (akonadi:?collection=77)

KDE Calendar = kde-calendar: Bank_Holidays (akonadi:?collection=30) Calendrier_perso (akonadi:?collection=11) Geburtstage und Jahrestage (akonadi:?collection=62)

KDE Task List = KDE Tasks = kde-tasks: Bank_Holidays (akonadi:?collection=30) Calendrier_perso (akonadi:?collection=11)

KDE Memos = kde-memos: Notizen (akonadi:?collection=6)

Scanning ... 2C:D2:E7:0C:37:A2 Wotan900 [INFO] addressbook: looking for databases... [INFO] addressbook: no backend available [ERROR] error code from SyncEvolution fatal error (local, status 10500): addressbook: no backend available Configured servers: my_n900 = /home/max/.config/syncevolution/default/peers/my_n900 [ERROR] error code from SyncEvolution fatal error (local, status 10500): no such configuration: my_n900

Error 22001

Hi,

The sync graphical ui display the error message "error 22001".

Digging into the log file, i found 3 consecutive warnings which may be related to this error

2012-09-16 11:26:08.976] Created command 'Status' (incoming)

[2012-09-16 11:26:08.976] 'processStatus' - Processing incoming Status [--][++] [->end] [->enclosing]
[2012-09-16 11:26:08.976] Started processing Command 'Status' (incoming MsgID=2, CmdID=4)
[2012-09-16 11:26:08.976] WARNING: RECEIVED NON-OK STATUS 506 for command 'Replace' (outgoing MsgID=2, CmdID=8)
[2012-09-16 11:26:08.976] - Item data = Adding a calendar without any field usable for twin search set is not allowed.
[2012-09-16 11:26:08.976] Found matching command 'Replace' for Status
[2012-09-16 11:26:08.976] Status: General error 506 (original op was replace) -> marking item for resend in next session
[2012-09-16 11:26:08.976] Deleted command 'Replace' (outgoing MsgID=2, CmdID=8)
[2012-09-16 11:26:08.976] Deleted command 'Status' (incoming MsgID=2, CmdID=4)
–[2012-09-16 11:26:08.976] End of 'processStatus' [->top] [->enclosing]

This "22001 error" appeared after I moved my system from Ubuntu 10.04 to Debian 7 and installed the last (1:1.3-2) version of syncevolution-bundle, from the unstable branch of the repository. I guess the Warning and the error are related because I already had this kind of messages before, but on the contacts. It was due to an "empty" contact I created in Kontact. Deleting the contact eliminated both the warning and the error message.

But I don't remember myself creating 3 new empty appointments in Korganizer since the last sync... Is it due to a stronger checking by syncevolution ? Is it a bug ? Is it an artifact produced by Korganizer/Akonadi when i upgraded from Ubuntu to Debian ?

Help ! ;)

Any successfull syncing, in any way, between KDE Kontact and N9?

Hi!

I am trying to follow the instructions of the current wiki to sync PI-data between KDE Kontact and a Nokia N9 device. I tried several times without success to sync via Bluetooh. Specifically, after installing syncevolution-kde

syncevolution --version
SyncEvolution 1.3.1
...
  1. syncevolution --print-databases returns all of my "sources" as seen in Kontact: kde-contacts as akonadi:?collection=SomeNumber and the same for kde-calendar, kde-tasks and kde-memos)

  2. syncevolution --configure keyring=KDE ... using the correct database=akonadi:?collection=SomeNumber description for each "source"

  3. syncevolution --print-items @default addressbook returns 397 different numbers (I guess, one for each contact stored in the addressbook).

So far so good. Afterwards, trying to sync (either via CLI or the Sync GUI) a dialog asking for a password appears. Where and how should this password be configured?

I also tried to extract a template by executing syncevo-phone-config --bt-address ##:##:##:##:##:## --advanced --create-config=Nokia_N9

I created a new (template) page for N9: https://syncevolution.org/wiki/nokia-n9-compatibility-template

ps- Did someone sync with N9 seamlessly?

troubles after upgrading kde

Today, after upgrading to KDE 4.9.3 (my distro is Kubuntu 12.04), syncevolution (package syncevolution-kde, version 1.3.1) stopped working. It hanged at every synchronization for hours without any progress. After several trials I decided to completely remove (purge) syncevolution and reinstall it from the repositories (same version, of course). This solved the issue. Now it works perfectly again. I sync two NOKIA phones (C6 and 6620) with my notebook (Kubuntu 12.04) and my desktop (Ubuntu 10.04).

Just wanted to let you know.

Please continue your great and indispensable work. Thank you from your users!

todo database not found (ownCloud via Akonadi)

Hey Patrick,

first of all I also would like to thank you for your great work here which fills a big gap in KDE PIM.

Recently I set up an ownCloud server on my NAS and connected it to my KDE via Akonadi's DAV groupware resources service. After trying to set up sync I was following the default procedures. Unfortunatley syncevolution --print-databases only comes up with the corresponding calendar and addressbook resources from my DAVgroupware but does not find something for todo (which should also be calendar). Consequently I get the following error message after the configuration instruction: [ERROR] error code from SyncEvolution fatal error (local, status 10500): todo: no database to synchronize

I am using syncevolution 1.3.2 and KDE 4.9.3 (Kubuntu 12.10).

Is this problem even regarding syncevolution or is it a implementation failure inside Akonadi? Nevertheless, would there be any workaround to also sync todos?

Would appreciate any answer. Thank you again for your great work.