SPLogbook: The High-Performance Rust Ham Radio Logger, Contest Engine, and Station Control Console
TL;DR: SPLogbook by Mariusz Woźniak (SP6INA) is an open-source, next-generation amateur radio logging suite and station automation console written from the ground up in Rust with an immediate-mode egui graphical interface. It combines sub-millisecond UI responsiveness, zero garbage collection pauses, and multi-threaded memory safety with an extensive feature set: built-in VOACAP-lite ionospheric propagation modeling, a unified CAT abstraction layer with an integrated rig-sharing TCP proxy (port 4534), Hamlib rotator control, SGP4/SDP4 Doppler satellite tracking, digital mode bridging (WSJT-X, JTDX, JS8Call, FLDigi), contest logging with real-time dupe checking and rate meters, full PGA (2,477 Polish municipalities) and DXCC award tracking, Avery A4 vector PDF QSL label printing, encrypted XChaCha20-Poly1305 peer-to-peer log sync, an embedded Rhai scripting engine with a plugin marketplace, and a local REST/WebSocket API on port 8080.
What Is SPLogbook?
SPLogbook is an open-source, high-performance amateur radio logging application, contest engine, and station automation workstation written in Rust that delivers sub-millisecond GUI latency, real-time VOACAP propagation modeling, multi-protocol CAT transceiver sharing, award management, and encrypted peer-to-peer synchronization.
+-----------------------------------------------------------------------------------------+
| SPLogbook SYSTEM TOPOLOGY |
+-----------------------------------------------------------------------------------------+
[ Transceivers & Hardware ] [ Unified CAT Abstraction ] [ SPLogbook Core Engine ]
┌─────────────────────────┐ ┌─────────────────────────┐ ┌──────────────────────┐
│ Icom / Yaesu / Kenwood │ ──CAT──► │ Hamlib rigctld / Serial │ │ │
└─────────────────────────┘ └────────────┬────────────┘ │ SQLite Database │
┌─────────────────────────┐ │ │ - WAL Mode Storage │
│ SDR Transceivers (TCI) │ ──TCI──► ┌────────────▼────────────┐ │ - 10 Rapid Indexes │
└─────────────────────────┘ │ CAT TCP Proxy (Port 4534│ ────► │ - Auto-VACUUM & Dupe│
┌─────────────────────────┐ │ (Rig Sharing for WSJT-X)│ │ Cleaning Engine │
│ Antenna Rotators │ ──TCP──► └────────────┬────────────┘ │ │
└─────────────────────────┘ │ │ Built-in Engines: │
┌────────────▼────────────┐ │ - VOACAP Ionosphere │
[ Digital & External Apps ] │ Hamlib rotctld (Az/El) │ │ - SGP4/SDP4 Doppler │
┌─────────────────────────┐ └─────────────────────────┘ │ - FFT Audio Scope │
│ WSJT-X / JTDX / JS8Call │ ──UDP──► │ - Avery QSL Vector │
└─────────────────────────┘ └──────────┬───────────┘
┌─────────────────────────┐ │
│ N1MM Logger+ Ecosystem │ ◄─Broadcast XML───────────────────────────────┐ │
└─────────────────────────┘ │ │
│ Tokio Event Bus
[ Cloud & P2P Services ] │ & REST / WebSockets
┌─────────────────────────┐ │ │
│ LoTW / eQSL / Club Log │ ◄─HTTPS Sync Queue────────────────────────────┤ │
└─────────────────────────┘ │ │
┌─────────────────────────┐ │ │
│ Encrypted Remote P2P QTH│ ◄─XChaCha20-Poly1305 TCP──────────────────────┘ │
└─────────────────────────┘ │
┌────────────────────────────────────────────┴───────────────┐
▼ ▼
┌───────────────────────────┐ ┌───────────────────────────┐
│ egui Immediate-Mode GUI │ │ Rhai Sandbox & Extensions │
│ - Sub-Millisecond Render │ │ - User Rhai Plugins │
│ - Multi-Monitor Docking │ │ - One-Click Marketplace │
│ - Live Day/Night Greyline │ │ - Local REST API (:8080) │
│ - Contest Matrix & Rates │ │ - WebSocket Live Stream │
└───────────────────────────┘ └───────────────────────────┘
Logging contacts, steering rotators, tracking space weather, managing digital modes, and chasing awards often requires juggling half a dozen independent programs. For years, Windows hams relied on Log4OM, N1MM Logger+, or HRD, while Linux operators used Cqrlog or web-based tools like Cloudlog. Many legacy logging applications face recurring hurdles: heavy .NET runtime overhead, sluggish UI response when searching multi-decade logs, difficult multi-app CAT rig sharing, or complex external dependencies.
Created by Mariusz Woźniak (SP6INA), SPLogbook reimagines the modern amateur radio shack console. By using the performance, concurrency, and memory safety of Rust alongside immediate-mode rendering via egui, SPLogbook unifies logging, propagation prediction, hardware automation, digital bridges, and award tracking into a single ultra-responsive binary.
The Problem with Traditional Ham Radio Loggers
Amateur radio operators running modern hybrid stations face significant software friction:
| Functional Dimension | Traditional Logging Software | SPLogbook Architecture |
|---|---|---|
| Runtime Performance & UI | .NET / Electron / Java lag, GC pauses, sluggish tables during high-rate contests. | Pure compiled Rust + egui: sub-millisecond 60 FPS GUI, zero GC pauses, instant. |
| Rig CAT Sharing | Single-app serial locks require external splitters like VSPE or OmniRig. | Built-in CAT TCP Proxy (port 4534) allows WSJT-X, JTDX & logger shared access. |
| Propagation Integration | Manual web browser lookups or external command-line Fortran binaries. | Built-in VOACAP-lite engine computes foF2, MUF/LUF, and S-meter reliability in-app. |
| Multi-Station Sync | Cloud-dependent databases or manual ADIF file exporting between Home and Field QTH. | Encrypted XChaCha20-Poly1305 direct peer-to-peer sync over LAN/VPN without cloud. |
| Extensibility & Scripting | Hardcoded closed binaries or brittle COM interfaces. | Sandboxed Rhai scripts with one-click Plugin Marketplace and local REST/WebSocket API. |
- Interface Latency and UI Jitter: Traditional loggers built on older frameworks often stutter when querying large databases of 100,000+ QSOs while simultaneously parsing high-volume Telnet DX cluster streams.
- Serial Port Conflicts: Connecting logging software, WSJT-X, and an external panadapter to a single radio often causes COM port collisions unless complex virtual serial port splitters are configured.
- Disconnected Propagation Data: Determining whether 15m or 10m is open to a spotted DX station usually requires switching to an external browser tab to check solar flux and VOACAP charts.
- Field Operation Sync Gaps: Operators activating SOTA peaks, POTA parks, or contest field stations without internet access struggle to merge offline logs back into their primary shack database without creating duplicates.
SPLogbook vs Leading Amateur Radio Loggers
To see how SPLogbook compares with established desktop and server logging suites, let us examine their architectural and operational characteristics:
| Software Suite | Language & Stack | GUI Engine & Latency | In-App VOACAP Propagation | CAT Sharing Proxy Server | P2P Sync (No Cloud) | Extensible Scripting |
|---|---|---|---|---|---|---|
| SPLogbook | Rust (Native) | egui (<1 ms) 60 FPS Native | Native Rust VOACAP-lite | Built-in TCP (Port 4534) | Encrypted XChaCha20 | Rhai Plugin Marketplace |
| Log4OM v2 | C# / .NET | WPF / Win32 (~15-50 ms) | External VOACAP web | OmniRig / Hamlib port | No (CloudDB) | Brittle COM / SQLite hook |
| N1MM Logger+ | Visual Basic.NET | WinForms (~10-30 ms) | External Tools | Single-app Serial lock | Master / Replica | Macro keys only |
| Cqrlog | Pascal / MariaDB | Lazarus GTK2 (~10-25 ms) | External Xplanet | Hamlib rigctld only | No (MySQL) | Bash scripts only |
| Cloudlog | PHP / MySQL | Web Browser (HTTP / DOM) | Solar widget feeds only | Flrig / WebSockets | Web API only | PHP modules only |
| RUMlogNG | Swift / Obj-C | macOS Cocoa (~5-15 ms) | Web-based lookups | Native macOS sharing | iCloud only | AppleScript only |
Core Architecture: SQLite WAL and Thread-Safe Concurrency
A high-performance database and threading architecture designed never to lock the user interface.
+─────────────────────────────────────────────────────────────────────────────────────────+
| SPLogbook CONCURRENCY & DATA FLOW |
+─────────────────────────────────────────────────────────────────────────────────────────+
UI Thread (egui @ 60 FPS) ◄─── mpsc Channels ───► Background Tokio Worker Threads
┌───────────────────────┐ ┌────────────────────────────────────┐
│ - QSO Entry Panel │ │ - Hamlib CAT Polling (50 ms loop) │
│ - Real-Time DX Cluster│ │ - Telnet DX Cluster Stream Ingest │
│ - Interactive WorldMap│ │ - WSJT-X / JTDX UDP Bridge Listener│
│ - Active Rate Meter │ │ - VOACAP Midpoint Ionosphere Calc │
└───────────┬───────────┘ │ - Cloud Sync Upload Scheduler │
│ └─────────────────┬──────────────────┘
▼ ▼
┌───────────────────────────────────────────────────────────────────────────────────────┐
│ SQLite Database Backend (WAL Mode, synchronous=NORMAL, cache_size=10000) │
│ 10 Performance Indexes: Callsign, Date, Band, Mode, Journal, DXCC, LoTW, eQSL, PGA │
└───────────────────────────────────────────────────────────────────────────────────────┘
High-Throughput Database Design
- SQLite with Write-Ahead Logging (WAL): Uses
PRAGMA synchronous=NORMAL;,PRAGMA cache_size=10000;, and memory-backed temporary storage. Readers never block writers, allowing high-rate contest logging and batch ADIF imports without frame drops. - 10 Optimized Database Indexes: Queries across callsigns, chronological timestamps, journals, DXCC entities, PGA gminas, and LoTW/eQSL confirmation states execute in microseconds.
- Multi-Journal Profiles: Easily segregate operations across different journals (Personal, Club Station, Contest, SOTA/POTA, Holiday DXpedition) within a unified database file.
- Rolling Automated Backups: Automatically maintains a rolling 10-revision backup history with auto-VACUUM routines and fail-safe mutex poison recovery.
Ionospheric Modeling: In-App VOACAP-Lite Engine
A standout innovation in SPLogbook is its built-in VOACAP-lite ionospheric propagation engine implemented directly in pure Rust.
+─────────────────────────────────────────────────────────────────────────────────────────+
| VOACAP-LITE IONOSPHERIC CALCULATION |
+─────────────────────────────────────────────────────────────────────────────────────────+
Station QTH (SP6INA) Target DX (9M2PJU)
[Lat: 51.10° N, Lon: 17.03° E] [Lat: 3.13° N, Lon: 101.68° E]
│ │
└─────────────────────── Great Circle Path ─────────────────────────────┘
│
▼
Ionospheric Midpoint Analysis
- Solar Zenith Angle & SSN / SFI
- F2-Layer Critical Frequency (foF2)
- Maximum Usable Frequency (MUF)
- Optimum Traffic Frequency (FOT)
- D-Layer Daylight Solar Absorption
│
▼
┌─────────────────────────────────────────────────────────┐
│ Real-Time Propagation Badge & Matrix │
│ - Path Reliability: 88% (Excellent) │
│ - Estimated Signal Strength: S9 +10 dB │
│ - Best Opening Windows: 20m (Open), 15m (Peak), 10m (DX)│
└─────────────────────────────────────────────────────────┘
When you enter a callsign in the QSO Entry panel, SPLogbook calculates:
- Great-Circle Midpoint & Solar Geometry: Computes the spherical distance, short-path and long-path bearings, and solar zenith angle along the ionospheric reflection path.
- Critical Frequencies (foF2 & MUF): Evaluates ionospheric critical frequencies, estimating the Maximum Usable Frequency (MUF), Lowest Usable Frequency (LUF), and Frequency of Optimum Working (FOT).
- Solar Absorption & Reliability Index: Models D-layer daytime absorption against real-time solar indices (SSN, Solar Flux Index, and geomagnetic Kp/Ap values from NOAA feeds), outputting a path reliability percentage (0-100%) and estimated S-meter report.
- Dynamic Band Opening Table: Displays a visual color-coded HF band matrix indicating which bands are open right now between your QTH and the target station.
Hardware Control: Unified CAT Layer, Rig Sharing & Rotators
SPLogbook features a flexible transceiver and hardware control subsystem designed to eliminate serial port conflicts.
+─────────────────────────────────────────────────────────────────────────────────────────+
| SPLogbook HARDWARE AUTOMATION WORKFLOW |
+─────────────────────────────────────────────────────────────────────────────────────────+
┌──────────────────────────────────────────┐
│ Physical Transceiver │
│ (e.g. Icom IC-7300 / Yaesu FTDX10 / Flex)│
└────────────────────┬─────────────────────┘
│ USB Serial / IP
▼
┌──────────────────────────────────────────┐
│ SPLogbook CAT Abstraction Layer │
│ (Hamlib 4.7.2 / Direct Serial / TCI / CIV)│
└────────────────────┬─────────────────────┘
│
┌────────────────────┴─────────────────────┐
▼ ▼
┌───────────────────────────────┐ ┌───────────────────────────────┐
│ Built-in SPLogbook UI Console │ │ CAT TCP Proxy Server (:4534) │
│ - VFO A/B & Split Tuning │ │ (Shares rig with WSJT-X, JTDX,│
│ - Mode & Filter Selection │ │ FLDigi, SDR Panadapters) │
│ - Real-Time Audio Waterfall │ └───────────────────────────────┘
└───────────────────────────────┘
1. Unified CatBackend Trait & Transceiver Sharing
- Multi-Protocol Support: Connects directly via Hamlib
rigctld, native Kenwood/Elecraft/Yaesu direct serial CAT, FLRig (XML-RPC), Icom CI-V, or TCI (Transceiver Control Interface for ExpertSDR/SunSDR devices). - Integrated CAT TCP Proxy Server (Port 4534): SPLogbook acts as a transparent Hamlib proxy server. Digital software (WSJT-X, JTDX, JS8Call) and SDR panadapters connect to SPLogbook’s proxy port, allowing multiple programs to read frequency, mode, and trigger PTT simultaneously without serial port conflicts.
- Bundled Hamlib 4.7.2: Ships with pre-compiled, tested Hamlib libraries, enabling out-of-the-box hardware connectivity without requiring external driver packages.
2. Rotator Steering & Satellite Doppler Tracking
- Hamlib
rotctldIntegration (Port 4533): Point directional beam antennas with a single click from the QSO Entry panel or the interactive world map. - SGP4/SDP4 Keplerian Satellite Tracking: Calculates real-time azimuth and elevation tracking for amateur satellites (LEO voice/digital transponders and AO-73/ISS). SPLogbook computes Doppler frequency shifts and adjusts transceiver frequencies bidirectionally via CAT in real time.
3. Integrated SDR Waterfall and Audio Scope
- Captures transceiver audio directly through the system sound card or USB codec via
cpal. - Computes real-time FFT spectrum displays with selectable window sizes (512 to 4,096 points), adjustable floor/ceiling gain levels, and dockable tile or floating window presentation.
Contest Engine, Dupe Checking & Polish Heritage (PGA)
Built for intense contest operations, SPLogbook provides low-latency tools for competitive operators.
+-----------------------------------------------------------------------------------------+
| CONTEST OPERATION DASHBOARD |
+-----------------------------------------------------------------------------------------+
[ Contest: SP DX Contest ] [ Rate: 142 QSO/h ] [ Band Mults: 48 ] [ Score: 184,320 pts ]
┌───────────────────────────────────────────────────────────────────────────────────────┐
│ QSO Entry: [ SP6INA ] [ 599 ] [ 001 ] [ DS01 ] ──► [ Validated: Dolnośląskie ] │
│ Status: ✨ NEW MULTIPLIER! (PGA Gmina: DS01) │
├───────────────────────────────────────────────────────────────────────────────────────┤
│ Real-Time Rate Meter (QSO/h) with 10-Minute Rolling Average Bar Graph │
│ Band Multiplier Matrix: 160m (4) | 80m (12) | 40m (18) | 20m (24) | 15m (16) | 10m (8)│
├───────────────────────────────────────────────────────────────────────────────────────┤
│ Instant Dupe Verification: [DUPE WARNING] if callsign already logged on active band │
│ Cabrillo 3.0 & ADX (XML ADIF) One-Click Contest Export │
└───────────────────────────────────────────────────────────────────────────────────────┘
- Intelligent Exchange Parser: Automatically breaks down complex exchanges (e.g.
599 001 EU-115or59 05 DS01) into validated serial numbers, zones, and contest identifiers. - Real-Time Rate Meter & Matrix: Displays instantaneous QSO/hour rates, rolling rate charts, and band-by-band multiplier matrices.
- Keyboard-First Focus: Supports fast N1MM-style keyboard navigation (
Enterto log,Spaceto jump between fields,F1–F8CW/voice macros) with automatic focus reset. - PGA Award (Polska Gmina Award): Broad built-in database covering all 2,477 Polish municipalities (gminas), complete with powiat and voivodeship mappings, automatic validation, and real-time award statistics.
- Broad Award Tracking: DXCC (Mixed, Band, Mode, Challenge, All-Time New One – ATNO alerts), WAZ, WAS, WAE, WWFF, RDA, IOTA, SOTA, and POTA.
Avery Vector PDF QSL Label Printing
SPLogbook eliminates the need for third-party word processors or external label design utilities.
+─────────────────────────────────────────────────────────────────────────────────────────+
| VECTOR PDF QSL LABEL GENERATOR |
+─────────────────────────────────────────────────────────────────────────────────────────+
Logbook QSO Records ──► [ QSL Print Filter: Unprinted Outgoing QSLs ]
│
▼
┌───────────────────────────────────────────────────────────────────────────────────────┐
│ Avery A4 Vector Label Engine (Direct PDF Generation) │
│ - Supported Formats: Avery 3x8 (24/sheet), 3x7 (21/sheet), 2x8 (16/sheet), 2x7 │
│ - Custom Typography, Station Logo Embedding, Confirmation Status Badges │
│ - Millimeter-Exact Margin & Spacing Calibration for Laser/Inkjet Printers │
└───────────────────────────────────────────────────────────────────────────────────────┘
- Direct Vector PDF Rendering: Generates crisp, high-resolution vector PDF label sheets directly inside the application.
- Standard Avery A4 Templates: Pre-configured for standard European and international label sheets (Avery 3×8, 3×7, 2×8, 2×7).
- Standalone Visual QSL Designer: Customize font sizes, callsign branding, report layouts, and confirmation text with millimeter-precision alignment.
Encrypted P2P Log Synchronization & Cloud Backends
SPLogbook ensures smooth multi-device workflows without locking operators into proprietary cloud platforms.
+─────────────────────────────────────────────────────────────────────────────────────────+
| ENCRYPTED PEER-TO-PEER LOG SYNCHRONIZATION |
+─────────────────────────────────────────────────────────────────────────────────────────+
Home Shack Workstation (SPLogbook) Field / Portable Laptop (SPLogbook)
================================== ===================================
│ │
│ ── 1. TCP Connection Request (LAN / WireGuard VPN) ────► │
│ │
│ ◄── 2. Mutual Authentication (Argon2id Derived Key) ───► │
│ │
│ ◄── 3. Bidirectional Sync Stream (XChaCha20-Poly1305) ──► │
│ - Microsecond Conflict Resolution │
│ - Automatic Journal Merging & Deduplication │
│ │
- Encrypted P2P Synchronization: Synchronize databases directly between laptops and desktop shacks over local WiFi, Ethernet, or WireGuard VPNs using XChaCha20-Poly1305 symmetric authenticated encryption and Argon2id key derivation.
- Cloud Sync Hub: Automated background synchronization with LoTW (via TQSL), eQSL.cc, Club Log, QRZ.com XML, HamQTH, HRDLog, and Cloudlog with exponential backoff retries and rate limiting.
- OS-Level Credential Protection: Passwords and API tokens are securely stored in the native operating system keychain (Windows Credential Manager, Linux Secret Service, macOS Keychain), never in plaintext JSON.
Rhai Scripting, Plugin Marketplace & REST API
SPLogbook provides rich extension points for developers and advanced station integrators.
+─────────────────────────────────────────────────────────────────────────────────────────+
| EXTENSIBILITY & INTEGRATION |
+─────────────────────────────────────────────────────────────────────────────────────────+
1. Sandboxed Rhai Plugin Engine
- Safe scripting via .rhai files with zero raw disk/network access.
- Event Hooks: on_startup, on_qso_logged, on_dx_spot, on_rig_state.
- One-Click Plugin Marketplace with SHA-256 verification and offline fallbacks.
2. Embedded Axum REST & WebSocket Server (Port 8080)
- GET /api/v1/status ──► JSON Station VFO, Mode, Rotor Azimuth.
- GET /api/v1/qsos ──► Filterable JSON QSO Log Stream.
- POST /api/v1/qso ──► External Automated QSO Injection.
- WS /api/v1/ws ──► Real-Time Bi-Directional Event Stream for Dashboards.
- Sandboxed Rhai Plugins: Users can write lightweight automation scripts in Rhai without recompiling the application. Hooks trigger custom actions when new DX spots arrive, QSOs are logged, or rig frequencies change.
- One-Click Marketplace: Browse, download, and install community plugins (POTA/SOTA assistants, custom contest scoring rules, CW macros) directly from the in-app catalog.
- REST & WebSocket API: An embedded Axum asynchronous web server exposes JSON endpoints and a live WebSocket stream on port 8080, enabling integration with external dashboards, home automation systems, and remote station controllers.
Installation and Quick Start
SPLogbook runs natively on 64-bit Windows 10/11 and modern Linux distributions.
+─────────────────────────────────────────────────────────────────────────────────────────+
| INSTALLATION QUICK REFERENCE |
+─────────────────────────────────────────────────────────────────────────────────────────+
Option A: Pre-Compiled Windows Binary (.zip)
────────────────────────────────────────────
1. Download the latest release from https://splogbook.org/
2. Extract SPLogbook-v0.1.0-win64.zip to any directory.
3. Run SPLogbook.exe. (Place station_config.json in folder for Portable USB Mode).
Option B: Build from Source on Linux (Ubuntu / Debian / Arch / Fedora)
──────────────────────────────────────────────────────────────────────
# Install build prerequisites
sudo apt-get install build-essential libasound2-dev libudev-dev pkg-config
# Clone and compile with Cargo
git clone https://github.com/sp6ina/SPLogbook.git
cd SPLogbook
cargo run --release
Frequently Asked Questions (FAQ)
Is SPLogbook completely free and open source?
Yes. SPLogbook is 100% free, libre, and open source under the GNU General Public License v3.0 (GPLv3). It contains no advertisements, telemetry trackers, paid subscriptions, or locked features.
Can SPLogbook share my radio with WSJT-X without port conflicts?
Yes. SPLogbook includes an integrated CAT TCP proxy server on port 4534. WSJT-X and JTDX connect to this proxy, allowing smooth, concurrent rig control and automatic QSO logging without serial port collisions.
How does in-app VOACAP propagation modeling work?
SPLogbook includes a native Rust VOACAP-lite engine. When you type a callsign, it calculates great-circle geometry, ionospheric critical frequencies (foF2, MUF, LUF), solar absorption, and space weather data to estimate real-time path reliability and signal strength.
Does SPLogbook support multi-monitor desktop setups?
Yes. Using egui_dock, any panel (such as the DX Cluster, World Map, Audio Waterfall, or QSO Entry) can be undocked into independent floating windows and positioned across multiple monitors.
How do I back up my logbook or run it from a USB drive?
All databases are stored in %APPDATA%\SPLogbook\ by default. Placing a station_config.json file in the application directory switches SPLogbook into Portable Mode, storing all logs on your USB drive for field and contest operations.
Sources and Further Reading
- SPLogbook Official Project Portal: splogbook.org
- SPLogbook GitHub Repository: github.com/sp6ina/SPLogbook
- SPLogbook Buy Me a Coffee Support: buycoffee.to/sp6ina
- Hamlib Amateur Radio Rig Control Project: hamlib.github.io
- VOACAP High-Frequency Propagation Prediction: voacap.com
- PGA – Polska Gmina Award Directory: pga-zawody.pl
- egui Immediate Mode GUI Framework for Rust: github.com/emilk/egui
- Rhai Embedded Scripting Language for Rust: rhai.rs
- WSJT-X Digital Amateur Radio Software: wsjt.sourceforge.io
- QRZ.com Callsign Database: qrz.com
73 de 9M2PJU



Post Comment