A Primer on Radio Signals
30 Jan 2025Introduction
Radio signals surround us every day—whether it’s FM radio in your car, WiFi on your laptop, or Bluetooth connecting your phone to wireless headphones. These signals are all based on the same fundamental principles: frequency, modulation, and bandwidth.
In today’s article, I want to go through some of the fundamentals:
- How do radio signals travel through the air?
- What is the difference between AM and FM?
- How can multiple signals exist without interfering?
- What is digital modulation (FSK & PSK), and why does it matter?
- How can we capture and transmit signals using HackRF?
By the end of this article, we should be running some experiments with our own software defined radio devices.
Getting Setup
Before getting started in this next section, you’ll want to make sure that you have some specific software installed on your computer, as well as a software defined radio device.
I’m using a HackRF One as my device of choice as it integrates with all of the software that I use.
Make sure you have the following packages installed:
hackrf
gqrx
gnuradio
Create yourself a new python project and virtual environment, and install the libraries that will wrap some of these tools to give you an easy to use programming environment for your software defined radio.
The output of some of these examples are graphs, so we use matplotlib
to save them to look at later.
Be Responsible!
A note before we get going - you will be installing software that will allow you to transmit signals that could potentially be dangerous and against the law, so before transmitting:
- Know the laws – Unlicensed transmission can interfere with emergency services.
- Use ISM Bands – 433 MHz, 915 MHz, 2.4 GHz are allowed for low-power use.
- Start in Receive Mode – Learning to capture first avoids accidental interference.
Basics of Radio Waves
What is a Radio Signal?
A radio signal is a type of electromagnetic wave that carries information through the air. These waves travel at the speed of light and can carry audio, video, or digital data.
Radio waves are defined by:
- Frequency (Hz) – How fast the wave oscillates.
- Wavelength (m) – The distance between peaks.
- Amplitude (A) – The height of the wave (strength of the signal).
A high-frequency signal oscillates faster and has a shorter wavelength. A low-frequency signal oscillates slower and has a longer wavelength.
Since radio waves travel at the speed of light, their wavelength (\(\lambda\)) can be calculated using:
\[\lambda = \frac{c}{f}\]Where:
- \(\lambda\) = Wavelength in meters
- \(c\) = Speed of light ~(\(3.0 \times 10^8\) m/s)
- \(f\) = Frequency in Hz
What is Frequency?
Frequency is measured in Hertz (Hz), meaning cycles per second. You may have heard of kilohertz, megahertz, and gigahertz. These are all common frequency units:
Unit | Hertz |
---|---|
1 kHz (kilohertz) | 1,000 Hz |
1 MHz (megahertz) | 1,000,000 Hz |
1 GHz (gigahertz) | 1,000,000,000 Hz |
Every device that uses radio has a specific frequency range. For example:
- AM Radio: 530 kHz – 1.7 MHz
- FM Radio: 88 MHz – 108 MHz
- WiFi (2.4 GHz Band): 2.4 GHz – 2.5 GHz
- Bluetooth: 2.4 GHz
- GPS Satellites: 1.2 GHz – 1.6 GHz
Each of these frequencies belongs to the radio spectrum, which is carefully divided so that signals don’t interfere with each other.
What is Bandwidth?
Bandwidth is the amount of frequency space a signal occupies.
A narrowband signal (like AM radio) takes up less space. A wideband signal (like WiFi) takes up more space to carry more data.
Example:
- AM Radio Bandwidth: ~10 kHz per station
- FM Radio Bandwidth: ~200 kHz per station
- WiFi Bandwidth: 20–80 MHz (much larger, more data)
The more bandwidth a signal has, the better the quality (or more data it can carry).
How Can Multiple Signals Exist Together?
One analogy you can use is imagining a highway—each lane is a different frequency. Cars (signals) stay in their lanes and don’t interfere unless they overlap (cause interference). This is why:
- FM stations are spaced apart (88.1 MHz, 88.3 MHz, etc.).
- WiFi has channels (1, 6, 11) to avoid congestion.
- TV channels each have a dedicated frequency band.
This method of dividing the spectrum is called Frequency Division Multiplexing (FDM).
Using the following python code, we can visualise FDM in action by sweeping the FM spectrum:
Running this code gave me the following resulting plot (it will be different for you depending on where you live!):
Each sharp peak that you see here represents an FM station at a unique frequency. These are the lanes.
Understanding Modulation
What is Modulation?
Radio signals don’t carry useful information by themselves. Instead, they use modulation to encode voice, music, or data.
There are two main types of modulation:
- Analog Modulation – Used for traditional radio (AM/FM).
- Digital Modulation – Used for WiFi, Bluetooth, GPS, and modern systems.
AM (Amplitude Modulation)
AM works by varying the height (amplitude) of the carrier wave to encode audio.
As an example, the carrier frequency stays the same (e.g., 900 kHz), but the amplitude changes based on the sound wave.
AM is prone to static noise (because any electrical interference changes amplitude).
You can capture a sample of AM signals using the hackrf_transfer
utility that was installed on your system:
This will capture AM signals at 900 kHz into a file for later analysis.
We can write some python to capture an AM signal and plot the samples so we can visualise this information.
Running this code should give you a plot of what’s happening at 693 MHz:
The plot above represents the amplitude envelope of a real AM radio transmission.
- The X-axis represents time, while the Y-axis represents amplitude.
- The variations in amplitude correspond to the audio signal encoded by the AM station.
FM (Frequency Modulation)
FM works by varying the frequency of the carrier wave to encode audio.
As an example, the amplitude stays constant, but the frequency changes based on the audio wave.
FM is clearer than AM because it ignores amplitude noise.
You can capture a sample of FM signals with the following:
This will capture an FM station at 100.3 MHz.
We can write some python code to capture and demodulate an FM signal as well:
If you pick a frequency that has a local radio station, you should get a strong signal like this:
Unlike AM, where the signal’s amplitude changes, FM signals encode audio by varying the frequency of the carrier wave.
The graph above shows the frequency deviation over time:
- The X-axis represents time, showing how the signal changes.
- The Y-axis represents frequency deviation, showing how much the carrier frequency shifts.
- The spikes and variations represent audio modulation, where frequency shifts encode sound.
If your FM demodulation appears too noisy:
- Try tuning to a stronger station (e.g., 100.3 MHz).
- Increase the sample rate for a clearer signal.
- Apply a low-pass filter to reduce noise in post-processing.
Bandwidth of a Modulated Signal
Modulated signals require bandwidth (\(B\)), and the amount depends on the modulation type.
AM
The total bandwidth required for AM signals is:
\[B = 2f_m\]Where:
- \(B\) = Bandwidth in Hz
- \(f_m\) = Maximum audio modulation frequency in Hz
If an AM station transmits audio up to 5 kHz, the bandwidth is:
\[B = 2 \times 5\text{kHz} = 10\text{kHz}\]This explains why AM radio stations typically require ~10 kHz per station.
FM
The bandwidth required for an FM signal follows Carson’s Rule:
\[B = 2 (f_d + f_m)\]Where:
- \(f_d\) = Peak frequency deviation (how much the frequency shifts)
- \(f_m\) = Maximum audio frequency in Hz
For an FM station with a deviation of 75 kHz and max audio frequency of 15 kHz, the total bandwidth is:
\[B = 2 (75 + 15) = 180 \text{kHz}\]This explains why FM radio stations require much more bandwidth (~200 kHz per station).
Digital Modulation
For digital signals, it’s important to be able to transmit binary data (1’s and 0’s). These methods of modulation are focused on making this process much more optimal than what the analog counterparts could provide.
What is FSK (Frequency Shift Keying)?
FSK is digital FM—instead of smoothly varying frequency like FM radio, it switches between two frequencies for 0’s and 1’s. This method of modulation is used in technologies like Bluetooth, LoRa, and old-school modems.
Example:
- A “0” might be transmitted as a lower frequency (e.g., 915 MHz).
- A “1” might be transmitted as a higher frequency (e.g., 917 MHz).
- The receiver detects these frequency changes and reconstructs the binary data.
What is PSK (Phase Shift Keying)?
PSK is digital AM—instead of changing amplitude, it shifts the phase of the wave. This method of modulation is used in technologies like WiFi, GPS, 4G LTE, Satellites.
Example:
- 0° phase shift = Binary 0
- 180° phase shift = Binary 1
- More advanced PSK (like QPSK) uses four phase shifts (0°, 90°, 180°, 270°) to send two bits per symbol (faster data transmission).
Wrapping Up
In this post, we explored the fundamentals of radio signals—what they are, how they work, and how different modulation techniques like AM and FM allow signals to carry audio through the air.
This really is only the start of what you can get done with software defined radio. Here are some further resources to check out:
- “The ARRL Handbook for Radio Communications” – A comprehensive guide to radio theory.
- Great Scott Gadgets HackRF One – The official HackRF documentation.
- RTL-SDR Blog – A great site for learning SDR with practical tutorials.
- “SignalsEverywhere” – Video tutorials on SDR and radio hacking.