MeshSky Docs

MLAT

Open multilateration on MeshSky — timing, solver, and verification.

Multilateration (MLAT) is the technique used to locate aircraft that don’t broadcast their own GPS position — by measuring the tiny time differences with which their radio signals arrive at multiple ground stations.

For decades, MLAT has been a quietly proprietary technology. MeshSky makes it open: any cooperating set of feeders can produce MLAT solutions, any ControlTower can solve them, and every solution is independently verifiable.

How it works

  1. A non-ADS-B aircraft (e.g. a Mode-S squitter from an older airliner) transmits a short message.
  2. Four or more GPS-disciplined feeders within line-of-sight receive that message and timestamp it to within a few hundred nanoseconds.
  3. Each feeder ships its signed observation through AirBridge to the mesh.
  4. A ControlTower correlates observations of the same message, builds a system of hyperbolic equations from the time differences, and solves for the aircraft’s 3-D position.
  5. The solution is signed and re-broadcast as a MLAT_SOLUTION message.

Timing

Sub-microsecond timing is the hard part. MeshSky feeders use:

  • A GPS-disciplined oscillator (GPSDO) — typical accuracy ±50 ns.
  • A protocol-level clock-skew estimator that learns each feeder’s drift relative to its peers, even without a GPSDO.

Feeders without sub-microsecond timing can still participate in MLAT — their observations are weighted lower, and used only when no GPSDO-grade source is available for the same message.

Solver

The reference solver uses non-linear least squares over a Bancroft seed, with refinement via the Levenberg–Marquardt algorithm. It produces:

  • A 3-D position with covariance.
  • A confidence score combining geometry (DOP), residuals, and contributing feeder reputations.
  • A list of contributing feeder IDs (so the solution is reproducible).

A solution is rejected if:

  • Fewer than 4 GPSDO-grade feeders contributed and confidence < 0.6.
  • Residuals exceed the per-shard max_residual_ns (default 350 ns).
  • Geometry is degenerate (DOP > 8).

Verification

Because every input observation is signed and reproducible, MLAT solutions themselves are independently verifiable. Any consumer can:

  1. Pull the contributing observations from the network.
  2. Re-run the solver locally.
  3. Compare the result to the signed solution.

This makes MLAT on MeshSky as trust-minimized as it gets.

Coverage

MLAT requires a sky-visible aircraft to be in range of at least 4 cooperating feeders. Coverage compounds with feeder density: a single new urban feeder can light up MLAT for hundreds of square kilometers.

You can check live MLAT coverage at https://meshsky.io/coverage.