# RTL-SDR for SSB on GNU Radio

## Introduction

In the previous two posts we looked at using the RTL-SDR on Raspberry Pi4 with GNU Radio. We examined four applications: displaying the FM band spectrum, wide-band FM, narrow-band Marine weather, and finally AM reception. In this post we look at the RTL-SDR for SSB reception on GNU Radio. The latest version of GNU Radio >=3.8xx is used (Ref.1).

## RTL-SDR for SSB

In order to receive HF SSB (1.8MHz-30MHz) on the RTL-SDR, I use a 125MHz up-converter. I described this procedure in an earlier post (Ref.2). When receiving signals using SDR# for example, you tune to the receive frequency + 125MHz or set the shift frequency to -125MHz. In a similar fashion, using GNURadio, you must tune the RTL to the shifted frequency.

## Zero IF Reception of SSB

Figure 2 shows the block diagram of a Zero IF receiver. Essentially, a carrier signal is direct converted to base-band by multiplication with a local oscillator on the same frequency. In I & Q reception, there are two receive branches, one with an LO = coswt and another with an LO = sinwct. This IQ construction can be used to receive AM or SSB(USB/LSB). For SSB operation, a 90deg phase shift block is required in the I path. The 90deg phase shift is calculated using the Hilbert Transform (Ref.4). USB operation is accomplished by addition I + Q and LSB by subtraction I – Q. The math is covered in detail in Ref.3 pp160/161 using basic trigonometry as well as complex math with phasors as shown in Figure 3.

## Hilbert Transform

Figure 4 shows a test schematic to illustrate the operation of the Hilbert Transform block. A 32KHz sine wave is fed into the block. The real output is the filter delayed 32KHz signal, and the imaginary output is the delayed signal but with a 90deg phase shift which is the output we want for our receiver. This is shown in Figure 5. In our receiver, a complementary block is added in the Q channel just to balance the delays. Unused outputs go into dummy loads (rated at 300W pep)!

## RTL-SDR for 40M SSB LSB on GNU Radio

Figure 6 shows a 40M SSB LSB receiver. Here, the Q channel is subtracted from the [I channel + Hilbert Transform]. Slider controls are added to adjust RTL-SDR rf_gain, volume and 40M rx frequency. The RTL is sensitive to gain, so only use the minimum amount necessary for good reception. Figure 7 show the receiver spectrum with a max-hold set to show the rapidly changing SSB signals.

## RTL-SDR for 20M SSB USB on GNU Radio

Figure 8 shows a 20M SSB USB receiver. Here, the Q channel is added to the [I channel + Hilbert Transform]. Slider controls are added to adjust RTL-SDR rf_gain, volume and 20M rx frequency. The RTL is sensitive to gain, so only use the minimum amount necessary for good reception. Figure 9 show the receiver spectrum with a max-hold set to show the rapidly changing SSB signals.

jclark@clarktelecommunications.com