Skip to main content
GNSS Documentation
GitHub Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage
Edit page

Jamming Detection

The library reports RF interference and jamming information per frequency band via UBX-MON-RF.

Jamming States

State Meaning
Unknown Jamming detection not available
OK — No Significant Jamming Clean signal, no interference
Warning — Interference Visible But Fix OK Some interference, positioning still works
Critical — Interference Visible And No Fix Severe jamming, fix lost

Reading RF Data

auto nav = hat->waitAndGetFreshNavigation();
for (const auto& rf : nav.rfBlocks)
{
    printf("Band: %s\n", Utils::eBand2string(rf.gnssBand).c_str());
    printf("  Jamming: %s\n", Utils::jammingState2string(rf.jammingState).c_str());
    printf("  Antenna: %s (power: %s)\n",
        Utils::antennaStatus2string(rf.antennaStatus).c_str(),
        Utils::antennaPower2string(rf.antennaPower).c_str());
    printf("  Noise: %u/ms, AGC: %.1f%%, CW: %.1f dB\n",
        rf.noisePerMS, rf.agcMonitor, rf.cwInterferenceSuppressionLevel);
}
nav = hat.wait_and_get_fresh_navigation()
for rf in nav.rf_blocks:
    print(f"Jamming: {rf.jamming_state}")
    print(f"Antenna: {rf.antenna_status} (power: {rf.antenna_power})")
    print(f"Noise: {rf.noise_per_ms}/ms, AGC: {rf.agc_monitor:.1f}%")

Interpreting the Data

AGC Monitor

  • Normal: ~50–70% — healthy signal levels
  • Low (<30%): Strong signal or interference saturating the front end
  • High (>80%): Weak signal, possible antenna issue

Antenna Diagnostics

Status Meaning Action
OK Antenna connected and working Normal
Open No antenna detected Check connector
Short Short circuit on antenna line Replace cable/antenna
Init / DontKnow Detection not complete Wait for fix