Skip to content

dlukinov/psiconnect

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PsiConnect

Qt 5 GUI frontend for the plptools Psion PDA connectivity library.

PsiConnect is a modern Linux replacement for the old PsiWin application: connect a Psion PDA over a serial link to browse files, install apps, back up the device, and two-way sync the organizer (contacts, agenda, to-dos) with the desktop.

Features

Feature Status
PDA profile management (create / edit / view)
Dashboard with device info, last-connected / last-synced
Organizer two-way sync with local persistence + 3-way merge
Generic Data-app (\DAT\*.DBF) support — pick any file, schema-adaptive editor
Agenda editor: style, recurrence, alarm, and memo (Psion Word) editing
To-do lists (multiple lists, priorities, due dates) and anniversaries
vCard (.vcf) import/export with adjustable field mapping + duplicate handling
iCalendar (.ics) export
Backup & restore
File Manager (browse, get, put, delete)
Application install (.sis / .app) + local library / store
SIBO (Series 3) support
EPOC (Series 5 / Revo / netBook) support
Auto-detect Psion on serial port

Organizer

The Organizer is the most developed part of PsiConnect. Data is parsed from the device's native binary formats, mirrored to a per-profile local database, and reconciled with a 3-way merge so edits on either side are preserved.

Contacts / Data files (SIBO). Series 3 has no dedicated contacts app — contacts live in an ordinary Data-app database, and its schema is user-defined. PsiConnect therefore treats the Contacts tab as a general Data-file editor:

  • Discover every \DAT\*.DBF across all device drives and choose which file to edit (remembered per profile, with its own sync tie).
  • A schema-adaptive table renders the file's real columns; a master/detail view edits the selected record with one control per field, typed to the field (text / integer / decimal) and grouping unlabelled text runs into a single multi-line box, just like the Psion Data app.
  • vCard import/export maps the file's columns to vCard fields (auto-guessed from the labels, adjustable), and import resolves duplicates by name.

Agenda (SIBO). Appointments, day entries, anniversaries and to-dos are parsed and written back while preserving each entry's structure. A double-click editor covers common fields, style (bold / italic / underline / crossed-out), recurrence, alarm, and memo text (decoded from the Psion Word format). Multiple to-do lists, priorities and due dates are supported.

Persistence & sync. Each profile keeps an SQLite mirror of its organizer data (and the chosen Data file's schema / to-do lists), so the UI works offline. Sync downloads the device files, merges against the last-pushed snapshot, and writes the result back, closing any app holding the file first.

Supported Devices

SIBO (Series 3 OS)

  • Psion Series 3, 3a, 3c, 3mx
  • Psion Siena
  • Psion Workabout

EPOC (Symbian OS predecessor)

  • Psion Series 5, 5mx
  • Psion Series 7
  • Psion Revo, Revo Plus
  • Psion netBook
  • Psion Mako

The rich Data-app and Agenda editing described above targets SIBO devices. EPOC contacts/calendar sync uses the EPOC parsers.

Architecture

PsiConnect
├── core/               Backend logic (no Qt Widgets dependency)
│   ├── PdaProfile          Profile data model + JSON persistence
│   ├── ProfileManager      CRUD for profiles stored in AppData
│   ├── PlpConnection       C++ wrapper around plptools RFSV/RPCS (+ RPCS bootstrap)
│   ├── ConnectionManager   Manages ncpd daemon lifetime + retry logic
│   ├── NcpdProcess         Launches/monitors the ncpd daemon
│   ├── DeviceDetector      Serial port hot-plug detection
│   ├── OpenFileGuard       Detects/closes files held open on the device
│   ├── BackupManager       Device backup/restore
│   ├── AppLibrary          Local .sis/.app catalog
│   └── LogBridge           Routes plptools/log output to the UI
├── organizer/          Organizer data handling
│   ├── OrganizerEntry      Common entry base (Contact, Appointment, Anniversary, Todo)
│   ├── SiboParser          SIBO binary .DBF / agenda parser + writer
│   ├── WordReader          Psion Word format reader (agenda memos)
│   ├── EpocParser          EPOC binary CDB / Agenda parser
│   ├── OrganizerModel      Schema-adaptive QAbstractTableModel
│   ├── OrganizerStore      Per-profile SQLite persistence + sync base
│   ├── VCardMapper         Column ↔ vCard field mapping, import/export
│   └── VCalExporter        iCalendar 2.0 + vCard 3.0 exporter
└── ui/                 Qt Widgets UI
    ├── MainWindow          Main window with sidebar navigation
    ├── DashboardWidget     Profiles, connection status, device info, backup
    ├── FileManagerWidget   Psion file browser
    ├── OrganizerWidget     Organizer view / edit / sync / import / export
    ├── EventEditorDialog   Agenda entry editor (style/recurrence/alarm/memo)
    ├── VCardFieldMapDialog  vCard ↔ column mapping
    ├── AppManagerWidget    Install/remove apps on PDA
    ├── AppStoreWidget      Local app library catalog
    └── LogsWidget          Live log view

How it Works

Psion PDA ──serial──► ncpd daemon ──TCP (127.0.0.1:7501)──► PsiConnect
  • ncpd (part of plptools) runs as a process and speaks the NCP protocol over the serial link.
  • PsiConnect starts ncpd automatically when connecting a profile, then communicates with it via TCP using the RFSV (remote file system) and RPCS (remote process/system) protocol factories from libplp.
  • On SIBO devices that lack the RPCS server, PsiConnect uploads an embedded copy so process/open-file queries work.

Requirements

Runtime

  • plptools package (provides ncpd, sisinstall, libplp.so)
  • Qt 5 runtime libraries, including the SQLite driver (libqt5sql5-sqlite)

Build

sudo apt install \
    plptools \
    qtbase5-dev \
    libqt5serialport5-dev \
    libqt5svg5-dev \
    libqt5charts5-dev \
    libqt5sql5-sqlite \
    qttools5-dev \
    qttools5-dev-tools \
    cmake \
    ninja-build \
    g++

Building

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

Run directly:

./build/src/psiconnect

Install system-wide:

sudo cmake --install build

Connecting your Psion

  1. Create a PDA profile (File → New PDA Profile).
  2. Set the serial port your Psion is connected to (e.g. /dev/ttyUSB0).
  3. Click Connect on the Dashboard.
  4. PsiConnect will start ncpd automatically and establish the connection.

For USB-serial adapters the port is typically /dev/ttyUSB0.
For built-in RS-232 ports it is /dev/ttyS0.

You may need to add your user to the dialout group:

sudo usermod -aG dialout $USER
# then log out and back in

License

GPL v2 (same as plptools).

About

A PsiWin replacement for modern OS (Linux first then Windows/MacOS)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors