C+ Dav Synergy Connector

From WebOS-Ports
Revision as of 15:13, 15 October 2014 by Elvispre (talk | contribs) (How-Too: One o in this kind of To.)
Jump to: navigation, search

The legacy synergy connectors were not open sourced, so we had to create our own. CalDav and CardDav are now the standards with the broadest server support for syncing calendars and contacts, so we created a synergy connector for them. An incomplete list of servers supporting caldav and carddav:

  • ownCloud
  • iCloud
  • Google
  • Yahoo
  • eGroupware
  • SoGo

Important notes

webOS 2.1.1 and 2.1.2

Only webOS 2.2.4 and webOS 3.0.5 (and LunesOS) are supported. If you have a Veer with 2.1.X, you can try to patch your sync framework to the version of 2.2.4. It worked for me on my Veer that currently is my daily driver. It might have side effects on other synergy connectors, though.

Sync fix for stable upload

Also, please triple check that you do not have the patch "System: Sync fix for stable upload" installed. It WILL run the connector in an endless loop eating up all your battery and your data volume quite fast!

First sync

The first sync can last very long, especially if the account has many entries on the server and the connection is not very stable. Please leave it for some time, best would be overnight on a good WiFi.

Contacts Patch

A patch to the webOS contacts framework is necessary, see below.

Enable upsync

  1. Remove your account!
  2. Really, remove all old c+dav accounts
  3. Make sure you have a backup of all your data
  4. Install the upsync enabled ipk file (have a look here Test IPKs)
  5. Recreate your account(s)

Status of the Software

Two-way sync of contacts and calendar events is implemented. Multiple calendars and addressbooks are supported and will be automatically discovered. The calendars will also show up in webOS, so you can define different colors for them.

A complex mechanism for auto discovery is implemented. Servers are probed for a lot of different options. That "should" make configuration a bit easier. Additionally there are multiple account templates for popular services like iCloud, Google or Yahoo where you do not have to worry about finding the right URL.

There is a C+Dav app that has some functionality, you can trigger a "slow" sync, a discovery and also manually trigger the synchronization. This is only for convenience.

Required Patch

webOS has some issues with vCard processing, I patched these for all currently used 2.x webOS versions. Please select the right patch from the dropbox folder and install it. If you don’t do that you’ll get strange characters in contact data fields.

The patch will conflict with improved vCard export patch from patch feed. You can safely uninstall it, it is included in the patch files in the Dropbox folder.

Current Patch Version: 2. To update the patch, you have to remove the old version. Luna restarts are not necessary.

How-To

Installation

Install the software fitting your device either using Preware, Quick Install or palm-install. I strongly advise first to test the downsync only version with new servers. Personally I only test on ownCloud, currently. All others are more or less untested.

Configuration

After installation go to the Accounts app on your device and create a new account. You'll see a bunch of new account templates starting with "C+DAV". Select one of those matching your service or the general one. If there is a special account for your server, please use it. It will make your life much easier.

In the next scene fill in all fields. For the generic one the URL is the most important one. If the server type is known and can be detected (for example the URL includes owncloud), then the software will take care of finding the right URL. If not, you need to supply an URL that "speaks" webdav (carddav and caldav rely on webdav), so we can use it to check the credentials and ask it for the users principal and home folders. For most servers it is not necessary to give a full calendar URL or something. Some examples:

If credentials are correct, you can create the account. webOS will now try to sync your data. Sometimes this fails on the initial sync. You can manually (re-)trigger a sync using the calendar or contacts app or the C+Dav app. If that brings up all your data, you are fine and can test more functions.

Account templates

The account templates exist for two reasons. On the one hand they make configuration easier on the other hand webOS does not allow multiple accounts of the same type with the same username, which can get a bit nasty if you use your e-mail address on multiple services. There are currently a number of account templates:

  • Google: This uses OAuth2.0 authorization (including support for two factor authorization), which is required for calendars now. Calendar & Contacts should work.
  • iCloud: Testing is hard, because it seems I can't create a free iCloud account. No known issues, though.
  • Yahoo: The servers are strange. Calendar & Contacts should be working.

Trouble shooting

If anything goes wrong, please contact me ( garfonso at mobo.info ) and maybe already attach a log.

Sending logs

Logging goes to the system log ( in /var/log/messages ). You can watch the log using Lumberjack. Please use a custom filter for "cdav". The nicest way is to select "Follow log" and then trigger a sync or discovery where I can see the errors (probably by creating events / contacts, if you have issues with upsync). Another possibility is to copy the file from the device and cut the relevant parts from it or use the command line like this:

   cat /var/log/messages | grep cdav > /media/internal/cdav.log

This will create a cdav.log file in your media partition which you can e-mail me.

Clean the device

If you want to clean your device, please follow these steps in the right order:

  1. Delete all c+dav accounts in the device manager
  2. Reboot the device
  3. Uninstall the c+dav connector (for example via Software manager)
  4. Use Impostah to clean the on device database, to do this, start Impostah, select databases, then on the upper field select "Persistent".
  5. From the second list first select org.webosports.cdav.account.config and then select "Delete all" from the app menu.
  6. Do the same for org.webosports.cdav.account.calendar and org.webosports.cdav.account.contacts.
  7. After that, do the same for the other org.webosports.cdav.* you find in the list
  8. Go to Impostah => Acitivities, select "Service persistent" in the first field
  9. Look for acitivites with "org.webosports.cdav" in their name, select them and remember their activityIds.
  10. For each of those ids run this command from the command line (replace X with the activityId!):
   luna-send -n 1 -a org.webosports.cdav.service palm://com.palm.activitymanager/cancel '{"activityId": X}'

These steps are only necessary if something goes horribly wrong and make sure you have a clean start without visiting the doctor. Otherwise you might have phantom events/contacts and activities remaining in the database. Usually all of this should happen automatically. But there might be bugs in those procedures.

Links