GNU Radio - Listen to FM Radio

Tools Used for this Guide

thumbnail for this post

Prerequisite - Have GNU Radio installed and setup with libraries for your SDR.

Working GNU Radio project is available here:

A software defined radio captures IQ samples for our computer to process. In this guide, we will capture a slice of spectrum that includes an FM radio transmission, then demodulate that signal and turn it into audio for our computer.

The simplest FM radio consists of a few main elements:

  • signal source - our SDR
  • low pass filter
  • WBFM demodulator
  • audio sink / output

Tune frequency and gain

The first block is our source and we set the freqency and gain. In our example we set this to a slider that we can control in the running program.

We use the rational resampler block to convert to the sample rate typically used for FM. This block is used to convert from one sample rate to another as long as they can be related by a ratio: Fs_out = Fs_in x Interpolation / Decimation.

Filter data

The next step is to filter out frequencies other than the one we centered in the previous step. We will use a low pass filter block to accomplish this. This block is in the filters category. Set cutoff frequency to 100e3. This is because that is the standard band width for FM.

Process FM Signal

The final major compontent is the FM demodulator. This block can be found under the modulators menu. Connect this to an Audio Sink block (found in Audio) with Multiply const in between. Set the audio sink’s sample rate to 48Khz for most FM stations