The goal was a radio link that keeps working while someone is actively interfering with it. I built it in GNU Radio on Ettus USRP B200 software-defined radios, combining two modulations in each frame with frequency hopping across channels.
Before it can decode anything, the receiver has to detect each frame and synchronise to it, so the frame opens with a QPSK preamble that holds up at low signal-to-noise ratio (SNR), then switches to 16-QAM for the data.
Property
QPSK preamble
16-QAM payload
Bits per symbol
2
4
Constellation points
4
16
Role
Detection and synchronisation
Data
Why
Points far apart, so it survives low SNR
Twice the bits per symbol, so more throughput
Robustness is paid for only where it matters: if the receiver misses the preamble, it misses the whole frame.
Why frequency hopping beats a fixed jammer
The carrier hops between channels following a pattern that the transmitter and receiver share, so the receiver retunes in step with every hop.
A jammer parked on one channel only hits the part of the transmission that lands on that channel, not the whole link.
To cover every hop, the jammer has to spread its power across all the channels the link uses, which leaves less power on each one.
A jammer that does not know the pattern cannot tune ahead to the next channel.
What I built
A hybrid modulation scheme in GNU Radio: QPSK for preamble synchronisation, 16-QAM for high-throughput payload transmission.
On this page
FHSS on Ettus USRP B200 SDRs, with a hopping pattern shared by both ends, to keep the link stable under active interference.
The figure at the top shows simulated QPSK and 16-QAM constellations and an illustrative hopping pattern, not captured data.