Passive Bistatic Radar: Monitoring ROTHR from Home
Over-The-Horizon Radar (OTHR) stations transmit powerful HF signals that bounce off the ionosphere to detect targets far beyond the radar horizon. The US Navy’s AN/TPS-71 Relocatable Over-the-Horizon Radar (ROTHR) is one such system. What most people don’t realize is that these signals are readily receivable by anyone with a shortwave radio and a bit of signal processing know-how. This project documents my efforts to receive, process, and extract radar data from ROTHR transmissions using nothing more than web-based SDR receivers and custom software.
What is ROTHR?
The AN/TPS-71 ROTHR is a bistatic over-the-horizon radar operated by the US Navy. It uses Frequency Modulated Continuous Wave (FMCW) transmissions in the HF band (5-28 MHz) to detect aircraft, ships, and other targets at ranges of 500 to 1,600 nautical miles, well beyond the line-of-sight limit of conventional radar. The radar achieves this by bouncing its signal off the ionosphere.
ROTHR is a bistatic system, meaning the transmitter and receiver are separated by a significant distance. The system operates from several known sites including Virginia (primary target for this project), Texas, and Puerto Rico. The Virginia transmitter is located near New Kent and covers the Caribbean with a 64-degree beam wedge.
The key characteristic of ROTHR signals is their FMCW waveform: a linear frequency sweep (chirp) that repeats at a fixed rate, typically 25 to 50 sweeps per second with bandwidths of 20-100 kHz. These chirps are easily visible on a wideband waterfall display as distinctive diagonal lines.
The Concept: Passive Bistatic Radar
Passive bistatic radar exploits existing transmitters (called “illuminators of opportunity”) rather than transmitting its own signal. By receiving the radar’s transmissions with a separate receiver at a known location, it’s possible to compute a range-Doppler map that reveals targets in the radar’s coverage area.
The principle is elegant: the received signal contains both the direct path from the transmitter (via ground wave or skywave) and delayed, Doppler-shifted echoes from targets. By applying a dechirp process (mixing the received signal with a reference chirp) followed by a two-dimensional FFT, you separate returns by both range (time delay) and Doppler (velocity). The result is a range-Doppler map where aircraft appear as bright points against a background of sea clutter and ionospheric backscatter.
The Setup
The entire system runs on a PC with no dedicated radio hardware. Instead, I use publicly accessible WebSDR receivers connected via the internet:
- RX1 (WebSDR, Elizabeth City, NC) — Located approximately 100 km from the ROTHR transmitter at New Kent, VA. This close proximity means RX1 receives a strong direct-path ground wave signal, which provides the timing reference needed for dechirp processing.
- RX2 (WebSDR, Fork Union, VA) — Located approximately 130 km from the transmitter. RX2 provides a second observation angle for bistatic triangulation. Both receivers are within ground wave range of the transmitter, giving strong reference signals on both channels.
The illuminator is the US Navy AN/TPS-71 ROTHR transmitter at New Kent, VA (37.5°N, 76.9°W). This site covers the Caribbean with a 64-degree beam wedge aimed south/southeast, with a nominal range of 500 to 1,600 nautical miles.
Using two receivers at different locations enables bistatic triangulation: each receiver produces an iso-range ellipse for a given target, and the intersection of these ellipses yields a geographic bearing for the target. This is the passive radar equivalent of having your own receiver array.
Signal Processing Pipeline
1. IQ Capture
The WebSDR receivers stream raw IQ data via WebSocket connections. The tracker captures 10-20 seconds of complex baseband samples at 12 kHz, centered on the known ROTHR frequency. GPS timestamps embedded in the data stream provide precise timing for phase alignment.
2. Dechirp
The FMCW chirp is removed by mixing the captured signal with a synthetic reference chirp matched to the radar’s sweep parameters (rate, bandwidth, period). This converts each target return from a swept-frequency signal into a constant-frequency tone whose frequency is proportional to range. The direct-path signal (ground wave at both RX1 and RX2) appears as a strong reference peak near zero beat frequency.
3. Range-Doppler Map
A two-dimensional FFT is applied across the dechirped sweeps. The first FFT (per sweep) resolves range. The second FFT (across sweeps) resolves Doppler shift, which corresponds to the target’s radial velocity component. The result is a 2D map with range on one axis, Doppler frequency on the other, and signal power as intensity.
Typical resolution at 20 kHz bandwidth and 512 sweeps: 15 km range resolution and 0.10 Hz Doppler resolution (about 10 seconds of integration time).
4. Processing Modes
The tracker supports three signal processing modes, cycled with a single keystroke:
- DECHIRP — Standard FMCW dechirp processing. Best for continuous-wave (100% duty cycle) signals.
- GATED — Zeros the TX-off gaps before range FFT. Provides approximately +2.7 dB SNR improvement on pulsed (FMOP) signals.
- PCOMP (Pulse Compression) — True matched filter processing. Detects active pulse segments and cross-correlates with a transmitted pulse template. Provides approximately +3.9 dB SNR improvement on FMOP signals at the cost of fewer range bins.
This matters because the same ROTHR transmitter uses different waveforms on different frequencies. Some are continuous FMCW (100% duty cycle), while others use FMOP (Frequency Modulation on Pulse) with varying duty cycles. The adaptive processing modes ensure the best possible target extraction regardless of waveform type.
ADS-B Correlation
To validate that the returns on the range-Doppler map are real aircraft and not noise or clutter, the tracker cross-references detected targets against live ADS-B (Automatic Dependent Surveillance-Broadcast) data from the OpenSky Network.
For each target detected on the RD map, the system computes the expected bistatic range and Doppler shift for every aircraft currently in the coverage zone, then matches by proximity in range-Doppler space. A good correlation shows a detected target at the same range and Doppler as a known aircraft. The best match recorded so far: AMX423 at a range difference of 1 km and Doppler difference of 0.0 Hz, a pixel-perfect match.
Typically 100-115 aircraft are in the coverage zone during daytime hours, providing ample opportunities for correlation.
The Tracker
The main tool is a real-time Python tracker application with a full graphical interface:
Display Features:
- Dual Range-Doppler Maps — Stacked RD maps for RX1 (top) and RX2 (bottom), with a dark radar colormap and adjustable power threshold
- Coverage Map — Geographic display with coastline overlays, bistatic range ellipses, TX/RX positions, and target bearings
- Track Management — Designate targets on either RD map with Shift+Click, track them with glowing trails, and view callsign labels from ADS-B data
- Integration Control — Adjustable coherent integration from 1x to 128x, trading time resolution for SNR
- Clutter Filtering — Three modes: OFF, MTI (sweep differencing), and RD-FILT (zero-Doppler suppression preserving all sweeps)
Bearing Solver: The dual-receiver bearing solver computes the geographic intersection of two iso-range ellipses. Each ellipse represents all possible target locations at a given bistatic range from one TX-RX pair. The solver generates 720 points per curve, finds the closest intersection pairs, and plots the result as a gold star on the coverage map. The workflow is simple: designate the same target on both RD maps, and the bearing appears automatically.
Phase Relay: Each receiver’s ground wave direct-path lock establishes absolute GPS timing for each sweep boundary. This timing is computed once from the first good frame and held stable for the session. If a receiver loses its ground wave lock, the other can provide relayed timing. If RX2 is unavailable, the tracker falls back to single-receiver mode seamlessly.
Scanner
Finding active ROTHR frequencies is half the challenge. The frequencies hop with time of day and ionospheric conditions. A scanner module automates this by:
- Cycling through candidate HF frequencies using multiple SDR sources worldwide
- Applying dechirp detection (not just power detection) to identify genuine FMCW/FMOP signals
- Logging detections with sweep parameters (rate, bandwidth, SNR) for analysis
Confirmed active frequencies during this project include: 10472 kHz (evening/night), 11795 kHz (evening), 13784 kHz (daytime, strongest at 29 dB), 15146 kHz (daytime, best ADS-B correlation), and 18477 kHz (daytime, longer skip).
Ionospheric Considerations
OTHR fundamentally depends on ionospheric propagation, which introduces several challenges:
- Sea backscatter appears as a broad Doppler ridge from ocean surface currents. At 19908 kHz, a +1.4 Hz Doppler offset was observed, corresponding to radial ocean current velocities of 10-22 knots.
- Ionospheric clutter dominates at frequencies below about 12 MHz, where heavy backscatter can produce over 100 false tracks with zero ADS-B matches.
- Range extent covers approximately 1800 km (for 12 kHz capture bandwidth and a 20 kHz chirp). The Virginia ROTHR’s 500-1600 NM operational range fits comfortably within this window.
- Waveform variation is significant. The same ROTHR transmitter uses different waveforms on different frequencies: continuous FMCW (100% duty) on some, FMOP pulsed waveforms (25-55% duty) on others. The tracker’s adaptive processing modes handle this automatically.
What You Need to Try This
The beauty of this project is that it requires no dedicated radio hardware:
- A PC running Python (Windows, Linux, or macOS)
- Internet access to WebSDR receivers
- An ADS-B data source (OpenSky Network free API or similar)
- Knowledge of the illuminator’s sweep parameters (period, bandwidth)
The entire software stack is custom-built and open source. Based on the pioneering work of Christoph Mayer (hcab14) on KiwiSDR OTHR processing.
Results
The system has been operational since May 2026. Key results:
- Consistent detection of aircraft targets on multiple ROTHR frequencies
- ADS-B correlation rates confirming the vast majority of targets are real aircraft
- Successful dual-receiver bearing triangulation with the RX1/RX2 pair
- Detection of sea surface current signatures in backscatter Doppler
- Observation of multiple ROTHR waveform modes (FMCW, FMOP) across different frequencies
- Range-Doppler SNR exceeding 30 dB on strong daytime frequencies
Second Example: Mediterranean PLUTO II OTHR
The same techniques work with other OTHR systems worldwide. Below is a capture from monitoring a different OTHR illuminator in the Mediterranean region, using WebSDR receivers in Cyprus as the dual-RX pair. The coverage map shows the transmitter and receiver positions with bistatic range ellipses overlaid on the Mediterranean. A target has been designated on both RD maps and the bearing solver has computed a geographic fix (gold star labeled “#2 BEARING”). Note the 91 ADS-B aircraft in the coverage zone and the 32.7 dB SNR on this frequency.
This is an example of a movie created from a monitoring session of the PLUTO II OTH Radar on 11111kHz. In this Range-Doppler map, the backscatter curtain can be seen at 0Hz with a strong reflection region at around 2500km bistatic range. Many targets can be seen on either side of 0Hz coming in and out of the noise floor along with natural Ionospheric structures visible as well. Non-coherent integration was used to increase SNR and to bring out weak targets.

What started as an experiment in passive signal processing has become a fully functional bistatic radar tracker running from a home computer, using nothing but web-connected SDR receivers and some determination. The ionosphere makes a surprisingly capable radar mirror when you know how to listen.

