Repository: https://github.com/dl3hc/openALE Maintainer: DL3HC License: MIT
Early development status. This project is in a very early stage of development. Expect rough edges, unfinished features, bugs, and design decisions that still need to be revisited and polished. Several spec-conformant features — including Group/Net calls, SELCALL, and the FED-STD-1052 (FS-1052) ARQ modem/modes — are in some cases only partially prepared, not fully implemented, or not implemented at all. Support from other developers (code, testing, review, documentation) is actively sought — see Contributing.
No warranty — use at your own risk. This software controls real radio transmitters. The maintainer assumes no liability for damage to equipment or for personal injury resulting from its use. You are solely responsible for verifying correct, safe, and legal operation of your station before transmitting.
openALE is a C++17 implementation of MIL-STD-188-141B Automatic Link Establishment (ALE) and FED-STD-1052 ARQ for HF radio, built for amateur and experimental HF networks. It started as a fork of PC-ALE 2.0 by Alex Pennington (AAM402/KY4OLB) and has since diverged substantially — see Acknowledgments for attribution.
- 2G ALE protocol stack — 8-FSK modem, Golay(24,12) FEC, word/preamble parsing, link state machine (IDLE → SCANNING → CALLING → HANDSHAKE → LINKED → SOUNDING)
- AQC-ALE extensions — Data Elements, traffic classes, slotted response --> TBD
- FED-STD-1052 ARQ — selective-repeat ARQ, CRC-32, configurable data rates --> TBD
- LQA — bilateral BER/SINAD-led channel scoring, auto-sounding, auto-relink, and an optional solar-elevation/SFI propagation-aware ranking factor
- Radio control — Hamlib CAT/PTT (required at build time; see Build)
- WebSocket bridge + Web GUI — the
openALEbinary serves a browser-based desktop and mobile UI directly, no separate web server needed - ale_monitor — passive RX-only traffic/LQA monitor
- Channel/Net model — per-net channel files (
.ale), per-net scanning/sounding policy
Requires a C++17 compiler, CMake ≥ 3.15, and Hamlib (mandatory — the build fails with a
FATAL_ERROR if Hamlib isn't found, since the bridge unconditionally calls into it).
Linux:
sudo apt install libhamlib-dev
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --verboseWindows (one-time, MSYS2 MinGW64 shell):
pacman -S git base-devel mingw-w64-x86_64-toolchain automake autoconf libtool
bash scripts/build_hamlib.shThis builds Hamlib 4.5.2 as a static library into libs/hamlib-built/, which CMake then
detects and links automatically:
mkdir build; cd build; cmake ..; cmake --build .End users don't need to do this — built binaries are provided with each release.
./build/openALE --port 8765 [--mobile] [--remote]Then open http://localhost:8765 in a browser for the desktop UI (or the --mobile UI on a
phone). --remote binds to 0.0.0.0 for LAN access instead of localhost only.
For scripted/headless control, tools/ale_cli.py drives the same WebSocket API. For testing
without radio hardware, radio_mock.exe emulates a Hamlib rigctld-compatible TRX over TCP.
- AMD Orderwire — Automatic Message Display (A.5.7.2)
- Channel/Net/Contact Format —
.alestation file + WS management API - LQA Bilateral Exchange & Auto-Relink — A.5.4.4/A.5.4.5
- Propagation-Aware LQA Scoring — solar-elevation/SFI ranking factor
- Voice Audio Routing
- Threading Model
| Parameter | Value | Standard |
|---|---|---|
| ALE | MIL-STD-188-141B Appendix A | 2G ALE |
| ARQ | FED-STD-1052 | Data Link Protocol |
| Modulation | 8-FSK, 750–2500 Hz | Narrowband HF |
| Symbol rate | 125 baud | 250 Hz tone spacing |
| FEC | Golay (24,12) | 3-bit correction |
| Sample rate | 8000 Hz | Audio sampling |
Most existing ALE software is either commercial, licensed, or gated behind organizational membership. openALE exists because ham radio — and the tools built for it — should be open, free, and inspectable by anyone: to learn from, to teach with, to study and extend for research, and to actually use if you live somewhere without telecommunications infrastructure, or simply can't afford access to it. HF/ALE needs no infrastructure, no subscriptions, and has no gatekeeper.
Contributions welcome: code/PRs, bug reports, hardware compatibility testing, on-air interop testing, and documentation.
MIT — see LICENSE.
openALE was originally forked from PC-ALE 2.0 by Alex Pennington (AAM402/KY4OLB); the platform-abstraction interfaces originate from PC-ALE-PAL. The codebase has since diverged substantially from the original. Built against the public MIL-STD-188-141B and FED-STD-1052 specifications.