Simple SSB Receiver in GNU Radio Companion

The simple SSB software defined radio receiver is now functional!

Few days ago I wrote about how to upgrade the simple double side band receiver to single side band. The modification was supposed to be very simple and involved changing the band pass filter from using real taps to use complex taps. The upgrade wasn’t quite as easy, though.

After making the aforementioned change the receiver was single side band but there was something very weird about its behaviour. When I set the band pass filter limits to be positive it was receiving the lower side band, while it was receiving the upper side band when the filter limits were negative. It was supposed to be the other way around, which I could also confirm by running the simulations posted earlier.

Why was the band pass filter suddenly reversed?

The only difference between the receiver and the simulation setup was that in the receiver the band pass filter taps were used as input to the frequency translating filter (which I use for tuning within the received spectrum). Indeed, I could remember that I have seen the same “reverse” behaviour for the offset parameter of the frequency translating filter: Using a positive offset the filter goes down, using a negative offset the filter goes up in frequency! Therefore I used a minus in front of the offset parameter in the GNU Radio code. I figured, I could do the same for the band pass filter limits and try to understand later.

The receiver – v0.4

Instead of the minus-trick described above, I decided to separate the band pass filter from the frequency translating filter and use a simple low pass filter up front. This turned out to be a good idea because the band pass filter now runs at lower rate, 50 kHz, which allows for narrower and sharper filters compared to if it was running at the USRP rate, 250 kHz.

There are actually four revisions of this receiver labelled 0.4a, 0.4b, 0.4c and 0.4d. They are all available here if you wish to try it. The Changelog file describes the difference between the different revisions but the latest is the best, as you would expect.

Testing the receiver

After listening to myself for a while talking into a dummy load via the FT-817, I decided that the receiver deserved some better tests. First, I wanted to feed the IF signal from one of my other radios to the USRP using the LFRX DC to 50 MHz daughterboard. I wasn’t quite confident about the necessary procedure, in particular what it would do to my IC-765, so I decided to attach the antenna directly to the LFRX board and see what I could receive.

I tuned in on 7.1 MHz and to my great surprise the spectrum was full with strong signals!



Sound samples

If the video is not enough for you I have recorded a few sound samples from different bands – all received using the LFRX daughterboard.

160 meters

Get the MP3 file.

80 meters


Get the MP3 file.


Get the MP3 file.

40 meters

Get the MP3 file.

30 meters

Get the MP3 file.

Future evolutions

There are still plenty of things I’d like to see even in a simple SDR receiver:

  • Automatic Gain Control is not perfect
  • Noise reduction filter
  • Notch filter
  • Moving the USRP frequency

Aside from the AGC, which is very important, I’m not sure when these things will happen. I need to focus on the original objective, which was to have a good receiver for the UNITEC-1 receiver station.