Posted by Brian @ 11:23 pm on March 16th 2008

Synchronizing a palm Tungsten T3 to Google Calendar, Swiftdove/Lightning and Kontact under Linux

(updated and somewhat simplified 6/8/2008)
I have finally managed to synchronize my palm Tungsten T3 to Google Calendar and Swiftdove (Thunderbird optimized for 64 bit + the Lightning calendar) as well as Kontact (aka KDE PIM or KOrganizer). I now have full read/write sync with all apps (with a few small quirks). This method should also work with Thunderbird/Lightning and presumably Sunbird but I haven’t tested that.

There are three quirks that I’m aware of.

  • The categories from my palm do not work anymore. Something about the sync process erases the category (but not the event) from the palm. That’s something I can live with.
  • Existing repeating appointments don’t seem to display properly on Google Calendar or Swiftdove, but new repeating entries do. I’ve got about a dozen repeating appointments, so it wasn’t a big deal to delete and re-do them.
  • It takes time – several minutes or more – after a sync for changes to show up on Google after a palm sync. I haven’t fiddled much with GCALDaemon – there is probably a setting that I can change for that, but I’m okay with that for now.
  • Things I tried that didn’t work
    I’ve been trying on and off to synchronize my palm with various PIMs under Linux since 2001 with little success. Backing up through Kpilot or pilot-xfer has always worked fine, but getting real sync has been pretty much impossible until now. It may not be the holy grail, it is one of the last pieces to the perfect desktop puzzle.

    Initially I tried to get OpenSync to work. I failed with the command line tool, with Kitchensync (best name for sync software evar) and with Multisync090. The KDE PIM/Google Calendar sync failed every time, and I never could get my palm to sync. While that project looks quite promising for now isn’t ready for prime time, as they fully acknowledge on their site.

    With a bit of effort, GCALDaemon allowed me to sync between Kontact and Google Calendar, as well as Swiftdove and Google Calendar. And since I was able to sync my Palm with Kpilot (and therefore Kontact) I figured everything would be fine. Alas, that didn’t work – Kontact would display both calendars but would not pass the palm calendar to Google, and vice-versa. I was about to give up when I tried one last trick – I noticed that Kpilot allowed me to specify the ical file to link to, and that GCALDaemon uses a google.ics to sync up with Google Calendar.

    So I told Kpilot to synchronize with the GCALDaemon ics file instead of the Kontact ics and played some tricks. And it worked – with a little coaxing!

    Here’s a guide for getting the tricky parts working under Ubuntu 7.10 (Gutsy) 64 bit. I followed this page of the GCALDaemon guide, then this page through step 5 of the same guide to set up file sync. Now on this page of the Terminally Incoherent guide for Kontact, continue from where it says “Now open Kontact” and once you get to where you specify the filename, use /usr/local/sbin/GCALDaemon/google.ics instead of the location Terminally Incoherent specifies. And since all configuration files should be stored in /etc, I moved /usr/local/sbin/GCALDaemon/conf/gcal-daemon.cfg to /etc and made a symbolic link to the original location. I also set to 5 minutes in the cfg file.

    By the way to get this all working you’ll need Kpilot, pilot-link and Sun’s Java. The default Java that ships with Ubuntu 7.10 will not work with GCALDaemon. You’ll also need GCALDaemon and configure Kontact to sync with GCALDaemon – install this software and then use the tutorials I liked to above.

    sudo apt-get install kpilot pilot-link sun-java6-jre

    Once you have GCALDaemon working with Kontact and Google Calendar, you can begin the next steps. Once you’ve done the following steps ones all you need to do is sync your palm normally.

    1) Make a backup of your entire palm (you may need to replace that /dev/ttyUSB1 with something else):

    pilot-xfer -p /dev/ttyUSB1 -b /home/yourname/somedirectory

    Having a backup is crucial, so don’t skip this. You were warned.

    2) Open Kpilot, go to Settings -> Configure Kpilot and tell it to sync to the same google.ics that GCALDaemon is using. Again, mine is at /usr/local/sbin/GCALDaemon/google.ics. Under the Conflicts tab choose Handheld overrides.

    Kpilot configuration screenshot

    3) Synchronize your palm and wait until GCALDaemon transfers all of your appointments to Google Calendar. I had thousands of appointments so I gave it an hour.

    4) All of the calendar entries in your palm may have vanished. Don’t panic. Sync again – all of the entries should be there. If not, restore the calendar to the palm using pilot-xfer. You don’t have to start over, just restore the calendar. Two way sync should still work with no duplicates.

    That’s it.


    1. I got it to work on one of my computers. I followed the same procedures as state. There were and still may be some sync issues to test but does download from google to contact just fine. It will also write to google but when clicking on the uploaded event, it just hangs. You see the event but that’s it.

      Comment by Guy — September 15, 2009 @ 9:28 am

    2. Wanted to add that that repeating events will download from Google but won’t upload. Will only do the single event. The events that do upload have a question mark in the title of the event and the event isn’t editable in Google and after the upload from Kontact, it warns that it was created from someplace else and thus will get out of sync if you try and edit it. No big deal for now.

      Comment by Guy — September 16, 2009 @ 9:40 am

    RSS feed for comments on this post. TrackBack URI

    Leave a comment

    You must be logged in to post a comment.