Syncing your N900 with ownCloud – an update

Back in January I wrote a post about syncing your Nokia N900 with ownCloud (btw, please read that first, if you have any questions/problems using the instructions here). Since I got a lot of very good advice and information in the comments on it, I thought I would post an update with a simpler and more correct configuration. Karel, who also commented on the post, was kind enough to send me his setup. Please refer to the original post for info about connecting to your device with SSH etc. For reference I use syncevolution version 1.2.2-1 from the extras-devel repository and a snapshot of ownCloud from git master, but it should also work fine with a recent 4.0.x release. As in the original post owncloud refers to the URL to the root of your onCloud installation e.g. http://example.com/owncloud, user is your login and password is your password. My default calendar is called calendar and my address book is called default. First create a main configuration for ownCloud:
syncevolution --configure \
	--template webdav \
	username=user \
	password=password \
	target-config@owncloud
Then configure remote URLs and link them to the owncloud config we just created. First the calendar:
syncevolution --configure \
	database=owncloud/remote.php/caldav/calendars/user/calendar/ \
	backend=caldav \
	target-config@owncloud calendar
And the address book:
syncevolution --configure \
	database=owncloud/remote.php/carddav/addressbooks/user/default/ \
	backend=carddav \
	target-config@owncloud contacts
I think the next command creates the entry which will be available in the UI pointing to the owncloud config we created with the first command, and yes, username and password are supposed to be empty:
syncevolution --configure \
	--template SyncEvolution_Client \
	sync=none \
	syncURL=local://@owncloud \
	username= \
	password= \
	owncloud
Now create the configuration for the local storage. The calendar:
syncevolution --configure \
	sync=two-way \
	backend=calendar \
	database=N900 \
	owncloud calendar
The N900 database is the standard storage. You can see the available ones by running syncevolution from the command line, and you can create new local calendars from the Calendar app and link them to e.g. your Work and Private calendars, just remember that the case matters, so the names must be entered exactly as they are printed by syncevolution. And the address book:
syncevolution --configure \
	sync=two-way \
	backend=contacts \
	database=file:///home/user/.osso-abook/db \
	owncloud contacts
Now everything should be OK, but let us make some quick tests.
syncevolution --print-items target-config@owncloud calendar
This should print the URI part and and the summary of all events.
syncevolution --print-items target-config@owncloud contacts
This should just show the URI part of all contacts. If everything worked out OK it's time to do the actual syncing. If you already have events and/or contacts on your device you want to keep you should do an initial slow sync:
syncevolution --sync slow owncloud
Some times you need to do it several times for it to succeed, but once you don't get any more error you can run a normal incrementel sync just by running
syncevolution owncloud
I chose to update everything from the server and ran
syncevolution --sync refresh-from-server owncloud calendar
syncevolution --sync refresh-from-server owncloud contacts
Note: Read this comment first!

Now you can also sync using the syncevolution-frontend app. Just click on the icon Syncevolution and you will see owncloud listed, and when you click on it you will get to the sync options:

Syncevolution overview

Syncevolution overview

Syncevolution options

Syncevolution options



Unfortunately the latest stable release still doesn't support VTODO or VJOURNAL for Notes and Tasks, but according to the information on the pre-release page for version 1.3, it is added there.

If you have any problems when configuring, please read the original post and any comments there first.

flattr this!

75 Comments

  1. 1
    Wolfgang Romey says:

    Unfortunately it does not work for me. When I try to create the main configuration, I get the Error "no configuration for `webdav`available.

    Wolfgang

  2. 2
    Wolfgang Romey says:

    After I reinstalled syncevolution everything works now with calendar and contacts.

    Thanx very much.

    Wolfgang

  3. 3
    ali c says:

    This now rocks with OwnCloud 4.0.5 thanx a lot for work out the config.
    Dreams come true with OwnCloud on Debian!

  4. 4
    zimba12 says:

    When I do the testing command: syncevolution --print-items target-config@owncloud calendar

    I get the following error:

    [ERROR] REPORT 'meta data': Neon error code 1, no HTTP status: Server certificate verification failed: issuer is not trusted

    I am using owncube, which uses https, that might be the reason. Do you know of a workaround for this?

  5. 9
    Gunni says:

    I get an error at "syncevolution --sync slow owncloud" and dont know how to proceed. I get the error even when i run the command 5 times or more. Maybe someone knows:

    First ERROR encountered: transport problem: REPORT 'meta data': status: redirected to http://myserver/owncloud/index.php

    My owncloud version is trunk.

  6. 22
    tohojo says:

    I've setup syncing on my N9 as described here and have it working for the calendar. However, when I try to sync the contacts I get dbus timeout errors. It managed to sync the first several contacts, but then gave up. I'm assuming it is because I have too many contacts (~400) and the sync is taking too long. Is there any way to change the timeout value to fix this? :)

    • 23
      tanghus says:

      No idea, sorry. Better ask on a syncevolution mailing list or in an Maego/Meego forum.

      Did you use the configuration as described above? I had to change it slightly (omitting the local database definitions) for the N9(50). I also had to dig around to find a syncevolution compiled with DAV support.

      • 24
        tohojo says:

        Yes, I followed the setup, but changed the databases slightly (found the names using syncevolution --print-databases); and it does sync the first ~100 contacts, but then stops with the timeout. I use the binaries from http://people.debian.org/~ovek/harmattan/ which have dav support (and can be setup as an apt source, so easy install :)).

        I suppose I'll try the mailing list. Thanks :)

        • 25
          tanghus says:

          I just noticed 10 minutes ago that Ove had released a version compiled with DAV support. I wrote to him some weeks ago to ask if it was possible, but he kinda brushed me off saying it was "not just flipping a switch". When I then found a thread about a guy who had made it work, I of course mailed him the link - apparently it was not as hard ;)

          I hope you find an answer to your problems.

          • 26
            tohojo says:

            Yes, I did read those posts, and was wondering what all the fuss was about. Dav support seemed to just work. :P

            Anyway, posting to the mailing list revealed that the timeout turned out to occur because syncevolution did not set a timeout value properly, so it should be fixed for the next version. Yay!

            Once again thanks for the guide, and subsequent help! :)

          • 27
            ovek says:

            Hey! It took me two weeks of my summer holiday to add DAV support and debug the problems. Unlike that other guy, I took the time to do it properly, making sure everything works (including some autoconfiguration stuff that wouldn't have worked with that guy's package), and with a full source package that can even be autobuilt without needing to manually compile dependencies, thus of a quality that it could be hosted on official software repositories. I'd appreciate not having to hear "apparently it was not as hard"...

          • 28
            tanghus says:

            He, I had a feeling that would come back to bite me ;)
            Well, I maybe sensitive when it comes to communication, but consider the following scenario:

            - You write a (maybe overly) polite mail asking if it would be possible to make a certain feature available in a software package.
            - You receive a reply that could be from lkml when Linus is having PMS.
            - You send a reply apologizing for your n00bness to which you receive no reply.

            At that point I still have deep respect for the hard work and the good result, but I'm not that concerned if your feelings are a bit hurt.

            Ovek, please contact me if you want me to remove these two comments. I will of course also moderate my previous comment that ticked you off if you would want that.

          • 29
            ovek says:

            - I've had other people demanding this stuff based on even worse misinformation, as if I, with 20 years of international software engineering experience (including being a Debian Developer), was somehow too stupid to realize that I needed to enable a simple configure option (though it had been enabled in my Fremantle build for years), and that in the year I've build Harmattan packages, somehow nobody else had told me about this magical configure option I clearly missed for some reason.

            Although I was low on patience at this point, I still replied to you and explained the situation and the misunderstandings fairly calmly and comprehensively, because you seemed to deserve that much. I can't help it if you didn't understand it that way.

            In reality, without a proper build-dependency chain, I couldn't do much about this before I could get enough free time. And as a Debian Developer, I don't churn out half-baked .debs, I do things properly. Anyone should be able to take my source packages and build the same binaries, and be sure of what they were built from. That's what Open Source (and the Debian Free Software Guidelines) is all about.

            - You weren't asking for any further replies. You had no other questions, it all sounded as "ok, thanks, later" to me.

            And no, I see no need to remove any comments. I'm not all that upset, it just feels good to set the record straight, blow off some steam, and maybe keep people on their toes a bit.

  7. 30
    Tarnatos says:

    Hello,

    first I want to say THX for your work!

    But for me it's not possible to sync my contacts using syncevolution.

    I tried your config posted in jan/2012 and this one and everytime I get this error:

    [INFO] addressbook: looking for databases...
    Segmentation fault

    Here's my config:
    - Owncloud 4.0.7 running on Windows Apache webserver
    - Nokia N900 PR1.3 (u2d)

    Any suggestions?

    Thx in advance.
    -Tarnatos

  8. 31
    Tarnatos says:

    HA!!!

    After 3 days of trying and a full vanilla reflash of my N900 I HAVE IT! :) The fault was that I did the configuration as "SU"!

    So if you get the "segmentation fault" error at the contacts part stop and turn off X-term. Delete the /home/user/.cache/syncevolution AND the /home/user/.config/syncevolution folder! Open X-term again an do the config above as NORMAL user. Than everything works fine!

  9. 33
    Ash says:

    Doesn't look like SyncEvolution will be supporting Tasks sync on N900 in the near future:

    See https://bugs.freedesktop.org/show_bug.cgi?id=52666

  10. 35
    t-ri says:

    I also have a segmentation fault when i do the slow sync. Every time i run the slow sync it proceeds further. You stated that …

    > Some times you need to do it several times for it to succeed

    Did you had the same issues?

  11. 37
    Lamu says:

    Thank you very much for this Howto.
    It works great.

    But after I synced my contacts and the first calendar, I tried to sync also the other ones.

    To sync another calendar it is neccessary to change the following part of code:
    ...database=N900... -> ...database=PRIVATE... or what ever the database name would be (to see the database names type "syncevolution --print-databases")

    and the according owncloud database name and the path here:
    database=owncloud/remote.php/caldav/calendars/user/PRIVATE/

    Now I tried to create several configurations for each calendar. But this will not work, because the entry for the database is at the
    .config/syncevolution/default/sources/calendar/config.ini
    and this file is active for all configurations.

    Is there any possibility to overwrite this entry for each configuration?

    I tried to move this entry, but I dont understand the way syncevolution works and I couldnt find some documentation for caldav and syncevolution, where I can see which config file will be for what.

    So until now I am not able to get this work with several configurations.

    Do you have any ideas?

    Thank you,
    Lamu

    • 38
      tanghus says:

      Hi Lamu

      You should be able to setup syncevolution with multiple calendars running a setup like this multi-calendar example.

      You will of course need to modify it to your own needs and the run rm -rf ~/.config/syncevolution/* to remove the old configuration first. I quickly found out that was the easiest thing to do instead of messing with the config files manually.

  12. 39
    Lamu says:

    Oh WOW!

    I can´t believe it really works!
    Thank you so much!!!
    After three days trying around you fixed my problem.

    Thank you,
    Lamu

  13. 41
    Trolli Schmittlauch says:

    I had to adjust URLs for use with owncloud4.5:

    syncevolution --configure \
    database=http://owncloud.orlives.de/remote.php/caldav/calendars/spiollinux/defaultcalendar/ \
    backend=caldav \
    target-config@owncloud calendar

    syncevolution --configure \
    database=http://owncloud.orlives.de/remote.php/carddav/ \
    backend=carddav \
    target-config@owncloud contacts

    (I took the URLs from the web interface)

    Calendar works fine, but Contacts causes: First ERROR encountered: error code from SyncEvolution access denied (remote, status 403): PUT: bad HTTP status:

  14. 43
    Jost says:

    Hey there! Great Tutorial! Thanks for taking the time to research it.

    syncevolution v1.3.1 is officially in the repos, you stated earlier it might add functionality for vtodo and vjournal.

    As you've obviously put a lot more time into this than I did so far, are you by any chance in the mood to update this great HowTo yet again to include ToDo and Notes?
    I've just set up my server a few days ago, It would probably take me weeks to figure out what I was actually doing if anything went wrong...

    Another thing: you use "owncloud" as context name in your examples. is that just an arbitrary string which for convenience you chose to be identical to the server's name, or does it actually trigger additional settings because it is recognized by syncevolution? In short: can I change it to say "target-config@MySuperFancySyncServer" or will that cause trouble? I know the "target-config" part is mandatory for local sync configs...

    Greetings,

    Jost

    • 44
      tanghus says:

      I will put it on my ToDo list (no pun intended), but being quite busy atm I don't know when I can test it.

      The 'owncloud' in 'target-config@owncloud' is as you suggest just an arbitrary string used to identify the configuration. I just thought it would be a memorizable name ;) (my spell checker says I've just invented a new word?)

      • 45
        Jost says:

        Thanks, that would be great. Although I just saw a bug report through google stating that support for it is implemented in the Harmatten release (N9) only, not in the fremantle (N900) release, since no one bothered to do the extra work for such an old device, so this might be a show stopper.

        Speaking of show stoppers: I just repeatedly ran into a problem. Syncing the first few dozen events/contacts works fine, but when syncing a lot of data (6 calendars + address book) after a while syncevolution exits prematurely with the ever so popular segmentation fault. I have a feeling it's got to do with character encoding (some german Umlauts don't display correctly after sync, others do).

        The point it crashes differs from attempt to attempt (with identical data), but I haven't had a single complete sync run through cleanly, yet! How is your experience with stability?

        • 46
          tanghus says:

          I've heard it from others, but never experienced it myself. I haven't had problems with special chars either.
          Mostly I sync the different configs separately as in

          syncevolution owncloud calendar 
          # calendar is also just an identification string

          You could try that to at least figure out which config it fails with.

  15. 47
    Rand0m says:

    I just installed a fresh copy of OwnCloud and had to use these URIs:

    Calendar:
    database=owncloud/remote.php/caldav/calendars/user/defaultcalendar/
    Contacts:
    database=owncloud/remote.php/carddav/addressbooks/user/contacts

    HTH, HAND

  16. 49
    leo says:

    I am using the git repo of owncloud and ran into problems with carddav sync and the latest supplied SabreDAV implementation. SabreDAV rejected all put commands with error 400 and the message: 'Every vcard must have an UID'.
    So i had to disable the following lines in /var/www/owncloud/3rdparty/Sabre/CardDAV/Plugin.php:

    if (!isset($vobj->UID)) {
    throw new Sabre_DAV_Exception_BadRequest('Every vcard must have an UID.');
    }

    Now everything seems to work fine with my N900 and with evolution on my desktop.

    Greetings,

    Leo

  17. 52
    h says:

    I'm getting a strange error using owncloud 4.0.9:
    First ERROR encountered: unsupported media type or format (local, status 10415)

    See whole process here:
    http://pastie.org/5552144

    Any ideas what to check/change,..?

  18. 56
    DerYo says:

    "I chose to update everything from the server and ran
    syncevolution --sync refresh-from-server owncloud calendar
    syncevolution --sync refresh-from-server owncloud contacts"

    Be careful about how the word server is defined. syncevolution --help prints:

    " **Warning:** in local sync (`CalDAV and CardDAV`_/ActiveSync, ...) and
    direct sync with a phone, the sync is started by the side which acts
    as server. Therefore the ``from-server`` variants
    (``one-way-from-server``, ``refresh-from-server``) transfer data
    from the sync config into the target config (see "Synchronization
    beyond SyncML" below) resp. to a phone. The ``from-client`` variants
    transfer in the other direction, even if the target config happens
    to access data on a remote server."

    DerYo-->

    • 57
      tanghus says:

      Yeah, I think it's rather confusing and unintuitive. Now that you mention it I think I managed to wipe the data in my ownCloud instance once in the process :-P Always have backups! ;)

  19. 58
    Tempura says:

    Thanks for this tutorial - it sure saved me a lot of time! :)

    I got it up and running using SyncEvolution 1.3 / ownCloud 4.5.6 on my N900 with community SSU.

    I just see one issue here: 'all-day-events' are not synchronised properly (after the first slow sync from the N900 to ownCloud).

    In ownCloud they show up from 0:00 start date date until 0:00 end date - instead of being 'all-day-events'. It doesn't matter if they span one ore more days.

    Has anybody of you seen this as well?

    Creating an 'all-day-event' in ownCloud and synchronising it to the phone works correctly though.

    Greetings,
    Tempura

    • 59
      DerYo says:

      I experienced the same issue: All-day events show up as events going from 0:00 that day to 0:00 the next day. That is kind of "all day" though ;)

      BTW: Where did you get SyncEvolution 1.3 for N900? Mine prints (syncevolution --version) 1.2.2+20120123+...

      • 60
        Tempura says:

        I got the version from http://people.debian.org/~ovek/maemo/ - there is also a README on how to add the repository to apt (thanks ovek!).

        After digging around the problem seems to be on how DTSTART and DTEND are defined.

        ownCloud expects the format:

        DTEND;VALUE=DATE:20130102
        DTSTART;VALUE=DATE:20130101

        while the N900 (SyncEvolution) seems (not 100% sure) to send:

        DTSTART:20130101T000000
        DTEND:20130102T000000

        So the DATE tag is not detected. This is checked for in ownCloud owncloud/apps/calendar/lib/app.php, line 318:
        $allday = ($vevent->DTSTART->getDateType() == Sabre_VObject_Element_DateTime::DATE)?true:false;

        It seems that there is more than one way to indicate that an event is an 'all-day-event' and SyncEvolution's way is also valid - but it will fail with ownCloud.

        Maybe there is some way to fix this using the scripting facility of SyncEvolution?

        • 61
          Tempura says:

          I have written a short test program to verify what SyncEvolution gets from the maemo-backend.

          Unfortunately it seems, that the Maemo calendar-backend is bugged. It does not matter if one requests ICAL or VCAL data, the date field is always like in VCAL - without the 'VALUE=DATE...' entry. Also in both cases the version is reported as '1.0' - although it should be '2.0' for ICAL...

          So for the time being there is no way to correctly synchronise 'all-day-events' with ownCloud - please correct me if I am wrong.

          Greetings,
          Tempura

  20. 63
    daniel g. siegel says:

    thanks a lot for the awesome guide!

    on my n900 however i had issues finding the local addressbook. setting the backend to "addressbook" and removing the local uri to the addressbook solved the problem. i.e. something like this should work (i did it manually in /home/user/.config/syncevolution/default/sources/contacts/config.ini)

    syncevolution --configure \
    sync=two-way \
    backend=addressbook \
    owncloud contacts

  21. 66
    Martin Wozenilek says:

    Your first approach does work for me much better. German Umlaut get's damaged with this second solution ...

  22. 67
    Ray-Ven says:

    I red this great tutorial and am very thankfull for it, but it won't work with https settings :-(
    can someone help me out please? It just won't accept the certifcate i think "no http status: ssl handshake failed". I've left port 80 closed on sererside, because I'm only using https.

    Here's my config: Please help me out:

    #!/bin/bash
    rm -rf ~/.config/syncevolution/

    syncevolution --configure \
    --template webdav \
    username=USERNAME \
    password=MYPASS \
    target-config@owncloud

    syncevolution --configure \
    consumerReady=0 \
    SSLVerifyServer=0 \
    SSLVerifyHost=0 \
    target-config@owncloud

    syncevolution --configure \
    database=https://SERVERADRESS:443/owncloud/remote.php/caldav/calendars/USERNAME/calendar/ \
    backend=caldav \
    target-config@owncloud Calendar

    syncevolution --configure \
    database=https://SERVERADRESS:443/owncloud/remote.php/carddav/addressbooks/USERNAME/default/ \
    backend=carddav \
    target-config@owncloud Contacts

    syncevolution --configure \
    --template SyncEvolution_Client \
    sync=none \
    syncURL=local://@owncloud \
    username= \
    password= \
    owncloud

    syncevolution --configure \
    sync=two-way \
    backend=Calendar \
    database=cal_ti_calendar_private \
    owncloud Calendar

    syncevolution --configure \
    sync=two-way \
    backend=Contacts \
    database=file:///home/user/.osso-abook/db \
    owncloud Contacts

    syncevolution --print-items target-config@owncloud Calendar

  23. 73
    J24 says:

    It works with owncloud 5.0, thanks! There seems to be some clash in timezone settings, tho. Some items in owncloud calendar view show wrong time. The time shift is not even consistent, but seems to vary from -1h to +3h. When opened for editing, the correct time is shown. The server, the n900 and the owncloud software are all set to the same timezone (EEST).

  24. 75
    Peer Oliver Schmidt says:

    I have created a small script combining your commands, as I am too stupid to type targets etc correct. Maybe it is of help for you or anyone else:

    
    #!/bin/bash
    # Specify your username, password, target name for sync ui, as well
    # as the URLs to access your calendar and contacts on your owncloud 
    # server.
    
    user=myuser
    pass=mysecret
    target=owncloud
    calurl=https://owncloud.example.com/remote.php/caldav/calendars/pos/owncloud900
    cardurl=https://owncloud.example.com/remote.php/carddav/addressbooks/pos/owncloud-n900
    
    # Create the initial configuration file for the server
    syncevolution --configure --template webdav username=$user password=$pass SSLVerifyServer=0 target-config@$target
    
    # Create the initial configuration file for the calendar on the server
    syncevolution --configure database=$calurl backend=caldav target-config@$target calendar
    
    # Create the initial configuration file for the contacts on the server
    syncevolution --configure database=$cardurl backend=carddav target-config@$target contacts
    
    # Create the entry for syncevolution-frontend - NOTE: NO username and password here.
    syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@$target username= password= $target
    
    # Configure the relation between the local calendar and the remote calendar
    syncevolution --configure sync=two-way backend=calendar database=N900 $target calendar
    
    # Configure the relation between the local addressbook and the remote contacts
    syncevolution --configure sync=two-way backend=contacts database=file:///home/user/.osso-abook/db $target contacts
    
    echo The following commands should show the remote content.
    echo syncevolution --print-items target-config@$target calendar
    echo syncevolution --print-items target-config@$target contacts
    echo.
    echo The following command should be used initially to sync existing data
    echo syncevolution --sync slow $target
    echo.
    echo The following command should be used for regular syncs
    echo syncevolution $target
    echo.