From GNU Radio
Revision as of 17:46, 14 May 2020 by Duggabe (talk | contribs) (add flowgraph)
Jump to: navigation, search

DRAFT 2nd REVISION Guided_Tutorial_Hardware_Considerations


One of the more basic (and also incredibly useful) things you can do in GNU Radio with a receiver is to create a software radio spectrum analyzer. This is also a great first step because it will verify that your hardware is working correctly. Later we will create a broadcast FM receiver.


What Will I Need?

There is a large and growing number of vendors who provide hardware with GNU Radio drivers.They span from very cheap ($20) receivers to very high-performance tens-of-thousands-of-dollars systems. Parameters for four of the most popular devices are presented below. Other devices are listed in Hardware.

Creating a Software Radio Spectrum Analyzer

Using gnuradio-companion (GRC) and the following Block descriptions, build this flowgraph.

HW tutorial fg.png

Parameters For Popular Devices

This example uses an Ettus Research USRP B200 and uses the USRP Hardware Driver (UHD).

  • The USRP B200 provides a fully integrated, single board Universal Software Radio Peripheral platform with continuous frequency coverage from 70 MHz to 6 GHz. In order to use UHD blocks, you must have UHD installed. See Installing the USRP.
    • General Tab
      • Output Type: Complex float32
      • Wire Format: Automatic
      • Stream args: (blank)
      • Stream channels: []
      • Device Address: "serial=xxxxxx" (supply your serial number)
      • Device Arguments: ""
      • Sync: No Sync
      • Clock Rate (Hz): Default
      • Num Mboards: 1
      • Mb0: Clock Source: Default
      • Mb0: Time Source: Default
      • Mb0: Subdev Spec: (blank)
      • Num Channels: 1
      • Samp rate (sps): samp_rate
    • Advanced Tab
      • Show LO Controls: False
    • RF Options Tab
      • Ch0: Center Freq (Hz): tuning
      • Ch0: AGC: Disabled
      • Ch0: Gain Value: rf_gain
      • Ch0: Gain Type: Absolute (dB)
      • Ch0: Antenna: TX/RX
      • Ch0: Bandwidth (Hz): 500000

  • The ADALM-PLUTO (PlutoSDR) is a portable, self-contained RF learning module which is supported by GNU Radio source and sink blocks. It can operate from 70MHz to 3.8GHz. The source and sink blocks are created by an 'Industrial I/O' module. See for details.
    • IIO context URI: "ip:" (without the quotes)
    • LO Frequency: tuning
    • Sample Rate: samp_rate
    • RF Bandwidth: 500000
    • Buffer size: 16384
    • Quadrature: True
    • RF DC Correction: True
    • BB DC Correction: True
    • Gain Mode (Rx1): Manual
    • Manual Gain (Rx1)(dB): rf_gain
    • Filter: (leave blank)
    • Filter Auto: True

  • The RTL-SDR is a receive-only, low-cost, self-contained RF signal tuner supported by GNU Radio. There are several varieties of this device; the one used in this section is the V.3 Model. The full description is RTL2832U R820T2 TCXC + BIAS T + HF. The device has a frequency range of 500 kHz to 1766 MHz, with operation from 500 kHz to 24 MHz in direct sampling mode. The source block is created by an Out of Tree module. See for details.
    • Output Type: Complex Float32
    • Device Arguments: rtl=0
    • Sample Rate (sps): samp_rate
    • Ch0: Frequency (Hz): tuning
    • Ch0: RF Gain (dB): rf_gain
    • Ch0: IF Gain (dB): 20
    • Ch0: BB Gain (dB): 20
    • Ch0: Bandwidth (Hz): 200000

  • The FunCube Pro+ is a receive only USB "dongle" with a range of 150kHz to 240MHz and 420MHz to 1.9GHz. The source block is created by an Out of Tree module. See for details.
    • Device Name: (see Audio_Source#Device_Name for details)
    • Unit: 1
    • Lna enable, disable: 1 (enables low noise amplifier)
    • Mixer gain enable, disable: 1
    • Frequency (Unit Hz): tuning
    • Frequency corr. (ppm): 0 (frequency correction in parts per million)
    • If gain: rf_gain

Tuning and Using the Spectrum Analyzer

Set the following parameters in the QT GUI Sink

  • Center Frequency (Hz): tuning
  • Bandwidth (Hz): samp_rate
  • Show RF Freq: Yes

The analyzer can be tuned with the Frequency control widget. If you check the "Display RF Frequencies" box in the run-time GUI window, then the scale on the 'Frequency Display' and 'Waterfall Display' tabs will show the actual frequencies with the tuned frequency in the center.

Building an FM Radio Receiver

Now that you have a basic receiver application running with a real-time display of your received data, let's build a useful application! Leave your current flowgraph in place. We will simply add more functionality rather than replacing what is already there.

Choose the flowgraph below for your hardware device.


USRP FM fg.png


Pluto FM fg.png

RTL-SDR dongle

RTLSDR receive fg.png

FunCube Pro+

FunCube FM fg.png