PlutoSDR for WSPR Beacon on GNU Radio


In the previous three posts, I looked at WSPR & FT8 as part of the WSJT-X protocol suite (Ref.1/2/3). In the last post, I tested the feasibility of using the HRF1 as a WSPR beacon. In this post I look at the possibility of using the PlutoSDR as a WSPR beacon. PlutoSDR specs indicate a start frequency of 325MHz (Ref.4), however as I discussed in a previous post, it can go down to 70MHz (Ref.5) and even to 50MHz! This means that it can cover the 6m, 2m, 70cm and 23cm WSPR frequencies. Transmit power on 6m is -8dBm, and -1dBm on the other bands. ***An Amateur Radio License is required to transmit with the PlutoSDR and is subject to your particular national regulations. ***

PlutoSDR Tx Power & Frequency Testing

Fig.1 PlutoSDR Tx Power & Frequency Testing
Fig.2 SDRAngel Tx Power Test 6m
Fig.3 GNU Radio Schematic Power Test at 6m

Figure 1 shows the various ways of testing the PlutoSDR power & frequency output. SDRangel can be used to control the PlutoSDR or GNU Radio. At this stage it is necessary to determine the frequency accuracy of your unit. You can use a calibrated Spectrum Analyzer or compare against a known source such as WWV to set the ppm. I found the PlutoSDR ppm varied considerably over the testing period. Figure 4/5 show the power output into a SignalHound spectrum analyzer with 20dB pad at 6m, 2m, 70cm and 23cm.

PlutoSDR WSPR Beacon Test

Fig.6 PlutoSDR WSPR Beacon Transmitter Test
Fig.7 GNU Radio Audio Source Setting for VB Cable

Figure 6 shows the testing configuration. A Win10 laptop is used on the transmit end to feed the PlutoSDR and a second Ubuntu 22.04 laptop (or Virtual Machine on 1st laptop) is used on the receive end with an RTL-SDR. Virtual cables are used to output/input the WSPR audio to the GNU Radio Audio Source/Sync. Check the Win10 audio settings for the exact name of your virtual cable and copy that into the GNU Radio Audio Source Device Name (Fig.7). This may not work, in which case use the Win10 audio settings to set the input device to “Cable Output (VB-Audio Virtual Cable)”. On the Ubuntu side, you can use “sudo modprobe snd-aloop” to loopback the audio output to the input. On WSJT audio settings, choose the input that has “……snd-aloop….” as the mono input.


Fig.8 GNU Radio SSB_U Transmit Schematic

Figure 8 shows the GNU Radio SSB_U transmit schematic. The Hartley SSB method is used. The WSPR output feeds the Audio Source by VB virtual cable. This audio then feeds the I & Q branches. The I branch has a Hilbert 90deg Phase shift and the Q is unaltered (-1 for USB). Note that there is a Hilbert block in the Q branch but this is only to compensate for the block delay. The Real part of the Hilbert block is the delayed signal, whereas the Imaginary part is the actual 90 phase shift (Ref.6/7). Figure 9 shows the USB outputs for a 1KHz audio tone. There is 32dB difference between sidebands and 61dB carrier suppression.


Fig.10 WSPR 2m Receive on Gqrx-WSJT-X WSPR on Ubuntu22.04

Figure 10 shows the WSPR receive on Ubuntu22.04. Since I only have one VB cable on Win10, I used an RTL-SDR on the receive end, rather than using the PlutoSDR receiver. I used Gqrx as a receiver and setup the RTL-SDR to place the receive WSPR tone into the correct receive range shown between 1400 & 1500Hz. The audio from Gqrx is looped into the WSPR input using the terminal command “sudo modprobe snd-aloop”.

Fig.13 YouTube Video PlutoSDR for WSPR Beacon on GNU Radio

GNURadio Companion Basics Course:

Please send your comments, questions and suggestions to:

YouTube Channel
YouTube Channel


#1. – “HRF1 for WSPR Beacon on GNURadio”,

#2. – “RTL-SDR for WSJT-X FT8”,

#3. – “RTL-SDR for WSJT-X WSPR”

#4. – “PlutoSDR Specifications”

#5.- “SDR for QO-100 Satellite Reception – Planning”

#6. – “SSB Modulation on GNU Radio”

#7. – “RTL-SDR for SSB on GNU Radio”

By Jeremy Clark

Jeremy Clark is a Senior Telecommunications Engineer and Advanced Amateur Radio Operator VE3PKC. He is the author of E-Books on Telecommunications, Navigation & Electronics.