A quick guide for using hardware with GNU Radio

No hardware available?

GNU Radio can be used on its own without any hardware. GNU Radio has several blocks that can generate data or read/write from/to in different formats, like binary complex values or WAV-files. A lot of prerecorded examples exist that can be used to develop applications without need for expensive hardware. Also, you can ask on the mailing list if anyone has some data available if it's a common waveform.

Which hardware can be used with GNU Radio?

If you need to gather live real-world signals or output signals, several different possibilities exists:

  • Sound interface - cheap and easy
  • USRP - Opensource spinoff with RF frontends
  • Comedi - high quality framework for professional Data Acquisition and Output hardware
  • Perseus

Sound interface

Most computers nowadays are shipped with a built-in sound interface or sound card. 16 Bit resolution at 44.1 kHz (kSPS) and two channels is a long available level that you can expect. Virtually every operating system supports this hardware out of the box, and it's sufficient for a lot of DIY and hobby applications. You can expect stereo (2 channels) input and output.

If the quality of a built in sound interfaces are not very expensively built and introduce noise or show bad frequency characteristics or degraded resolution, that is dynamic range. Fortunately, high quality sound interfaces are offered, like professional digital recording equipment, with more than a dozen channels, up to 24bit resolution and 192kHz sampling rate. These interfaces can be connected internally via PCI bus or externally via USB.

The USRP Series by Ettus Research

During the development of GNU Radio, it turned out that no Open Source high speed interface was available. Ettus Research took to challenge to develop the "Universal Software Radio Peripheral" device. The family of hardware grew, now including different motherboards with USB or Gigabit Ethernet interfaces, possible sampling rates up to 100 MSPS, a range of front-ends for reception and transmission from 0Hz up to over 5.8GHz, as PC bound device or as standalone embedded device.

While the USRP device is very capable and flexible and well supported, for some application other interfaces may be more adequate. USRP devices can be used without GNU Radio as well without restriction of any kind.

All USRP devices use the same universal hardware driver (called the UHD driver), which is natively supported by GNU Radio (officially distributed since release 3.4.0). UHD software is developed as a separate project from GNU Radio, but all UHD devices can nicely and easily be used from within GNU Radio.

For more information read

Softrock-like Radio frequency interfaces

Stemming from the amateur radio Softrock (Digital) Direct Conversion devices a family of radio front-ends evolved. The common principle is a direct conversion device that complex mixes the RF signal to base band (a.k.a. audio frequency), using a standard stereo audio interface for input and output. The I and Q channel are mapped to stereo left and right. Advanced devices offer a interface for frequency control and other parameters.

Comedi

The comedi project aims to offer drivers for many different data acquisition devices. GNU Radio includes a component that uses this library, which enables GNU Radio to use all devices support by comedi. Comedi is based on Linux kernel drivers, which results in good real time capabilities, but binds comedi to the Linux platform.

Funcube Dongle

The Funcube Dongle is a small and cheap device for narrow band reception, offering a frequency range from 64MHz up to over 1700MHz. It plugs into sound cards, so it could be used with a vanilla GNU Radio, but there are special blocks available on CGRAN.

Microtelecom Perseus

The Microtelecom Perseus is a USB 2.0-connected receiver targeted for amateur radio SDR, with a frequency range of 10 kHz to 40 MHz and appropriate preselect filters. See http://www.microtelecom.it/perseus/ for more information.

Andrea Montefusco wrote a library and GNU Radio block for it, which is not yet included in GNU Radio. Source can be found at http://github.com/amontefusco/gnuradio-amontefusco/tree/perseus . Make sure to read the build instructions in gr-perseus/README_PERSEUS.txt

Symplex S-Mini

Check this out. The S-Mini has it's own driver (Symplex Hardware Driver, SHD) which is supported by
GNU Radio (in gr-shd).

RTL2832 TV tuners

These are USB dongles which are used for DAB/DVB/FM. Drivers are available as a third-party module (gr-baz, osmocom)

Fairwaves UmTRX

UmTRX is an open hardware dual-channel wideband transceiver that covers 300MHz to 3.8GHz. It includes a TCXO and GPS for frequency stability, and is designed for use with mobile base stations, but can easily be used with many other applications.

Host connection is via gigabit Ethernet and a special version of UHD provides a host driver, along with FPGA and ZPU firmware. An alternate version of the firmware, 4xDDC, can be used to provide double the number of receive signal paths (4), for receive-only applications.

Expansion via mezzanine cards is possible and the UmSEL daughter board can be used for improved performance with GSM use.

Nuand BladeRF

BladeRF is a wideband transceiver that covers 300MHz to 3.8GHz, with coverage down to 10MHz made possible with the addition of a block up/down-converter.

Host connection is via USB 3.0 and Nuand support use with Linux, Windows and Mac OS X. GNU Radio integration is provided via gr-osmosdr.

Other devices

Every device that can be access from the operating system can be supported by GNU Radio. You can write your own drivers by creating source and sink blocks for your specific hardware.

A very comprehensive and structured list about Software Defined Radio and Software Radio by Christophe F4DAN can be found at http://f4dan.free.fr/sdr_eng.html

If you cannot find support for your favourite device, ask at the mailing list for help. Maybe someone already got a working solution or wrote a block, or at least you can get tips and encouraging words for building a block for this hardware.