How to receive and decode WSPR with a simple RTL-SDR

Estimated reading time: 5 minutes

WSPR (pronounced „whisper“, Weak Signal Propagation Reporter) is a digital radio protocol for probing potential propagation paths with low-power transmissions. The WSPR protocol can decode signals with a SNR (Signal-to-noise ratio) as low as -28 dB. A typical transmission contains your call sign, your grid locator and transmitter power in dBm. Read on if you want to know how to receive WSPR with RTL-SDR.

A home-made WSPR transmitter
A WSPR transmitter (Source) based on Adafruit Feather M0, Si5351 Clock Generator Breakout and harmonic filter built by Bernhard Mayer, DL1MAB

WSPR signals can be received by any SSB (single-sideband) capable transceiver such as the Yaesu FT-817ND. In order to decode WSPR a special software called WSJT-X is used which is available for several operating systems (Windows 7/8/10, Ubuntu 18.04 LTS, 20.04 LTS, …) and does not require installation. In order to receive WSPR signals you need to connect your transceivers audio output to the audio input of your computer. WSJT-X is then processing the received audio signal and decodes it, displaying a list containing all received stations with relevant information such as their call sign, grid location, distance etc.

WSJT-X is used to decode WSPR signals with RTL-SDR
WSJT-X is a software decoder for various weak-signal communication protocols

Instead of a dedicated transceiver I prefer to use a RTL2838 based DVB-T stick as a SDR (Software-Defined Radio) which allows me to receive signals between 25 MHz to 1750 MHz. I use the NESDR SMArt v4 which has two advantages: a TCXO (temperature-compensated crystal oscillator) and a SMA antenna connector. The TCXO provides improved frequency stability while the SMA connector is well known among ham radio operators – unlike the MCX connector found on many DVB-T sticks.

The RTL-SDR device is controlled by the well-known open source SDR receiver software Gqrx which can be easily installed via packet manager. In order to receive WSPR with RTL-SDR tune qqrx to the desired frequency and check the spectrum chart. It is necessary to select USB (Upper Side-Band) as mode and turn AGC (automatic gain control) off. If a WSPR signal is present at the selected frequency you will then be able to hear the demodulated audio signal on your speaker.

Receive WSPR with RTL-SDR and Gqrx
Receiving a WSPR signal on the 10 m ham radio band using Gqrx and RTL-SDR

As a next step we want to actually decode this audio signal which means we need to route the audio signal from Gqrx to the decoder software WSJT-X. Under Linux this can be achieved by generating a virtual sound device via sudo modprobe snd_aloop. Upon entering this command a new sound device called „Analog Output – Built-in Audio“ will be created. In order to use it you have to select the new sound device within the sound configuration menu („Settings -> Sound„).

A virtual audio device is used for routing the demodulated audio signal to WSTJ-X for decoding
Select the generated virtual sound device within „Settings -> Sound“

In Gqrx select „Built-in Audio Analog Mono“ as audio output device and in WSJT-X select „alsa_output.platform-snd_aloop.0.analog-mono.monitor“ as input. Now the WSPR signal demodulated by Gqrx should be visible in WSJT-X’s waterfall chart. It may be necessary to adjust the audio gain in Gqrx for optimal results. The signal strength reported in WSJT-X should be approximately 45 dB.

Receive WSPR with RTL-SDR and decode it via WSJT-X
The WSPR signal is visible within the waterfall chart of WSJT-X

As a further improvement you can configure automatic control of Gqrx via WSJT-X. This allows to automatically tune Gqrx to the desired frequency upon a band change within WSJT-X. This can be enabled in Gqrx via menu „Tools -> Remote Control“ . In WSJT-X you have to open the menu „Radio Settings“ and set Rig to „Hamlib NET rigctl„. Ensure that both programms use the same port (WSJT-X usually uses port 4532).

Congratulations, you’ve set up a simple and cheap WSPR receiver station with RTL-SDR and can even report your receptions to the WSPR home page (Make sure to connect a good antenna to your RTL-SDR stick though).

This map shows received and decoded WSPR of a diy wspr transmitter.
This maps shows other where other WSPR stations have received the signal of my WSPR transmitter – Not bad for running 10 dBm on a low hanging dipole!


Sabine 31/07/2022

Hallo Alexander, vielen Dank für die übersichtliche Erläuterung, wie man den Loopback zwischen GQRX und WSJT-X herstellt. Ich hatte vorher die leicht überladene Seite des ALSA-Projects zu dem Thema gelesen und war schon ganz wirr im Kopf. :-) Schöne Grüße aus dem Sauerland Sabine, DL1DBC

    Alexander Entinger (OE5LXR) 31/07/2022

    Hallo Sabine, Es freut mich, dass dir der Artikel weiterhelfen konnte. Fairerweise muss ich festhalten, dass es sich um einen Gastbeitrag von Bernhard, DL1MAB handelt, den ich lediglich editiert habe ;) . Ich werde ihm dein Feedback weitergeben! Herzliche Grüße aus Oberösterreich, vy 73 de Alex, OE5LXR

      Sabine 31/07/2022

      Ehre, wem Ehre gebührt! Danke auch an Bernhard!!

Leave a Reply

Your email address will not be published.