-
Notifications
You must be signed in to change notification settings - Fork 12
Developer Guide
This page covers building and running Zeus from source, the dev loop with hot-reload, the project layout, and the conventions to know before contributing.
End users don't need any of this — head to Installation for the binary installers and PWA path.
- .NET 10 SDK
- Node.js 20+ (npm ships with it)
- git
- A Hermes Lite 2 (or any supported HPSDR board) on the same LAN — optional. The synthetic DSP engine drives most of the UI without a radio.
WDSP native libraries for macOS (arm64, x64), Linux (x64, arm64), and Windows (x64, arm64) are pulled in as runtime assets. See native/README.md for build details if you need to rebuild them yourself.
git clone https://github.com/brianbruff/openhpsdr-zeus.git
cd openhpsdr-zeus
# Restore .NET dependencies and sanity-check the build
dotnet restore
dotnet build Zeus.slnx
# Install frontend dependencies
npm --prefix zeus-web installThe backend and frontend run as two independent processes during development. The Vite dev server proxies /api and the WebSocket hub through to the .NET host, so you get hot-reload on the React side without rebuilding the server.
# Terminal 1 — backend on :6060
dotnet run --project Zeus.Server
# Terminal 2 — Vite dev server on :5173 (proxies /api and /hub to :6060)
npm --prefix zeus-web run devThen open http://localhost:5173. Edits under zeus-web/src/ hot-reload; changes under Zeus.Server/, Zeus.Protocol1/, Zeus.Protocol2/, Zeus.Dsp/, or Zeus.Contracts/ require restarting the backend.
On the very first backend start, wait for
wdsp.wisdom readybefore clicking Discover — see Installation → First run.
To run the same shape the installer ships, build the frontend into Zeus.Server/wwwroot/ and let ASP.NET Core serve everything — UI, API, WebSocket — on port 6060:
# Build the web UI (one-time, or whenever zeus-web changes)
cd zeus-web && npm install && npm run build && cd ..
# Run the server on :6060
dotnet run --project Zeus.ServerOpen http://localhost:6060, hit Discover, and connect to your radio.
dotnet test Zeus.slnxPlease ensure tests pass before opening a PR.
| Path | What it is |
|---|---|
Zeus.Server/ |
ASP.NET Core host, SignalR hub, radio service |
Zeus.Protocol1/ |
OpenHPSDR Protocol-1 client, framing, discovery |
Zeus.Protocol2/ |
OpenHPSDR Protocol-2 client (ANAN G2) |
Zeus.Dsp/ |
DSP engine — WDSP via P/Invoke + synthetic fallback |
Zeus.Contracts/ |
Wire-format DTOs shared backend ↔ web |
zeus-web/ |
Vite + React + TypeScript + WebGL frontend |
native/wdsp/ |
WDSP build scaffolding for the native DSP library |
tests/Zeus.*.Tests/ |
xUnit tests |
tools/zeus-dump/ |
Protocol-1 packet dump utility |
tools/discovery-probe/ |
LAN discovery probe |
-
tools/zeus-dump/— Protocol-1 packet dumper, handy for protocol debugging -
tools/discovery-probe/— LAN discovery probe for Protocol-1 radios
- Backend port :6060, Vite dev port :5173 — don't change these casually
- Panadapter amber is
#FFA028(single-hue, alpha-varied, no rainbow gradients) - Reference implementation is Thetis
- Deeper context for agents and contributors lives in
CLAUDE.md,docs/lessons/, anddocs/rca/— worth a skim before touching DSP, protocol, or layout code
Shipping surfaces are being added one at a time:
- PWA (installable web app) — available now. Precached shell, works offline for the static assets, installs from any browser that supports PWAs.
-
Native installers (Windows
.exe, macOS.dmg, Linux.tar.gz) — available now. Self-contained .NET 10 publish, WDSP native library, and a per-platform launcher. See Installation. - Photino native-window shell — Phase 2, ETA TBD. Replaces the launcher-plus-browser pattern with a single double-click app (WebView2 / WKWebView / WebKitGTK from .NET, no console window). Deferred until radio / protocol functionality lands.
- Mobile apps (iOS / Android) via Capacitor — planned. Cadence: TBD.
OpenHPSDR Zeus is a user-friendly web frontend for HPSDR Protocol 1 radios. Maintained by Brian (EI6LF) and Doug (KB2UKA). Issues and ideas → issue tracker.
OpenHPSDR Zeus User Guide
- Home
- Installation
- Raspberry Pi (arm64)
- Hardware Requirements
- Getting Started
- Mobile
- Keyboard & Mouse
- Troubleshooting
Interface
- Top Bar & Status
- Modes & Bands
- Bandwidth & Filters
- Front-End & Gain
- Frequency & VFO
- Panadapter & Waterfall
- Meters
- DSP
Transmit
- TX Controls
- TX Audio Tools
- Audio Suite
- VST Host
- CW Keyer
- PureSignal
- PureSignal Feedback Calibration
- PA Settings
- RF2K-S Amplifier
Tools & Plugins
Logging & Lookup
For Developers