Skip to content
Docs
foxborne.comRequest a pilot

GNSS jamming

Flags a GNSS receiver that reports jamming detected for at least a second, as PX4 logs it in sensor_gps. It observes the receiver's own assessment, not where the interference came from.

Rule referenceMarkdown
On this page8
gnss_jammingv1.0On by default
Detects
sensor_gps reports jamming_state 3 (detected) from the receiver.
Threshold
jamming_state 3 for 1 s
Reads
Flight log
Report wording
Observed: the receiver reported jamming

What it reads#

The rule reads sensor_gps in the flight log. The GNSS receiver makes its own jamming assessment, and PX4 logs it in two fields:

SensorGps.msgPX4 v1.16.0, the jamming fieldsText
uint8 JAMMING_STATE_UNKNOWN   = 0 #default
uint8 JAMMING_STATE_OK        = 1
uint8 JAMMING_STATE_MITIGATED = 2
uint8 JAMMING_STATE_DETECTED  = 3
uint8 jamming_state           # indicates whether jamming has been detected or suspected by the receivers. O: Unknown, 1: OK, 2: Mitigated, 3: Detected
int32 jamming_indicator       # indicates jamming is occurring

The rule fires on jamming_state and records jamming_indicator beside it. PX4 v1.16.0 checks the same state in vehicle_gps_position, the GPS topic it uses. On state 3 its estimator checks log GPS jamming detected.

This is the sample where the state changed in INC-0141:

10_50_22.ulgExample dataset, INC-0141, sensor_gps at 11:06:24.602Text
topic      sensor_gps (multi_id 0)

jamming_state             3 (DETECTED)
jamming_indicator         171
spoofing_state            1 (OK)
satellites_used           7
eph                       2.89 m

Reading the indicator#

PX4's Flight Review guide says the jamming indicator "should be around or below 40. Values around 80 or higher are too high". In INC-0141 it read 26 at 11:06:10.002, 48 at 11:06:18.002 and 118 at 11:06:22.402, 2.2 s before the receiver reported state 3.

The indicator can climb well before the state changes, so read the Jamming indicator lane beside the finding. The same topic carries spoofing_state on the same 0 to 3 scale. This rule does not read it, and the INC-0141 sample above shows it at 1 (OK).

When it fires#

A finding is produced when jamming_state reads 3 for 1 s. The event sits on the first sample with state 3, and the finding is confirmed 1 s later.

ValueExample from INC-0141
First sample with state 311:06:24.602, indicator 171
Confirmed at11:06:25.602
Detected until11:07:04.802, 40.2 s in all
Peak indicator190 at 11:06:35.002

The finding's title is Receiver reports jamming_state 3 (detected). The Jamming indicator lane shades the stretch and labels it jamming_state 3.

Wording and evidence level#

Every finding reads Observed: the receiver reported jamming. The flight log shows the receiver's report directly, so the level is observed. The wording leaves the claim with the receiver.

What the finding does not mean#

  • It does not say where the interference came from. The INC-0141 report puts it plainly: the jamming indicator shows interference at the receiver, not where it came from.
  • It is the receiver's call. States 1 (OK) and 2 (Mitigated) produce no finding, and 0 (Unknown) is the default. A receiver that never reports a state leaves no finding, which proves nothing about the spectrum.
  • It does not say the position was wrong. Fix quality is a separate reading, eph and satellites_used, which gps_quality_drop watches. In INC-0141 that rule's first sample came 0.8 s before the receiver reported jamming.
  • The Hold in the example was not a failsafe. Range control commanded Hold at 11:06:31.812, 7.2 s after the receiver's report, with DO_SET_MODE from system 255. failsafe_entered produced nothing on this run.

Threshold and overrides#

The threshold reads jamming_state 3 for 1 s and uses the state alone. It applies to All vehicles. A change under Rules with Edit saves as gnss_jamming 1.1, and findings already produced keep version 1.0 and its threshold.

See Thresholds, scopes and overrides.

Example finding#

In INC-0141, UAS-10 surveyed the north fence. Only its flight log was imported, because the collector was not reachable after the run. The receiver reported jamming for 40.2 s, while satellites in use fell from 18 to 6 and horizontal accuracy rose to 4.8 m.

PX4 logged its own message, GNSS signal jammed, at 11:06:24.911. In PX4 v1.16.0 that message comes from the estimator's GPS checks, not from sensor_gps directly. The fix recovered at 11:07:05.202, with 15 satellites, eph at 0.9 m and jamming_state back at 1.

Range control resumed the mission 34.9 s after the fix recovered. The Findings row shows GPS quality drop and GNSS jamming reported. The report's next check is a spectrum analyzer survey of the north fence on the next run.