signal-server¶
Multi-threaded radio coverage prediction from SPLAT! terrain, on the command line
- Version recorded: 4.0+git20260130.7f6242a
- Categories:
antenna,propagation - Upstream: https://github.com/W3AXL/Signal-Server
What it does¶
Predicts where a transmitter can be heard: from a site, an antenna height, a frequency and a power, it computes path loss over real terrain in every direction out to a radius and writes a coverage map as a PPM image (with a colour key file), using one of twelve propagation models -- ITM (Longley-Rice), ITWOM, Hata, COST-Hata, ECC33, SUI, Ericsson, Egli, free space, plane earth, line of sight and soil. signalserver reads the three-arc-second (90 m) terrain, signalserverHD the one-arc-second (30 m) terrain with -res 3600.
Why you would want it¶
It is SPLAT! rebuilt to run unattended: every input is a command-line argument rather than a site file, the models are wider than SPLAT's two, and it is multi-threaded. It is what to reach for when planning a repeater site, a simplex net, or a link across hills, and it reads the terrain splat-sdf makes from your own map regions, so it works offline.
Before it will work¶
Terrain from splat-sdf (or SPLAT Data Files of your own); without it every square reads as sea level. Pass the directory with -sdf: hammunition maps splat prints it. The coverage guide (docs/guides/propagation.md, "Terrain for coverage plots") has a complete command. ImageMagick or any image viewer that reads PPM to look at the result.
How it installs¶
- git (cmake) — https://github.com/W3AXL/Signal-Server at
7f6242afb3685ff31d9ad14062b80d692ee56327 - build dependencies:
build-essential,cmake,libspdlog-dev,libbz2-dev,zlib1g-dev - Built from this commit in a Debian 13 container on 2026-10-01 (GCC 14.2, CMake 3.31.6, spdlog 1.15.2): configure 0.4 s, compile 38.4 s with one job at 420 MB peak;
cmake --installputs the three programs in /usr/local/bin. They are one binary that picks its resolution from the name it was started under, so the names are kept.
Binaries this produces:
signalserversignalserverHDsignalserverLIDAR
Known problems¶
The threaded plot is not reliable: pass -nothreads. Measured on 2026-10-01 over one tile at a 20 km radius, a one-arc-second plot crashed 2 times in 10 with threads and completed 10 times in 10 without (19 to 29 s, 1.36 GB of memory; the three-arc-second plot took 1 to 2 s and 600 MB). A missing terrain file is not an error: the square is treated as sea level with a warning and the program exits 0, so a plot with the wrong terrain looks like a plot. Its own usage text limits the transmitter to latitudes within 70 degrees of the equator. The LIDAR program reads ASCII grids, which nothing here makes. No web front end is carried.
Keeping it current¶
- probe: none
- strategy: rebuild
- No tags and no releases: the pin review, due every 180 days, is the check. Read W3AXL's log, build the head in a container and run a plot before moving the pin.
Where to get help with the software itself¶
W3AXL's fork on GitHub, issues and pull requests there; it carries the original README and doc/ from Cloud-RF. GPL-2.0, read from LICENSE.txt at the pinned commit. SPLAT!'s manual explains the terrain files and the ITM model behind it.