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.
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.
Detect when a transmission arrives in a continuous stream of samples using known patterns and correlation.
Determine where the transmission begins and where the receiver should make symbol decisions.
See what oscillator mismatch does to received symbols and learn why frequency synchronization matters.
Detection, timing, frequency alignment, framing and control turn the idealized radio from Course 02 into a practical receiving system.
Course 02 — Build Radios, or equivalent comfort with bits, symbols, modulation and basic detection.
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.
Every new technique answers a problem the receiver encounters when it is no longer handed perfect timing and frequency information.
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.
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.
Introduce carrier-frequency offset and watch the constellation rotate. Estimate and correct frequency mismatch so the receiver can make stable symbol decisions.
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.
Turn individual DSP functions into receiver behavior: SEARCH → DETECT → SYNC → RECEIVE → RECOVER → SEARCH. Introduce state and control only where the radio needs them.
Use GNU Radio and lightweight Python where useful to connect detection, synchronization, framing and message recovery into one working system.
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.
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.
Hide a known pattern inside noise and slide it through time. Use correlation to turn “somewhere in the samples” into a clear detection peak.
Move the sampling instant across a symbol and observe how the decision quality changes. Develop intuition for symbol timing before implementing recovery.
Add carrier-frequency offset and watch received symbols rotate. Adjust the mismatch and connect rotation rate to oscillator error.
Create a simple preamble, header and payload. Send different payload lengths and make the receiver use the packet structure rather than hard-coded assumptions.
Implement the SEARCH → DETECT → SYNC → RECEIVE → RECOVER sequence and observe how data processing and control work together.
Change arrival time or carrier offset and watch an ideal receiver fail. Add the appropriate recovery mechanism and verify that it works again.
Connect the complete receiver chain and verify that an arriving packet becomes a recovered human-readable message.
Exchange an OTA message between SDRs. The transmitter sends when it chooses; the receiver finds the packet, synchronizes and displays the recovered message.
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?
Course 03 turns the digital radio from Course 02 into a practical receiver that can detect, synchronize and recover real transmissions.
Join the course