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.
GNURadio Companion Basics Course:
https://clarktelecommunications.thinkific.com/courses/gnuradio_basics
Please send your comments, questions and suggestions to:
contact:
References
#1. – “GNU Radio Installation”
https://wiki.gnuradio.org/index.php/InstallingGR
#2. – “RTL-SDR for HF 0-30MHz”
https://jeremyclark.ca/wp/telecom/rtl-sdr-for-hf-0-30mhz/
#3. – “HF Radio Telecommunications Learn by Simulation”
https://www.clarktelecommunications.com/simulation.htm
#4. – “David Hilbert”
https://en.wikipedia.org/wiki/David_Hilbert