Skip to content

Neonymbus/palm-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Palm Pilot Sync

A desktop application for syncing a Palm OS handheld with a modern Linux PC over USB, using pilot-link's HotSync protocol. Contacts, calendar events, memos, and tasks are read from the device, stored locally in SQLite, and merged back with PC-priority conflict resolution.

Built with Python 3 and PyQt5.


Features

  • 📇 Contacts — read and edit the Palm address book
  • 📅 Calendar — view and manage datebook events
  • 📝 Memos — sync memo pad entries
  • Tasks — sync the to-do list
  • 🔄 HotSync over USB — one-button sync via pilot-link
  • 💾 Local SQLite store with PC-priority merge on conflicts

Installation

Recommended: Debian package (Ubuntu / Debian / Mint)

Download the latest palm-sync_*.deb from the Releases page, then:

sudo apt install ./palm-sync_1.0_all.deb

This installs the app (it appears in your application menu as Palm Pilot Sync), sets up the udev rules, loads the visor kernel module, and adds you to the dialout group. Log out and back in afterward for the group change to take effect.

One extra step: pilot-link

HotSync needs pilot-xfer from pilot-link, which is no longer packaged for modern Ubuntu/Debian. If it isn't already installed, the package will tell you to run:

sudo palm-sync-setup-pilotlink

This builds and installs pilot-link automatically (from apt if available, otherwise from source).

Alternative: run from source

git clone https://github.com/neonymbus/palm-sync.git
cd palm-sync
./packaging/setup.sh      # installs dependencies, udev rules, pilot-link
python3 main.py

Usage

  1. Connect your Palm to the PC via its USB cradle or cable.
  2. Launch Palm Pilot Sync (from the menu, or palm-sync in a terminal).
  3. Click HotSync, then press the HotSync button on your Palm/cradle.

The device appears as /dev/pilot once the udev rule is active.


Known issues

  • ⚠️ Record formatting is mangled during sync (both directions). As of v1.0, text in synced records can come out garbled when converting between the Palm and the PC — this affects Palm → PC and PC → Palm. The likely cause is a round-trip mismatch in how records are encoded (Palm uses CP1252 while the PC store is UTF-8), how line endings are handled, or how fields are packed back into the .pdb format. Back up your device before syncing important data. A fix is planned; contributions and bug reports are welcome.

Project layout

palm-sync/
├── main.py              # Entry point — initialises the DB and launches the UI
├── icon.svg             # Application icon
├── requirements.txt     # Python dependencies (PyQt5)
├── palm_sync/           # Backend
│   ├── database.py      #   SQLite storage + merge logic
│   ├── hotsync.py       #   HotSync engine (drives pilot-xfer)
│   ├── models.py        #   Data models
│   ├── usb_manager.py   #   USB device detection
│   ├── bluetooth_manager.py
│   └── parsers/         #   Palm .pdb record parsers (contacts, datebook, memo, todo)
├── ui/                  # PyQt5 views (contacts, calendar, memos, tasks, sync dialog)
└── packaging/
    ├── build-deb.sh     # Builds the distributable .deb
    └── setup.sh         # Manual/from-source dependency setup

Building the Debian package

./packaging/build-deb.sh          # builds dist/palm-sync_1.0_all.deb
./packaging/build-deb.sh 1.1      # builds a specific version

The output lands in dist/ (git-ignored). Attach it to a GitHub Release to share it.


License

MIT © 2026 Brian

About

Sync a Palm OS handheld with a modern Linux PC over USB. Contacts, calendar, memos, and tasks via pilot-link's HotSync — stored in local SQLite with PC-priority merge. Python 3 + PyQt5.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors