GNU Radio is an open source Software Defined Radio (SDR) project that was started about ten years ago by Eric Blossom, an electrical engineer. The main idea which is behind this project, as its founder says, was to turn all the hardware problems into software problems, that is move the complexity of a radio equipment from the hardware level to the software one, and get the software as close to the antenna as possible.
Advantages of SDR
Software defined radio has some advantages that were not been possible before:
- It can be reconfigured "on-the-fly"
- It can be easily and rapidly upgraded with new software versions or enhanced features
- It is possible to talk and listen to multiple channels at the same time
What is the story of GNU Radio?
Blossom initiated this project because he was disappointed by the SDR projects available at that time: all of them had a proprietary nature, and he wanted to bring the free-software philosophy into the SDR world. Richard Stallman, the GNU Project founder, liked Blossom’s idea and agreed to take the project under the GNU aegis.
So far, the GNU Radio project has not disappointed its affiliates and supporters. Eric Blossom, together with his development colleague Matt Ettus, have realized a project which can turn an ordinary PC into a good quality radio receiver; the only additional hardware required are a “low-cost” RF tuner and an analog-to-digital converter to convert the received signal into digital samples. GNU Radio is a free software development toolkit which allows to develop a custom non commercial radio receiver just combining and interconnecting appropriate software modules, as if they were functional blocks (the package include about 100 modules, but others can be added to the initial library). Each module is able to perform a specific signal processing function (for example a mixer, a phase lock loop, a filter), with a real-time behavior and with high-throughput; for this reason, a recent PC with enough processing capability and memory shall be used. With the GNU Radio approach, the designer is a software developer who builds the radio by creating a graph (in a similar way to what happens in the graph theory) where the vertices are signal processing blocks and the edges represent the data flow between them. The signal processing blocks are normally implemented in C++, whereas the graph structure is defined in Python. GNU Radio is well known and widely used especially in academic environments and among hobbyists and radio amateurs; it is used either to implement real and working radio equipments, or just as a research project in the area of wireless communication and transmission. GNU Radio software modules support various modulations (GMSK, PSK, QAM, OFDM), error corrections codes (Reed-Solomon, Viterbi, Turbo Codes), and signal processing capabilities (filters, FFTs, equalizers, timing recovery).
GNU Radio applications are mainly written in Python; however, the critical and low-level algorithms and signal processing modules are written using the C/C++ programming language, with wide usage of floating-point specific instructions for the relevant processor. Python is primarily used to setup the flow graph, after that most of the work is done in C/C++. GNU Radio is simple to use and a radio receiver can be created in a fast and straightforward manner; moreover, the development of a signal processing algorithm can be carried out using a pre-recorded or generated data set, thus allowing the development without the need for a real RF hardware. An example of minimal hardware required to work with GNU Radio is offered by the USRP, developed by Ettus Research LLC.
What is USRP?
USRP, which stands for Universal Software Radio Peripheral, is a general purpose motherboard which can host a wide selection of daughterboards, each of which implements a signal processing block found in the GNU Radio software package. The original USRP is a low cost software radio device which connects to the host computer through a USB 2.0 interface, and can send up to 16 MHz of RF bandwidth in both directions. It hosts an FPGA which can be reprogrammed, 4 high-speed Analog to Digital Converters (ADCs), 4 high-speed Digital to Analog Converters DACs), and many auxiliary analog and digital I/Os.
The following pictures show how the USRP looks like, externally and internally, respectively.
The USRP contains two Analog Devices AD9862 mixed signal analog front end devices connected to an Altera Cyclone EP1C12 FPGA where most of the initial downconversion is done within the RX chain. The USRP family includes:
- DC to 30 MHz receiver
- DC to 30 MHz transmitter
- 1 MHz to 250 MHz receiver
- 1 MHz to 250 MHz transmitter
- 50 to 860 MHz receiver
- 800 MHz to 2.4 GHz receiver
- 400-500 MHz transceiver
- 750-1050 MHz transceiver (including cell and ISM bands)
- 1150-1450 MHz transceiver
- 1.5-2.1 GHz transceiver (including PCS bands)
- 2.3-2.9 GHz transceiver (including ISM band)
The motherboard shown in the above picture is equipped with 4 daughterboards: 2 Tx modules and 2 Rx modules.
The GNU Radio USRP2
The USRP2 is based on its successful predecessor, the original USRP, providing the following new capabilities:
- Gigabit Ethernet interface
- 25 MHz of instantaneous RF bandwidth
- Xilinx Spartan 3-2000 FPGA, which can even operate the device in a stand-alone way, without requiring connection to a host computer
- Dual 100 MHz 14-bit ADCs
- Dual 400 MHz 16-bit DACs
- 1 Mb of high-speed SRAM
- Locking to an external 10 MHz reference
- 1 PPS (pulse per second) input
- Configuration stored on standard SD cards
- Standalone operation
- The ability to lock multiple systems together for MIMO
- Compatibility with all the same daughterboards as the original USRP
USRP2 is initially supported on Linux, but drivers will be available also for Windows, Mac OS X, and other operating systems.
GNU Radio applications
The GNU Radio package is provided with a complete HDTV transmitter and receiver, a spectrum analyzer, an oscilloscope, a multichannel receiver and a wide collection of modulators and demodulators. Other advanced projects are still in the feasibility phase or in progress:
- A system able to recording multiple stations simultaneously
- Time Division Multiple Access (TDMA) waveforms
- A passive radar system that takes advantage of broadcast TV for its signal source
- Radio astronomy
- Digital Radio Mundial (DRM)
- Software GPS
- Amateur radio transceivers
Curious about writing your own block?
Eric Blossom has prepared an excellent tutorial which explains in detail how to write a block for GNU Radio: if you are interested in it, try and enjoy it.
Read the Italian version: GNU Radio: la radio open-source definita dal software