HamClock-Next is a modern, multi-platform rewrite of the original HamClock
by Elwood Downey, WB0OEW (SK 29 January 2026).Elwood built HamClock into one of the most beloved shack displays in amateur
radio — a real-time world clock, propagation tool, and DX dashboard all in one.
He maintained it for years with care and craftsmanship, and the ham community
is lesser for his passing. HamClock-Next carries his work forward with deep
respect, preserving every feature of the original while adding a modern
architecture and new capabilities for today's ham shacks.This project is dedicated to his memory. 73, Elwood.
HamClock-Next did not start as a rewrite. It started as a refactor — and a
frustrating one.
Elwood originally wrote HamClock for the ESP8266 microcontroller. Over time
he shimmed in Linux support around that embedded core. By version 4 he had
formally dropped ESP8266 support, but the architectural fingerprint of
single-file globals, Arduino-style execution flow, and tight coupling to his own
propagation proxy remained woven throughout the codebase. It was never the kind
of code you could fault — it was brilliant embedded engineering — but it was
also not a foundation you could cleanly modernize.
The decision to start clean was not made lightly, but it was the right call.
A greenfield CMake + SDL2 + modern C++20 project with a proper layer separation
(data stores, providers, UI widgets, network) turned out to move faster than
the refactor had — and the result is something that can actually be maintained,
extended, and ported without archaeology.
HamClock-Next is, by deliberate design, a near-100% AI-written codebase.
The implementation itself is written by AI assistants while humans serve as architects:
defining the structure, owning the design decisions, and reviewing output.
A cornerstone of our methodology is the use of diverse AI models (Gemini 3, Claude Code, and Codex) to perform peer-reviewed implementation and code audits. By leveraging the unique training biases of different agents, we achieve a "multi-agent consensus" that eliminates hallucinations and surfaces architectural edge cases, resulting in a more robust and stable codebase than any single model could produce alone.
The result is a production-quality, modern C++ codebase that compiles clean,
passes valgrind, and runs stably on everything from a Raspberry Pi 3 to a browser tab.
HamClock-Next implements all 82 original features across every category:
| Category | Features |
|---|---|
| World Map & Projections | Azimuthal, Robinson, Mercator; day/night terminator; great-circle paths; Maidenhead/lat-lon grid overlays |
| Map Markers | City labels, DX Cluster spots, PSK Reporter spots, POTA/SOTA activator pins, ADIF QSO pins, satellite tracks |
| Map Overlays | VOACAP MUF, VOACAP Reliability, VOACAP TOA, KC2G real-time MUF, cloud cover, WX precipitation |
| Data Panels | Solar/space weather, DX Cluster, Live Spots (PSK/WSPR/RBN), POTA/SOTA activity, satellite tracking, contest calendar, RSS feed, and more |
| Core UI | Clock display, callsign, DE/DX info panels, bearing/distance, countdown timer, audio alarms |
| Hardware | GPS/NMEA (gpsd), rotator control (rotctld), rig CAT control (rigctld), display brightness, display power management |
| Utilities | QRZ.com lookup, Maidenhead grid system, callsign prefix lookup, EME (moonbounce) tool, Santa Tracker |
One HamClock-Next instance runs as a Master hub and fetches all external data. All other instances on the same LAN run as Clients and pull data from the hub. Eliminates redundant API calls and ensures data consistency across every screen in a club station.
Every external data fetch is cached both in memory and on disk with ETag / HTTP 304 support. Dramatically reduces bandwidth on slow or metered connections. Cache survives restarts — data is available immediately on next launch.
rigctld.To compile HamClock-Next, you will need the following libraries and tools installed on your system:
Note: nlohmann_json, libpredict, cpp-httplib, and spdlog are automatically fetched and built via CMake during the first compilation.
Install dependencies (Example for Ubuntu/Debian):
bash
sudo apt-get install cmake build-essential pkg-config \
libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev \
libcurl4-openssl-dev libsqlite3-dev
Configure and Build:
bash
mkdir build && cd build
cmake ..
make -j$(nproc)
Run:
bash
./hamclock-next
Optional: Use -f or --fullscreen to force start in fullscreen mode.
HamClock-Next builds natively on all Raspberry Pi models. For best results on memory-constrained devices:
# Install dependencies (Raspberry Pi OS / Raspbian)
sudo apt-get update
sudo apt-get install cmake build-essential pkg-config \
libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev \
libcurl4-openssl-dev libsqlite3-dev
# Clone the repository
git clone https://github.com/k4drw/hamclock-next.git
cd hamclock-next
# Build with single thread (safe for 1GB RAM)
mkdir build
cd build
cmake ..
cmake --build . -j1
# Install dependencies via Homebrew
brew install cmake sdl2 sdl2_image sdl2_ttf curl
# Build .app bundle
./scripts/build-macos.sh
Requires Docker (image is auto-pulled on first run).
bash scripts/build-win64.sh
Produces build-win64/hamclock-next.exe and build-win64/HamClock-Next-Setup.exe.
If you encounter SDL_Init failed: No available video device, ensure your user is in the video and render groups:
sudo usermod -aG video,render $USER
Then try:
# SDL_VIDEODRIVER=kmsdrm is the standard for RPi console mode
sudo SDL_VIDEODRIVER=kmsdrm ./hamclock-next --fullscreen --software
-f, --fullscreen: Launch in fullscreen mode.-s, --software: Force software rendering (disables OpenGL/MSAA). Essential for environments without a functioning 3D setup or DRI access.--log-level <level>: Set logging verbosity. Values: debug, info, warn, error (default: warn).-h, --help: Show help message.~/.local/share/HamClock/HamClock-Next/%APPDATA%\HamClock\HamClock-Next\~/Library/Application Support/HamClock/HamClock-Next/HamClock-Next is designed for AI-assisted development using the Model Context Protocol (MCP). We provide a specialized "HamClock Bridge" server that allows AI assistants (like Claude and Gemini) to compare codebases, trace logic, and automatically scaffold new widgets.
To get started with AI-assisted contributions, see the MCP_GUIDE.md for setup and usage instructions.
Releases, installers, and WASM builds are available at:
https://github.com/k4drw/hamclock-next/releases
HamClock-Next is free and open source under the GPL license, in the spirit of the original work by Elwood Downey, WB0OEW.
73 de K4DRW