Starting out with GNU Radio

I have always been interested in amateur radio; back in India, we never had much exposure since my city did not have a ham radio club. I remember setting up a random wire antenna and connecting it up at the roof on the sixth floor of the apartment we lived in. I could receive Germany, BBC (from London), Russian (a bit fuzzy on that, could be any one of the eastern european nations) and a lot of Chinese stations on short-wave. I got my Tech and General licenses in late 2012, which is when I started getting serious about rigs and such. With all the buzz around RTL-SDR (the cheap, DVB tuner dongles that could be hacked to obtain raw IQ samples), this is definitely a great time to be involved with software defined radio. I set up my raspberry pi out in the patio with the dongle so it would be away from the RF interference inside the house. I could pick up ADSB strobes transmitted by flights taking off and landing at SJC / SFO but not much else. There are a ton of open source programs to do all of this neat tracking like dump1040 and ADSB#.

GNU Radio is an amazingly rich and flexible platform for building out the components of a software defined radio. It provides most of the necessary signal processing blocks and filters that one would need in realizing a working transceiver. I decided to start off by implementing a simple FIR low pass filter in GNU Radio Companion, which is a graphical tool for creating the signal flow graph for a system.

Here, we just have a Gaussian noise source (amp:1) which is being given as an input to an FIR low pass filter with a Blackman-Harris windowing function. I have declared a “variable” taps that computes the taps for the FIR filter using the filter.firdes.low_pass_2() function included with GNU Radio.


The QT GUI Sink allows one to visualize the signal in the time and frequency domains.


Lots to learn, but I’ll try updating the blog more often as I go along 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *