Say hello to the world of building your own SDR with a GNURadio FM Receiver. You can get this up and running in half an hour, as shown in my video.
When you start to learn a new programming language, one of the first things you do is write a “Hello World” program. This is a short piece of code that demonstrates ability to process some data. In this case, simply defining a text string and printing it to the output device.
Learning GNURadio is similar to learning a programming language and development environment. So, the typical “Hello World” project is creating a GNURadio FM Receiver using the RTL-SDR. This is where I will start my exploration of this new tool.
The flow diagram for this project is shown in the above picture. If you download and expand this graphic, you will see all the blocks and configurations needed to demodulate your local FM stations and display their signals. I have posted a GNURadio FM Receiver video tutorial which describes everything in detail, step-by-step. Or, you can download and run the GNURadio file below.
What I Learned Building the GNURadio FM Receiver
If you are familiar with software defined radio and DSP, you know that this design is very basic, almost trivial. On the other hand, if you are a newcomer, it’s a great demonstration of how data flows through an SDR and what you can do with it.
My learning is more focused on the tool itself. First, I found that even though Windows is not officially supported, GNURadio Companion downloads, installs and runs in Windows 10 very easily. Everything sets up quite nicely if you use the binary installer. Just make sure that you have also installed the RTL-SDR driver, as well.
Second, GNURadio seems solid. No flaky crashes or strange behaviors. Quite a bit of error checking is done for you, such as making sure blocks are properly connected and data types are matched properly. The GUI components are quite mature and, although not fancy, work as promised. The automated code generated compiles quickly and runs without putting much load on my first generation i7 CPU at 12%.
Finally, documentation is very rudimentary. It is geared more towards developers and hackers, rather than new users. Some of the blocks have documentation which helps a bit. If all of this is brand new to you, rely on a cookbook approach at first. Find someone else’s design, play with it, and modify it, learning as you go. Fortunately, there is tons of GNURadio information on the Internet.