(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.
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.
There are three quirks that I’m aware of.
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 file.polling.google 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.
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.