FHSS — Frequency Hopping Spread Spectrum
A wartime communication cipher that hops across frequencies to survive jamming — invented by Hedy Lamarr in 1942, now the foundation of Bluetooth, WiFi, and military datalinks.
What is it?
FHSS spreads a signal across many frequencies by hopping between them in a pseudo-random sequence. The transmitter and receiver agree on the sequence (a shared secret). A jammer who doesn't know the sequence can only block a fraction of the signal — the rest gets through.
The invention has an amazing origin story: Hedy Lamarr, a Hollywood actress, and George Antheil, a composer, patented frequency hopping in 1942 as a way to guide torpedoes without enemy jamming. The idea was decades ahead of its time — the US Navy only adopted it in the 1960s, during the Cuban Missile Crisis. Today it's everywhere: Bluetooth, WiFi (802.11), GPS, and military datalinks like Link 16 and SINCGARS.
Concrete Example
Suppose the answer word is HOP (3 characters). Each character is sent multiple times on different frequencies:
LCG: x_i+1 = (1103515245 · x_i + 12345) mod 2^31, seed = 42 Hop schedule for HOP × 2 repetitions: hop 0: freq=17 → H (not jammed) ✓ hop 1: freq=23 → O (jammed) ✗ hop 2: freq=4 → P (not jammed) ✓ hop 3: freq=12 → H (not jammed) ✓ hop 4: freq=23 → O (jammed) ✗ (same channel, still jammed) hop 5: freq=9 → P (not jammed) ✓ Char 0 (H) received at hops 0, 3 → both succeeded → H Char 1 (O) received at hops 1, 4 → both jammed → need 3rd redundancy Char 2 (P) received at hops 2, 5 → both succeeded → P
The agent simulates the LCG from the seed, checks each hop against jammed channels, groups surviving transmissions by char_idx (hop_idx % N), and assembles the word.
How It Works
- Synchronization: Transmitter and receiver share the same LCG seed. They hop together.
- Hopping: At each time slot, both switch to frequency
f = LCG(slot) % N. - Jamming: A jammer broadcasts noise on a subset of frequencies. If the hop lands on a jammed channel, the symbol is lost.
- Redundancy: Each character is transmitted R times on different hops. If one hop is jammed, the others may survive.
- Recovery: The receiver groups surviving transmissions by character index, fills gaps from the redundant copies, and reassembles the word.
Solving The Puzzle
def solve_fhss(data):
# Simulate LCG to verify hop sequence
a, c, m = data["lcg_a"], data["lcg_c"], data["lcg_m"]
jammed = set(data["jammed_channels"])
n = data["n_chars"]
# Group surviving chars by character index
chars = [None] * n
for t in data["transmissions"]:
if t["jammed"]:
continue # lost to jamming
idx = t["char_idx"]
chars[idx] = t["char"] # any surviving copy works
return "".join(chars).lower()
Difficulty Table
| Level | What Happens | Time Estimate |
|---|---|---|
| 1 | 2x redundancy, 18% jamming | <10s |
| 2-3 | 21-24% jamming, 2x redundancy sufficient | 15-30s |
| 4-5 | 27-30% jamming, 3x redundancy needed for gaps | 30-60s |
| 6-7 | 33-36% jamming, 32 channels, 3x redundancy may lose a character | 1-3m |
Real-World Applications
- Bluetooth: Jumps across 79 channels in the 2.4 GHz band, 1,600 hops/second
- WiFi 802.11: Uses FHSS in the original standard; modern WiFi uses DSSS/OFDM but FHSS lives in Bluetooth coexistence
- Link 16: NATO tactical datalink, 51 frequencies in the L-band, 77,000 hops/second
- SINCGARS: US Army single-channel ground-air radio system with FHSS
- GPS: Military P(Y) code uses a secret hopping pattern on L1/L2 frequencies
- Torpedo guidance: The original application — Lamarr and Antheil's 1942 patent for radio-controlled torpedoes using frequency hopping