Thursday, December 19, 2024

Designing FM Receiver Using GNU Radio and RTL-SDR Dongle

This article covers the designing of an FM receiver using GNU Radio software and RTL-SDR hardware on Ubuntu operating system (OS). With advancements in software-defined radio (SDR), more supports are available for SDR hardware to be used with computers. GNU Radio is a free software and provides signal processing capabilities. You can design the FM receiver using SDR with added features and functionalities, which are not available in basic radio receivers.

To design the FM receiver, you need RTL-SDR dongle (Fig. 1) with RTL chip, computer and GNU Radio live disk. GNU Radio Companion (GRC) is a block-based software design platform that makes it easy to work with radio systems by using only a block-like interface.

Fig. 1: RTL-SDR dongle (Source: Software Defined Radio using MATLAB & Simulink and the RTL-SDR First published by Strathclyde Academic Media, 2015. This revised edition published 2017 Authored by Robert W. Stewart, Kenneth W. Barlee, Dale S.W. Atkinson, and Louise H. Crockett)
Fig. 1: RTL-SDR dongle (Source: Software Defined Radio using MATLAB & Simulink and the RTL-SDR First published by Strathclyde Academic Media, 2015. This revised edition published 2017 Authored by Robert W. Stewart, Kenneth W. Barlee, Dale S.W. Atkinson, and Louise H. Crockett)

RTL-SDR dongle provides raw data to GNU Radio. All signal processing is performed using reconfigurable software. That is, GNU Radio is used for implementing the receiver by selecting signal processing blocks, which process the incoming signal from RTL-SDR dongle to demodulate FM signal and to get audio output from the computer speakers.

- Advertisement -

GNU Radio live disk

GNU Radio live disk provides options for quick and easy testing and experimentation with GNU Radio. The best part is that you do not need to change the settings in the system or the main OS. Drivers and support packages for RTL-SDR are preinstalled in GNU Radio disk, so it is convenient to work with the USB dongle with GNU Radio Companion.

A list of pre-installed SDR hardware drivers in GNU Radio live disk are given below.

- Advertisement -

1. Ettus Research UHD
2. Great Scott Gadgets HackRF products
3. Nuand BladeRF products
4. osmoSDR RTL-SDR driver
5. AirSpy

Various software are available for using the FM receiver in Windows OS, but these do not provide options for research work as available in GNU Radio. Windows-based GNU Radio is available, but it requires manual driver installation for hardware.

The live disk image based on Ubuntu with GNU Radio Companion can be downloaded from this link.

GNU Radio Website QR Code
Fig. 2: GNU Radio Website QR Code

QR code for the website is given in Fig. 2. Once the file is downloaded, you can easily create a DVD with GNU Radio Boot Support using any DVD burning software. During testing, Etcher software was used for burning the live disk image bootable DVD.

Working on GNU Radio

Boot using CD/DVD drive or USB drive as per your bootable media. The process will take around five minutes to complete the initial setup. Now, use GNU Radio for signal processing applications. GNU Radio icon will appear on the desktop, as shown in Fig. 3.

GNU Radio live disk desktop and icon
Fig. 3: GNU Radio live disk desktop and icon

Test RTL-SDR support in GNU Radio live disk environment. Check proper working of RTL-SDR dongle with the system. For that, add RTL-SDR block from the library of tool box in GNU Radio, and a waterfall block or scope block (steps for designing are given in the next section). Then, provide centre frequency in RTL-SDR block. Insert the dongle in your computer and run the flowgraph (or program) in GNU Radio. Test flow chart is shown in Fig. 4.

Testing RTL-SDR support in GNU Radio
Fig. 4: Testing RTL-SDR support in GNU Radio

The antenna is a standard antenna provided with RTL-SDR dongle with a magnetic base, as shown in Fig. 5. It provides acceptable FM reception in frequency range of 88MHz to 108MHz. Place the antenna at a proper place. If you place it close to the chargers, cellphones or electric sockets, some disturbances may be detected while testing the receiver.

Antenna used in testing radio receiver
Fig. 5: Antenna used in testing radio receiver

Steps for designing FM receiver in GNU Radio

Generate, execute and kill are three important tools in GNU Radio software. The program flowgraph consists of various blocks.

RTL-SDR block as signal source

Add RTL-SDR source from the tool library in GNU Radio Companion (GRC). It is available on the right side of the window. Then, change the parameters of the block by double clicking it as shown in Table I.

RTL-SDR block settings window
Fig. 6: RTL-SDR block settings window

Rational resampler block

This block when added to the design provides signal changes and makes it suitable to provide as input to further blocks. Rational resampler block settings are shown in Fig. 7, and its parameters are given in Table II.

Rational resampler block settings with 1 interpolation
Fig. 7: Rational resampler block settings with 1 interpolation

Low-pass filter block

Low-pass filter block is added after setting rational resampler block. Values of various parameters for a low-pass filter are given in Table III.

Low-pass filter block settings
Fig. 8: Low-pass filter block settings

WBFM receive block

This block is placed to extract demodulated signal from incoming signal. Parameters and values are given in Table IV.

WBFM block
Fig. 9: WBFM block

Rational resampler after WBFM receive block

This block provides functionality of changing the signal to make it suitable for audio output block. Values are given in Table V.

Rational resampler block with 48 interpolation
Fig. 10: Rational resampler block with 48 interpolation

Multiply constant block

This block is used for controlling the audio volume using GUI of FM receiver implemented using GNU Radio. Details of multiply constant block are given in Table VI.

Multiply constant block for volume settings
Fig. 11: Multiply constant block for volume settings

Audio sink block

This block provides audio output signal at the computer speakers. Details of audio sink block are shown in Fig. 12 and also listed in Table VII.

Audio sink block value and settings
Fig. 12: Audio sink block value and settings

Run implemented receiver using GNU Radio

The receiver is designed using two sliders for controlling frequency and volume. Complete GRC code (FM_Receiver_gnu.grc) is shown in Fig. 13, and FM receiver window is shown in Fig. 14. Frequency range supported is 88MHz to 108MHz. The slider can set the frequency between 88MHz and 108MHz, with 0.1MHz step size. When the slider is used to control a value in runtime, give variable name as the slider identifying value in parameter of the particular block.

Radio receiver flowgraph designed in GNU Radio
Fig. 13: Radio receiver flowgraph designed in GNU Radio
FM receiver designed in GNU Radio interface
Fig. 14: FM receiver designed in GNU Radio interface

Download Source Folder


Madhuram Mishra is pursuing ME (digital communication) from NITTTR, Bhopal. He has keen interest in circuit design and Arduino boards.

1 COMMENT

  1. This worked like a charm. Only the fifth radio receiver that I’ve tried, but it’s the first I’ve been able to get working. For anyone trying to figure out radio station you’ve got in the area, it’s worth hooking up a QT Gui sink to the raw output of your antenna. That way you can look at the frequency demodulation and see where you’ve got spikes.

SHARE YOUR THOUGHTS & COMMENTS

EFY Prime

Unique DIY Projects

Truly Innovative Electronics

Electronics News

Latest DIY Videos

Electronics Components

Electronics Jobs

Calculators For Electronics