GPS interference
from the stratosphere
Pico balloons float at 10–14 km and report their GPS position by WSPR every ten minutes. When a tracker suddenly “teleports” to Lima or Moscow, or reports a fix at night when its solar panel is dark, its GPS is being spoofed. This map collects those moments from all U4B, Traquito and ICT balloons, not only ours.
The aircraft layer shows interference at cruise altitude (10–12 km). From there a jammer hundreds of kilometres away is in line of sight. On the ground the same signal is usually blocked by terrain and the curvature of the Earth, and phones and cars also use other satellite systems, mobile networks and dead reckoning, so navigation in a car often works normally under an orange square. Colour = how badly aircraft positions were degraded, opacity = what share of aircraft was affected.
Seen by our ADS-B receiver
Airliners report how accurate their GPS position is (NACp and NIC in ADS-B). Our receiver in Włostowice hears aircraft up to about 400 km away and checks this every 30 seconds. When jamming hits, the accuracy drops or the position disappears. Same method as gpsjam.org, but live and from our own antenna.
Bars: share of aircraft with degraded GPS per hour, last 7 days (UTC).
Spoofing events
| Balloon | When (UTC) | Real position | GPS said | Frames | Confidence |
|---|---|---|---|---|---|
| Loading… | |||||
Click an event to show it on the map. Confidence: high = real position between good fixes before and after, mid = real position from a good fix within 3 h, low = only the last good fix is known (often the evening before), unsure = only plain callsign frames in daylight, which may come from another transmitter; unsure events are not drawn on the map.
Method
Every U4B telemetry frame (callsign like 1A4UOX) is paired with the regular frame sent two minutes earlier on the same frequency and heard by the same receivers. Together they give a 6-character locator and altitude. No channel registry is needed: band, start minute and the id13 characters identify the channel.
A fix is fake if the balloon would have to fly faster than 300 km/h from its last good fix, or if a solar tracker reports a position where the sun is down. Ground stations that happen to share a frequency are dropped because they never move. A run of six moving, consistent fixes is accepted as a real jump.
The real position during spoofing is interpolated on the great circle between the last good fix before and the first good fix after the event (up to 12 h apart). Cells are Maidenhead squares, 2° × 1°. Data: wspr.live, updated hourly. An estimate from amateur data, not an official source.
Our ADS-B receiver (readsb / tar1090) logs every ADS-B v2 aircraft with a GPS position. Degraded = NACp < 8 (position error over ~93 m), counted per aircraft and hour in cells of 0.25° × 0.4°; orange from 2 %, dark from 10 % of aircraft. Aircraft that report poor accuracy everywhere (old avionics) are ignored. Compare with gpsjam.org and SkAI, which use the same signal from global networks.
To see beyond our own receivers, the server polls the open APIs of adsb.fi and adsb.lol (data ODbL) around the globe: Poland and its neighbours every 5 minutes, the rest of the world in a loop of about 30 minutes. Same rule (NACp < 8), cells of 0.5° × 0.75°, counted in aircraft-hours. Shown with thinner outlines; switch it off to see only our receivers. Empty areas – Russia, Belarus, much of Central Asia, China and Africa – mean that almost no volunteer ground receivers feed these networks there (in Russia and Belarus sharing such data has been risky since 2022), not that nobody flies. Flightradar24 fills those gaps with satellite ADS-B and positions estimated from flight plans; we deliberately don't, because both would hide or fake the very GPS errors this map looks for.