| ___________________________________________
title: Calendar Syncing with palm-calendar-sync2
date: 2024-10-11
___________________________________________
Attempts at Syncing a Calendar
===========================================
My first attempt at setting up my Calendar on the Zire was simple
enough, as both J-Pilot and the Zire itself make it easy to add
entries to the Datebook. I wanted more though, such as syncing my
Personal and Work calendar from Fastmail, which would contain full
daily schedules and allow me to use the Zire and potentially
replace my iPhone as my goto calendar.
My next attempt was trying to use older Linux distros to sync my
calendar with Evolution or another application that spoke CalDAV,
and then use a PIM conduit to sync to the Zire. As I discussed in a
previous post though, using an older Linux distro on a VM had it's
own set of problems.
While doing research into other ways of syncing a Calendar to
the Datebook, I came up with a general idea of how I could
accomplish it.
1. Use a cli tool that understood CalDAV or export to ics file
2. Import the .ics file and sync to the Zire
3. Setup some sort of script/automation to do this to use on a
daily basis
I came across a few tools that could these, but none really hit the
sweet spot of features and ease-of-use Finally I came across a tool
called palm-calendar-sync2 that could do everything and is actively
maintained which was promising since it didn't require an older
distro or
dependencies.
|
| palm-calendar-sync2 |
|
Building palm-calendar-sync2
===========================================
Setting up palm-calendar-sync2 is relatively easy, as it ships with
an Apptainer image (sort of like a Docker image for an app) that is
self-contained and doesn't require dependency hunting.
|
| apptainer |
|
While this did make things easier, I wanted to also build from
source in case I wanted to make any code updates (foreshadowing).
Building palm-calendar-sync2 unfortunately was not as
straightforward as I was expecting, as it requires pilot-link
libraries and includes which are not present in the Debian packages
that J-Pilot ships with. It also requires a newer version of
libconfig that Debian 12 does not ship with, and both of these must
also be built from source.
|
| pilot-link repo |
| libconfig |
|
It took a few hours to get everything right, but here's the steps
to build palm-calendar-sync2 from source on a Debian 12 system.
```
#Install Dependencies on Debian 12
sudo apt-get install build-essential git \
libcurl4-openssl-dev libical-dev libusb-dev autoconf \
libtool libtool-bin libpopt-dev bison flex autotools-dev \
automake
#Remove conflicting libconfig-dev package
sudo apt-get remove libconfig-dev
#Build pilot-link
git clone https://github.com/desrod/pilot-link.git
cd pilot-link
#Patch configure.ac from
#https://aur.archlinux.org/cgit/aur.git/plain/configure-checks.pat
./autogen.sh
make && sudo make install
#Build libconfig
git clone https://github.com/hyperrealm/libconfig.git
cd libconfig
autoreconf
make && sudo make install
#Reload library path and continue building palm-calendar-sync2
sudo ldconfig
```
Copy the resulting sync-calendar2 binary into your local path.
Using palm-calendar-sync2
===========================================
Running sync-calendar2 is relatively straight forward,
using the datebook.cfg config. I added my Fastmail "secret" URLs
for my calendars, updated the timezone to America/Los_Angeles
and set FROMYEAR=2024 to avoid adding older appointments to the
datebook.
Running sync-calendar2 in the same directory as this datebook.cfg w
prompt to wait for the Palm hotsync to start, and once kicked off
will sync the from CalDAV to the datebook
It works extremely well, and does what it says it will do, however
there are a few issues.
Issues with palm-calendar-sync2
===========================================
As I eagerly looked over my calendar on the Zire after it's first
sync, I noticed a few strange things,
- Appointments were 7 hours ahead of their scheduled time
- "phantom" appointments for events long removed
- Recurring daily events were for the entire week
- Calendar size was large on the Zire
- Installing apps no longer worked
- J-Pilot no longer worked
The last issue took me a day to figure out, and I wrote about it
more in a post dedicated to breaking hotsync.
|
| I broke Hotsync |
|
For the other issues, I played around with some timezone settings,
but nothing worked. Finally after convinced it must be a bug, I
opened an issue on Github,
|
| Events In Incorrect Timezone |
|
While there, I also opened a issue for some quality-of-life
suggestions like limiting the number of days to sync (instead of
just by year) and having an option to not sync Notes, just the
event title, date and times. This helps in limiting the
number of events and size of the calendar, since my work calendar
was taking up 1200K out of the available 2000K.
|
| Events In Incorrect Timezone |
| |
|
|
|
Issues Resolved
===========================================
Within an hour the developer had responded to the issues, not only
acknowledging them but fixing them along with some requests for
more information about a segfault that happened after the sync.
After doing a git pull and re-building the source with the fixes,
my calendar sync'd over with all the right timezones and a much
smaller footprint since I limited the days to 30 and didn't include
notes.
|
|
|
|
Out and About
===========================================
With a fully working calendar and plenty of space on the Zire, it
was now time to take it out to use in the real world. I had some
errands to run in the morning, and used it to review my daily
agenda and todo list while at a local coffee shop.
|
|
|
|
|
|
Links
===========================================
|
| Back |