Welcome to the Radio Hacking Village
Never touched an SDR before? Perfect. Start here, we'll guide you through 3 hands-on activities that take you from "What's a Signal?" to actually decoding radio.
📚 The Basics
Before we dive into hands-on activities, let's understand the fundamentals of how information travels through radio waves.
🌟 The Big Picture: Encoding vs Modulation
🔢 ENCODING
What: How we represent information as bits (digital)
Examples:
- Text → ASCII → Binary
- Audio → MP3 → Binary
- Error correction codes
📡 MODULATION
What: How we put those bits onto a radio wave (analog)
Examples:
- Amplitude changes (AM)
- Frequency changes (FM)
- On/Off switching (OOK)
🌊 What is Modulation?
Radio waves have 3 properties we can change to encode information:
1. Amplitude
Height of the wave
/\ /\
/ \ / \
/ \ / \
\/
2. Frequency
How fast it oscillates
/\/\/\/\/\/\ (fast)
/\ /\ (slow)
\ / \ /
\/ \/
3. Phase
Where in cycle it starts
/\ /\ (0°)
\ / \
\ / \
/\ /\ (shifted)
/ \ / \
Carrier wave → Wiggle it → Receiver detects wiggling → Extract information
📻 Common Modulation Schemes
AM (Amplitude Modulation)
Changes: Height of wave
Used for: AM radio, aviation
Note: Simple but noise-sensitive
FM (Frequency Modulation)
Changes: Oscillation speed
Used for: FM radio, two-way radios
Note: More noise-resistant than AM
OOK (On-Off Keying)
Changes: Signal ON or OFF
Used for: Key fobs, garage doors, IoT
Note: Simplest digital modulation
FSK (Frequency Shift Keying)
Changes: Frequency hops between values
Used for: Pagers, old modems
Note: Good noise resistance
PSK (Phase Shift Keying)
Changes: Phase at symbol boundaries
Used for: Satellite, WiFi, GPS
Note: Efficient but complex
🔢 What is Encoding?
Encoding = Representing information as bits (happens before modulation)
Source Encoding
- Text: ASCII, UTF-8
- Images: JPEG, PNG
- Audio: MP3, WAV
Channel Encoding
(Error Correction)
- Parity bits
- Hamming codes
- Reed-Solomon
- LDPC
Line Coding
- NRZ: 0=low, 1=high
- Manchester: Mid-bit transition
- Differential: Change=1
🔗 The Complete Signal Chain
📤 Transmission
📥 Reception
🔧 Hands-On Activities
Time to get your hands dirty! These 3 activities will take you from zero to decoding real signals.
📻 Activity 1: Decode FM with GQRX
What you'll do:
- Step 1: Download and install GQRX (see Resources below)
- Step 2: Download the FM radio IQ file:
mumbai-10s-10M-92.3-8-10-25.iq
10-second recording from Mumbai FM broadcast
Download FileSample Rate10 MSPS(10 million samples/second)Center Frequency92.3 MHz(FM radio band) - Step 3: Open the file in GQRX (set sample rate to 10 MSPS)
- Step 4: Select FM demodulator (Wideband FM)
- Step 5: Listen to the decoded audio!
What you learned: GQRX automatically performs all the demodulation steps for you. But what's happening under the hood?
🔗 Activity 2: Decode FM with GNURadio Flowgraph
What you'll do:
- Step 1: Install GNURadio Companion (see Resources)
- Step 2: Build a flowgraph: File Source → Low Pass Filter → Quadrature Demod → Audio Sink
- Step 3: Use the same FM IQ file from Activity 1:
mumbai-10s-10M-92.3-8-10-25.iq
Same 10-second recording from Mumbai FM broadcast
Download FileSample Rate10 MSPS(10 million samples/second) - Step 4: Set File Source sample rate to 10 MSPS
- Step 5: Run your flowgraph and hear the SAME audio!
🐍 Activity 3: OOK Signals with Python
What you'll do:
- Step 1: Install Python, NumPy, Matplotlib, Jupyter (see Resources)
- Step 2 - Part A: Run the generation notebook to create an OOK signal
generate_ook_signal.ipynb
Jupyter notebook to generate OOK signals with hidden messages
Download NotebookTypeJupyter Notebook(Python + NumPy)OutputComplex32 IQ file- This creates a complex32 IQ file with a hidden message
- Step 3 - Part B: Run the decoder notebook to extract the message
decode_ook_signal.ipynb
Jupyter notebook to decode OOK signals and extract hidden messages
Download NotebookTypeJupyter Notebook(Python + SciPy)TechniquesDSP + Demodulation- Learn threshold detection, baud rate estimation, bit extraction
🏆 Capture The Signal CTF
Ready to test your skills? Join our Capture The Flag competition!
📡 Connect to the CTF Network
c0c0n_Grand_1
c0c0n@Grand#1
http://10.1.0.24/
🛠️ Resources
Essential tools and learning resources for your RF/SDR journey.
📦 Essential Tools
📊 GQRX
Software Defined Radio receiver with real-time spectrum analysis
🔗 GNURadio Companion
Visual signal processing framework for building custom demodulators
🔧 Specialized GNURadio Modules
Advanced out-of-tree (OOT) modules for specific protocols - useful for CTF challenges!
📡 gr-rds
RDS (Radio Data System) decoder for FM radio - extracts text, station info, and metadata
💡 Useful for decoding FM radio data streams
🛰️ gr-dvbs2rx
DVB-S2 receiver for satellite TV signals - advanced digital video broadcasting
💡 For satellite signal demodulation challenges
🔧 Custom DSP Tooling
As you advance, you can build custom tools for specialized signal processing:
🐍 Python Ecosystem
Best for: Rapid prototyping, learning, analysis
Key libraries:
- NumPy: Array operations and math
- SciPy: Signal processing functions
- Matplotlib: Visualization
- PySDR: SDR-specific tools
⚡ CUDA (GPU Acceleration)
Best for: High-bandwidth processing, real-time applications
Use cases:
- FFT on large datasets
- Parallel filtering operations
- Real-time spectrum analysis
- ML-based signal classification
🔌 FPGA Development
Best for: Hardware-accelerated processing, ultra-low latency
Use cases:
- Custom hardware demodulators
- High-speed signal capture
- Deterministic real-time processing
- SDR hardware development
Python for learning and prototyping → CUDA for performance → FPGA for dedicated hardware
📚 Learning Resources
🎓 Video Courses
Mike Ossmann's SDR Course
The definitive introduction to SDR
Balint Seeber's SDR Tutorials
Advanced SDR techniques and demonstrations
GNURadio Tutorials
Official tutorials and examples
📖 Written Resources
PySDR Online Textbook
Python-focused SDR learning
Daniel Estevez's Blog
Satellite decoding, deep technical analysis, signal processing
The Scientist and Engineer's Guide to DSP
Comprehensive DSP reference
RTL-SDR Blog
Tutorials and hardware guides
💬 Community & Events
GRCon (GNURadio Conference)
Annual conference for SDR community
Reddit r/RTLSDR
Active community for SDR enthusiasts
GNURadio Mailing Lists
Technical discussions and support