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.
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:
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 occurringThe 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:
topic sensor_gps (multi_id 0)
jamming_state 3 (DETECTED)
jamming_indicator 171
spoofing_state 1 (OK)
satellites_used 7
eph 2.89 mReading 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.
| Value | Example from INC-0141 |
|---|---|
| First sample with state 3 | 11:06:24.602, indicator 171 |
| Confirmed at | 11:06:25.602 |
| Detected until | 11:07:04.802, 40.2 s in all |
| Peak indicator | 190 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,
ephandsatellites_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_MODEfrom 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.
Related#
- gps_quality_drop reads the fix quality in the same topic.
- failsafe_entered records PX4 failsafes, which INC-0141 did not have.
- PX4 ULog lists the topics Foxborne reads from a flight log.