✓ BUDGET OK: enough signal both ways. ⚠ LOW MARGIN: works, with less reserve than you asked for. ✕ BELOW SENSITIVITY: at least one direction fails. Short dashes mean the link only works by bending over terrain; long grey dashes are not analysed yet.
Coverage: more opaque is stronger, blank means no link. The solid line traces the coverage edge and the dashed line the farthest reach; turn either off in Settings → Display.
Leave measured noise blank to estimate it from the noise figure. A node's own RF settings override these.
Diffraction uses the Bullington method (ITU-R P.526 §4.5.1). Height scenarios show how much a result depends on terrain and clutter error; they are not confidence intervals.
Clutter heights come from ESA WorldCover, or measured canopy height where a tile exists. Loss grows with the distance a path runs through clutter, up to the cap. Each result shows which source it used.
Each node's coverage is shown in its colour on a grid of cells (see Map cell); a cell counts as covered when most points in it are. The far end uses the global radio and RX antenna height.
Import timestamped directed observations or traceroutes as JSON. SNR is not path loss. Match node names exactly, or supply a nodeNameMap. Data stays in this browser session; download a project to retain it.
Traceroutes: {"traces":[{"timestamp":"…","modem":"LongFast","frequencyMHz":915,"forward":[{"node":"A"},{"node":"B","snrDb":-5}],"reverse":[]}]}. SNR belongs to the receiving hop. Include failed attempts as separate observations with success:false.
No observations imported.
Grid: type:"terrain-grid", source, date, datum, rows, cols, north, south, west, east, elevations. WGS84 bounds describe sample centres. Elevations are AMSL metres, row-major north to south; null means no data. Match the vertical datum to AWS terrain and surveyed heights. Maximum 1 million cells. AWS fills outside the grid and no-data cells.
Share URLs contain model settings and sites only. Imported measurements and DEM data travel only in the project file.