kimo
TemplateKimo Defense

GNSS interference monitor template

GNSS interference monitor is a Kimo template that builds a daily interference map from the navigation-integrity values aircraft broadcast in ADS-B. It classifies each aircraft once per hexagon per day as good or degraded (median NIC below 7), applies a sparse-traffic correction, compares every cell with its own 28-day baseline, and alerts when an area moves from background noise to sustained degradation.

Dashboards
4
Data models
4
Metrics
5
Min setup
4
app.getkimo.com/templates/gnss-interference-monitor
GNSS interference monitor
Daily interference map
Degraded share
3.8%
+2.1 pts(unfavorable)
Cells above 10%
17
+9(unfavorable)
Aircraft per cell
41
+3(favorable)
Quality-field coverage
94%
0 pts(favorable)

Degraded share vs. 28-day baseline

  • Degraded share
  • 28-day baseline

Interference cells (simulated)

Cell 0-0: 1.1% degraded (simulated)Cell 0-1: 1.8% degraded (simulated)Cell 0-2: 1.5% degraded (simulated)Cell 0-3: 1.1% degraded (simulated)Cell 0-4: 1% degraded (simulated)Cell 0-5: 1.7% degraded (simulated)Cell 0-6: 2.1% degraded (simulated)Cell 0-7: 1.3% degraded (simulated)Cell 0-8: 1.6% degraded (simulated)Cell 0-9: 1.5% degraded (simulated)Cell 0-10: 1.6% degraded (simulated)Cell 0-11: 0.9% degraded (simulated)Cell 1-0: 1% degraded (simulated)Cell 1-1: 0.7% degraded (simulated)Cell 1-2: 1.1% degraded (simulated)Cell 1-3: 1.5% degraded (simulated)Cell 1-4: 1.8% degraded (simulated)Cell 1-5: 1% degraded (simulated)Cell 1-6: 2.7% degraded (simulated)Cell 1-7: 3.3% degraded (simulated)Cell 1-8: 4.9% degraded (simulated)Cell 1-9: 4.5% degraded (simulated)Cell 1-10: 2.2% degraded (simulated)Cell 1-11: 1.5% degraded (simulated)Cell 2-0: 1.4% degraded (simulated)Cell 2-1: 1% degraded (simulated)Cell 2-2: 1.7% degraded (simulated)Cell 2-3: 2% degraded (simulated)Cell 2-4: 1.5% degraded (simulated)Cell 2-5: 1.8% degraded (simulated)Cell 2-6: 4.8% degraded (simulated)Cell 2-7: 11.4% degraded (simulated)Cell 2-8: 15.6% degraded (simulated)Cell 2-9: 13.9% degraded (simulated)Cell 2-10: 5.9% degraded (simulated)Cell 2-11: 2.7% degraded (simulated)Cell 3-0: 1.8% degraded (simulated)Cell 3-1: 1.9% degraded (simulated)Cell 3-2: 0.8% degraded (simulated)Cell 3-3: 0.8% degraded (simulated)Cell 3-4: 1.8% degraded (simulated)Cell 3-5: 3% degraded (simulated)Cell 3-6: 7.7% degraded (simulated)Cell 3-7: 18% degraded (simulated)Cell 3-8: 26.9% degraded (simulated)Cell 3-9: 22.1% degraded (simulated)Cell 3-10: 9.8% degraded (simulated)Cell 3-11: 4% degraded (simulated)Cell 4-0: 1.2% degraded (simulated)Cell 4-1: 1% degraded (simulated)Cell 4-2: 1.7% degraded (simulated)Cell 4-3: 2.5% degraded (simulated)Cell 4-4: 1.4% degraded (simulated)Cell 4-5: 1.7% degraded (simulated)Cell 4-6: 5.8% degraded (simulated)Cell 4-7: 13.6% degraded (simulated)Cell 4-8: 19.9% degraded (simulated)Cell 4-9: 16.3% degraded (simulated)Cell 4-10: 8.1% degraded (simulated)Cell 4-11: 2.5% degraded (simulated)Cell 5-0: 1.3% degraded (simulated)Cell 5-1: 2.9% degraded (simulated)Cell 5-2: 4.6% degraded (simulated)Cell 5-3: 4.4% degraded (simulated)Cell 5-4: 3.7% degraded (simulated)Cell 5-5: 2.3% degraded (simulated)Cell 5-6: 3.5% degraded (simulated)Cell 5-7: 5% degraded (simulated)Cell 5-8: 7.9% degraded (simulated)Cell 5-9: 7% degraded (simulated)Cell 5-10: 3.6% degraded (simulated)Cell 5-11: 2.4% degraded (simulated)Cell 6-0: 1.2% degraded (simulated)Cell 6-1: 4% degraded (simulated)Cell 6-2: 6.6% degraded (simulated)Cell 6-3: 9.4% degraded (simulated)Cell 6-4: 7.1% degraded (simulated)Cell 6-5: 3.6% degraded (simulated)Cell 6-6: 1.5% degraded (simulated)Cell 6-7: 2.1% degraded (simulated)Cell 6-8: 1.6% degraded (simulated)Cell 6-9: 2.6% degraded (simulated)Cell 6-10: 1.5% degraded (simulated)Cell 6-11: 1.9% degraded (simulated)Cell 7-0: 2% degraded (simulated)Cell 7-1: 4.2% degraded (simulated)Cell 7-2: 7.7% degraded (simulated)Cell 7-3: 8.9% degraded (simulated)Cell 7-4: 7.3% degraded (simulated)Cell 7-5: 3.5% degraded (simulated)Cell 7-6: 1.2% degraded (simulated)Cell 7-7: 1.5% degraded (simulated)Cell 7-8: 1.1% degraded (simulated)Cell 7-9: 1.8% degraded (simulated)Cell 7-10: 1.1% degraded (simulated)Cell 7-11: 1.1% degraded (simulated)Cell 8-0: 1.7% degraded (simulated)Cell 8-1: 2.4% degraded (simulated)Cell 8-2: 3.9% degraded (simulated)Cell 8-3: 4.3% degraded (simulated)Cell 8-4: 3.7% degraded (simulated)Cell 8-5: 2.6% degraded (simulated)Cell 8-6: 1% degraded (simulated)Cell 8-7: 1.5% degraded (simulated)Cell 8-8: 0.9% degraded (simulated)Cell 8-9: 1.6% degraded (simulated)Cell 8-10: 1.3% degraded (simulated)Cell 8-11: 0.8% degraded (simulated)
Degraded share:< 2%2–5%5–10%> 10%Simulated

Simulated data. Callsigns, receivers, hosts and incidents are fictional.

What’s inside

Everything the dashboards need, already modeled

Models join your raw sources, metrics are defined once in the semantic layer, and every dashboard, deck and Ask Kimo answer reads from the same definitions.

Data models

4
  • adsb_positions
  • gnss_aircraft_cells
  • gnss_daily_cells
  • gnss_baselines

Dashboards

4
  • Daily interference map
  • New and changed areas
  • Area drill-down
  • Data health

Governed metrics

5
  • Degraded share
  • Cells above 10%
  • Change versus 28-day baseline
  • Aircraft per cell
  • Quality-field coverage
Connectors

3 sources, read-only

Connect them from the cloud, or keep databases on your own servers with Kimo Bridge — an outbound-only tunnel, so nothing has to be copied to use the template.

Setup

Live in 5 steps

  1. 1

    Connect a source of decoded ADS-B messages with NIC/NACp (receivers, Kafka or Kimo Bridge).

  2. 2

    Optionally connect OpenSky for traffic context in areas your receivers do not cover.

  3. 3

    Choose the region and cell resolution; keep the defaults for a first week.

  4. 4

    Let the template build 28 days of baseline from history, or wait for it to accumulate.

  5. 5

    Route the change alert to your analysts and review flagged areas against official advisories.

The details

How the template works

§01What questions does this template answer?

  • Where did aircraft report degraded GNSS navigation yesterday, and how does that compare with the last four weeks?
  • Which areas are newly affected this week?
  • How many flights crossed a degraded area, and at which altitudes?
  • Is today's pattern consistent with official advisories for the region?
Mapping GNSS interference from ADS-B quality fieldsAircraft NIC/NACp reports are classified per aircraft, aggregated into hexagons and published as a daily map with baselines.Position reports (simulated)AircraftNICNACpNavSIM101810okSIM20279okSIM30300lowSIM404810okSIM50524lowSIM60679okFlag degradedNIC or NACp below thresholdAggregate to hexes% degraded per cell per dayLow< 2% aircraftMedium2–10%High> 10%Illustrative grid · simulated data
Figure.Aircraft NIC/NACp reports are classified per aircraft, aggregated into hexagons and published as a daily map with baselines.

Scroll sideways to see the full diagram.

§02How does the interference map work?

NIC defines a containment radius around each reported position, from under 7.5 m at NIC 11 to unknown at NIC 0; NACp is a 95% accuracy bound1. US rules require NIC 7 or better (under 0.2 NM) in normal operation, and research groups use lower values as a proxy for degraded GNSS reception2. The template classifies each aircraft by its median NIC in a cell, then computes the degraded share with the minus-one correction popularized by GPSJam, whose public map classifies aircraft on NACp and uses 2% and 10% as the boundaries between low, medium and high3. NACp can be selected as the classifier instead of NIC.

Formula

Degraded share=max(degraded aircraft − 1, 0) ÷ total aircraft

where
degraded aircraft
Distinct aircraft with median NIC < 7 in the cell that day
total aircraft
Distinct aircraft with at least one airborne report in the cell
ParameterDefaultWhy
Degraded thresholdmedian NIC < 7Below the normal-operation requirement
Cell sizeH3 resolution 4Enough aircraft per cell for stable shares
Minimum traffic5 distinct aircraftHide cells too sparse to judge
Bands< 2%, 2–10%, > 10%Consistent with public practice
Alert> 10% and > 3× baseline, 2 daysChange, not chronic noise

§03Which dashboards are included?

  • Daily map: hexagons colored by band, with "insufficient traffic" shown in neutral gray, never green.
  • New and changed areas: cells whose share rose above baseline in the last 7 days.
  • Area drill-down: degraded share over time, aircraft count, altitude distribution and a list of (simulated in preview) flights that crossed the cell.
  • Data health: share of reports with quality fields, receiver uptime, chronic-offender airframes excluded.

§04How do I adapt it to my region?

Busy regions can use finer cells (resolution 5) without losing stability; sparse regions should stay coarse or raise the minimum traffic count. If a few airframes report low integrity everywhere they fly, add them to the chronic-offender list rather than raising the threshold for everyone.

ADS-B receivers or Kafka for decoded NIC/NACp; OpenSky for traffic context; Kimo Bridge to keep raw messages on your servers.

Background reading: Mapping GNSS interference with ADS-B quality indicators and the Airspace Awareness from Open Data whitepaper. The map layer appears on Map and alongside tracks in Airspace.

Frequently asked questions

Can I use OpenSky alone for this template?

Only for traffic context. OpenSky REST state vectors do not include NIC or NACp, so the interference layer needs decoded ADS-B messages from receivers or a dataset that preserves them.

Why median NIC per aircraft instead of every report?

Aircraft broadcast positions about twice per second, so a single aircraft could dominate a cell. One classification per aircraft per cell per day gives every aircraft equal weight.

Does a red cell mean there is a jammer in that cell?

No. It means aircraft flying through that cell reported degraded navigation. Interference can affect aircraft at altitude far from its origin.

How often does the map update?

Daily by default, with an intraday provisional view that is clearly labelled as incomplete.

Sources

4 references
  1. Locating GNSS interference sources using ADS-B with non-linear least squares (opens in a new tab)
    Liu, Lo, Blanch, Chen, Walter — NAVIGATION (Institute of Navigation), vol. 72 no. 32025navi.ion.org

    NIC as GNSS reception proxy; NIC ≥ 7 requirement.

  2. GPSJam FAQ (opens in a new tab)
    GPSJam.orggpsjam.org

    Daily hexagon aggregation, thresholds, minus-one correction.

External sources were accessed at the time of writing. Kimo product details, customers and figures in examples are illustrative unless a source is cited.

All resources
Whitepaper
Defense

Airspace Awareness from Open Data

ADS-B, Mode-S and GNSS interference: what open aviation data can reveal, its limits, and how to fuse it responsibly.

Hugo Lefèvre
32 pages

More Defense Intelligence templates

All templates

Deploy the gnss interference monitor template in Kimo

Open it on simulated data first, then point it at your own feeds — in Kimo’s cloud or on your infrastructure through Kimo Bridge.