Coldsync (https://www.coldsync.org/) by Andrew Arensburger is one of the options for syncing Palm devices without using the official Palm Desktop. It is headless, unlike the graphical Palm Desktop and J-Pilot. Unlike pilot-link, it actually handles the whole sync process.
Here are my patched versions of Coldsync.
Version 3.0-pre4 is very hard to build on Mac. My release, version 3.0.1, builds easily. Macports users can use the following Portfile:
PortSystem 1.0
name coldsync
version 3.0.1
license Artistic-1
maintainers @nkorth
categories palm
description Tool for synchronizing Palm OS devices with Unix workstations
long_description Tool for synchronizing Palm OS devices with Unix workstations
platforms darwin
homepage https://www.coldsync.org
master_sites https://www.nkorth.com/palm/coldsync/
checksums rmd160 68785217968001a5e7fc6c5921e8dde5e15f421d \
sha256 325ed708c02f4a4e4928eb8016c8eb2b8c7e9b5fd3c0c4e5f2705b0d8ec5dcee \
size 717669
depends_build bin:bison:bison \
bin:flex:flex
depends_lib port:perl5 \
port:libusb
use_parallel_build no
On Void Linux, version 3.0-pre4 builds easily enough. Here’s the Void package template I wrote, which includes several patches (explained below.) I didn’t actually submit the package to Void because it’s so niche that I didn’t want to waste the maintainers’ time.
destdir.diff
: adapt the Makefile to Void’s packaging systemno-extra-infofiles.diff
: remove apparently-unused section of doc Makefile
which was causing build to failperl_version.diff
: a small change to address a deprecated Perl featuretexinfo_fix.diff
: fix a typo that caused doc build to failso_reuseaddr.diff
: a functional change to fix something that annoyed me
(see comment in diff)Refer to /etc/coldsync/sample.coldsync.rc
.
The following .coldsyncrc
works for netsync (eg. with
Cloudpilot:
listen net {
}
# Cloudpilot on Jelly 2
pda {
snum: "00TAP7W2A270-H";
username: "Nathan";
userid: 1000;
}
When you run Coldsync, it waits forever for a Hotsync connection, performs the sync, and quits. This means you can use a typical init script with respawning if you want it to always be ready to sync. (If, for some reason, you need to netsync multiple Palms at the same time, I suppose you’ll need to use xinetd.)
In addition to the standard “talk directly to the Palm and work with one record
at a time” sync mechanism, Coldsync also offers “fetch” and “dump” modes. These
modes allow your conduit to edit/read the backed-up .pdb
files and let
Coldsync do the work of syncing those files with the Palm. When I saw this, I
thought “this sounds much easier to use/understand than the standard sync
mechanism!” However, it turns out the fetch/dump mechanism is only suitable for
very simple conduits. For example, in a dump conduit there’s no way to handle
archived records, and if you try replacing “sync” with “fetch+dump” you don’t
get any control over what happens when both Palm and PC have modified a record.
Before I realized that I was on the wrong track, I started writing Python replacements for some of the Perl scripts involved in Coldsync.
python-palm-0.1.tar.gz (unfinished!)
This module, likely the most useful part, is supposed to replace the Perl Palm
library. It reads and writes .pdb
files, and currently supports MemoDB and
ToDoDB. It’s still missing some important things like append_record
.
This has already been done in Python by someone else, but thanks to my use of Construct my code is both easier to read and much more compact than theirs.
python-coldsync-0.1.tar.gz (unfinished!)
I also implemented part of the Perl Coldsync library. I didn’t actually write any bindings exactly, I just implemented a wrapper for handling the conduit protocol (the easiest part.) This archive also contains my unfinished attempts at writing memo and todo conduits. I will be rewriting these, either in Perl or using something completely different such as pilot-link.