Did you ever dream of designing and building your own software defined radio? Explore GNURadio to discover how easy this is to do, without writing a line of code.
GNURadio Companion is a visual programming environment for creating software defined radios. Back in 1983, a bunch of programmers, scientists and engineers started the GNU Project. Closely linked to the Linux ecosystem, GNU project has the goal of collaboratively creating free software. Eventually, this led to GNURadio about fifteen years ago, and more recently the GNURadio Companion front-end software.
GNURadio is an infrastructure built on C++ signal processing blocks, all glued together with Python scripts. It is comprised of optimized source, sink and processing blocks. Sources include a variety of SDR hardware, as well as the ability to play previously recorded data. Sinks include audio sound cards. So, briefly, you source radio data from a hardware device and sink the processed data as audio or data output. In between the source and sink, you use a bunch of signal processing blocks. There is a processing block in GNURadio for almost every DSP function you might want to use.
As you explore GNURadio, you will quickly discover the Companion. Companion is an integrated development environment similar to the Visual Studio IDE. You just drag blocks into a flowchart and connect them together. This is called data flow programming. It lets you use precompiled blocks of software to do stuff, in this case DSP and software defined radio. In addition to blocks, Companion provides a GUI for radio controls and signal displays.
Companion automatically generates the Python code needed to create and run your radio design. You work at a very high level, simply defining what you want to happen. The GNURadio infrastructure does the rest under the hood.
The upside of GNURadio is its enormous capability and a huge community of users, similar to the Arduino ecosystem. The downside is that GNURadio is a Linux project. However, most of its features also work on Windows, which is where I am going to start. Later, I may experiment with the Linux version which supports a wider variety of radio hardware.
Explore GNURadio – Experimenting with your RTL-SDR
By now, most hams and SWL have a cheap RTL-SDR dongle. These amazing devices provide a wideband radio receiver for around $20. Typically, you just connect it to your computer and use various SDR programs like SDR#, HDSDR or SDR-Console to provide a full featured software defined radio.
But if you are more adventurous, you can use GNURadio to write your own SDR for use with the RTL-SDR dongle. It’s a great way to get more use from your RTL-SDR and learn a lot about digital signal processing. GNURadio provides a source block that seamlessly connects to your dongle, and tunes to any frequency in its range. The source then provides the IQ sampling data to your GNURadio creation.
You can design your own radio using filtering and demodulation blocks. In future articles, I will describe some beginners projects using GNURadio and RTL-SDR to create FM, AM and SSB receivers without a single line of code.