A Windows desktop application for building an empirical antenna coverage pattern from your own FT8 and WSPR reception reports.
Antenna Pattern Lab combines PSK Reporter data, WSJT-X activity, optional Hamlib radio state, antenna profiles, and measurement campaigns. It stores everything in a local SQLite database and provides polar plots, maps, comparisons, and exports without requiring a server.
Important
The plots describe the reports collected under your measurement conditions. They are not a calibrated far-field antenna gain measurement. Propagation, station activity, transmit power, time, band, and receiver distribution all influence the result.
Download the current Windows installer from GitHub Releases.
The application can check the same official GitHub release channel for updates. It checks in the background on every startup and fails silently when offline. Every downloaded installer is accepted only after its SHA-256 digest matches the published release manifest, and it is never launched without an additional confirmation.
Warning
Current Windows packages are not Authenticode-signed. Windows can therefore display Unknown publisher or a Microsoft Defender SmartScreen warning. Download only from this repository's Releases page. Each release includes SHA-256 checksums and GitHub build-provenance attestations.
- live FT8 or WSPR collection through PSK Reporter MQTT/TLS;
- historical PSK Reporter import with persistent rate limiting;
- WSJT-X UDP monitoring with confirmed RX/TX state and TX-session records;
- optional Hamlib
rigctldmonitoring for frequency, mode, and PTT; - reusable antenna configuration profiles and named measurement campaigns;
- polar SNR, distance, count, time-balanced, and coverage views;
- interactive world map with great-circle paths, azimuth, and distance;
- campaign comparison, A/B analysis, and coverage planning;
- NOAA SWPC X-ray/proton, solar-wind, alert, forecast, D-RAP, GloTEC, and WSA–ENLIL context with offline campaign snapshots;
- nearby GIRO/DIDBase ionosonde measurements and campaign condition/sensitivity analysis;
- route-specific Propagation Intelligence with local great-circle/daylight replay, versioned provenance, blocked validation, and separate NEC, observed-coverage, and propagation-normalized layers;
- built-in NEC2 wire-modeling workbench with five templates, validation, 3D geometry, impedance/current/pattern results, explicit take-off elevation, practical ionospheric-hop geometry, reproducible baselines, and an optional separately installed OpenNEC calculation process;
- ADIF/ADI and CSV import, plus CSV export;
- local SQLite storage and diagnostic export;
- English and Czech application UI;
- verified, consent-driven setup assistance for WSJT-X and Hamlib;
- reproducible Windows releases with checksums and GitHub build provenance.
The original native Classic interface remains available. The optional Monitor design is a compact technical UI for dense tables, charts, maps, status indicators, logs, and configuration screens. Open Settings → Appearance… and choose Dark, Light, or Follow system. The selection is persisted, and Follow system reacts to Windows color-scheme changes while the application is running.
- Download the latest installer from Releases.
- Compare the installer's SHA-256 with
SHA256SUMS.txt; Windows currently reports an unknown publisher because the release is unsigned. - Start Antenna Pattern Lab and complete the first-run assistant.
- Use Help → Add demo data to explore the application without a radio.
- For live collection, enter your callsign and locator, select the band and mode, then start collection.
For WSJT-X, open File → Settings → Reporting and configure:
UDP Server: 127.0.0.1
UDP Server port number: 2237
Use the same port in Antenna Pattern Lab. If JTAlert, GridTracker, or another application already uses that port, configure a different port, multicast, or UDP forwarding.
The complete operating instructions are in the User Guide.
Requirements:
- Windows 10 or later, x86-64;
- Python 3.11 or later;
- Inno Setup 6 for installer builds.
Set up and run the development version:
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m antenna_pattern_lab.appRun the test suite:
.\.venv\Scripts\python.exe -m pytestBuild the application:
.\.venv\Scripts\pyinstaller.exe --noconfirm AntennaPatternLab.specBuild an unsigned local installer:
.\build_installer.ps1Official releases are built by GitHub Actions, accompanied by SHA-256 checksums and a GitHub artifact attestation. Authenticode signing can be added later without changing the update channel. See Release process.
Issues, documentation improvements, tests, and pull requests are welcome. Direct
pushes to main are not used: all changes are merged through pull requests after
tests pass and the repository owner approves them.
Read CONTRIBUTING.md before submitting a change.
The application stores its data locally. Network access is used only for features the user enables, such as PSK Reporter collection, an explicit NOAA SWPC refresh, verified external-tool downloads, and update checks.
Please report security problems privately as described in SECURITY.md, not in a public issue.
Licensed under the MIT License.