COURSE 03 · PRACTICAL DIGITAL RADIOS

Program
Radios.

Your first radio can carry information. Now make the receiver work without being told exactly when the message arrives. Learn how practical radios detect transmissions, synchronize, organize packets and recover messages on their own.

RECEIVER · SEARCH → RECOVER
INCOMING SAMPLES
CORRELATION
PACKETPREAMBLEHEADERPAYLOAD
FIND ME → TIME ME → TUNE TO MEDETECT → SYNC → RECEIVE

Make the receiver find the message.

Course 02 gave the receiver helpful assumptions. Course 03 removes them one at a time. The engineering challenge is no longer simply modulation—it is making a radio coordinate the jobs required to receive a transmission autonomously.

01

Find me

Detect when a transmission arrives in a continuous stream of samples using known patterns and correlation.

T

Time me

Determine where the transmission begins and where the receiver should make symbol decisions.

Δf

Tune to me

See what oscillator mismatch does to received symbols and learn why frequency synchronization matters.

The recurring question: “What must the receiver discover for itself?”

Detection, timing, frequency alignment, framing and control turn the idealized radio from Course 02 into a practical receiving system.

Recommended first

Course 02 — Build Radios, or equivalent comfort with bits, symbols, modulation and basic detection.

The practical receiver journey

Start with an uninterrupted stream of samples and finish with recovered information. Python and GNU Radio help implement the behavior; the radio engineering remains the subject.

Samples→
Detect→
Synchronize→
Frame→
Demodulate→
Recover→
Message

Course roadmap

Every new technique answers a problem the receiver encounters when it is no longer handed perfect timing and frequency information.

01

Where's my message?

Begin with a continuous stream of samples containing noise and an unknown arrival time. Introduce a recognizable preamble and use correlation to detect the transmission.

DETECT
02

When should I make a decision?

Separate frame timing from symbol timing. Learn why finding the packet is not enough—the receiver must also know where within each symbol to observe and decide.

TIMING
03

My oscillator isn't your oscillator

Introduce carrier-frequency offset and watch the constellation rotate. Estimate and correct frequency mismatch so the receiver can make stable symbol decisions.

CFO
04

What constitutes the message?

Give the transmission structure with a simple packet: preamble → header → payload. Use the header to describe what the receiver needs to know about the payload.

FRAMING
05

Who coordinates the receiver?

Turn individual DSP functions into receiver behavior: SEARCH → DETECT → SYNC → RECEIVE → RECOVER → SEARCH. Introduce state and control only where the radio needs them.

CONTROL
06

Program the radio

Use GNU Radio and lightweight Python where useful to connect detection, synchronization, framing and message recovery into one working system.

IMPLEMENT
07

Hello, RF World!

Transmit a packet over the air. The receiver must detect its arrival, synchronize, demodulate and display the recovered message without being told exactly when it was sent.

CAPSTONE

Give the radio less help.

Each lab removes another assumption from the Course 02 receiver. Interactive experiments make the failure visible first; implementation then teaches the receiver how to solve it.

LAB 01

Find the burst.

Hide a known pattern inside noise and slide it through time. Use correlation to turn “somewhere in the samples” into a clear detection peak.

LAB 02

Find the right instant.

Move the sampling instant across a symbol and observe how the decision quality changes. Develop intuition for symbol timing before implementing recovery.

LAB 03

Make the constellation spin.

Add carrier-frequency offset and watch received symbols rotate. Adjust the mismatch and connect rotation rate to oscillator error.

LAB 04

Build a packet.

Create a simple preamble, header and payload. Send different payload lengths and make the receiver use the packet structure rather than hard-coded assumptions.

LAB 05

Teach the receiver what to do next.

Implement the SEARCH → DETECT → SYNC → RECEIVE → RECOVER sequence and observe how data processing and control work together.

LAB 06

Break an assumption.

Change arrival time or carrier offset and watch an ideal receiver fail. Add the appropriate recovery mechanism and verify that it works again.

LAB 07

From samples to text.

Connect the complete receiver chain and verify that an arriving packet becomes a recovered human-readable message.

CAPSTONE

Hello, RF World!

Exchange an OTA message between SDRs. The transmitter sends when it chooses; the receiver finds the packet, synchronizes and displays the recovered message.

What you'll use

Radio implementationGNU Radio
Interactive intuitionMarimo + Python
Recommended knowledgeCourse 02
HardwareSDR for OTA labs

By the end, your receiver can find, synchronize to and recover a wireless message on its own.

Detect a transmission in a continuous stream of samples
Explain frame timing and symbol timing as distinct receiver problems
Recognize and correct basic carrier-frequency offset
Build and interpret a preamble, header and payload structure
Coordinate receiver behavior with simple state and control
Recover an OTA message without knowing exactly when it will arrive
UP NEXT · COURSE 04

Reverse Engineer Radios

Your receiver works because you designed both sides and know what to expect. What happens when you're handed a signal you've never seen before—with no flowgraph, packet definition or modulation parameters?

TAU WIRELESS ACADEMY

Ready to make your radio work on its own?

Course 03 turns the digital radio from Course 02 into a practical receiver that can detect, synchronize and recover real transmissions.

Join the course