___________________________________________ 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. HTML 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. HTML 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. HTML pilot-link repo HTML 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.patch?h=pilot-li ./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 will 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. DIR 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, HTML 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. HTML Events In Incorrect Timezone GIF Large Datebook 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. GIF Smaller Datebook 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. GIF Zire with Coffee GIF Zire Todo Links =========================================== DIR Back