Tutorial WSPR reception band change with RTLSDR

RaspberryPi and dongle RTL-SDR V.3

  • Install WSPRD on your RaspberryPI, for now ,I would recommend Raspian Wheezy 
Tips (for Raspberry Pi)
-Use ferrite bead to limit the interference  -  Cut off the display (could help to reduce QRN) :

/opt/vc/bin/tvservice -o

Remove unused modules

sudo nano modules 

  • You create new text file in / home / pi of the RaspberryPi and paste this script into it. 

# # # # Edit following variable with your correct data # # # #
call="put your call"
gain="-a 1"
locator="put your locator"
info_rx="Start reception 20 meters"
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ##
    sleep 1
      pgrep rtlsdr_wsprd > /dev/null 2>&1
       if [ $? -eq 0 ]; then
         echo $'\n'"---Kill rtlsdr_wsprd pid---" >> /home/pi/Desktop/wsprd
        killall rtlsdr_wsprd &>> /home/pi/Desktop/wsprd
         echo $'\n'"$(date)" >> /home/pi/Desktop/wsprd
       echo "$info_rx"$'\n' >> /home/pi/Desktop/wsprd
     sleep 1

   /home/pi/rtlsdr-wsprd/rtlsdr_wsprd -f "$hz" -c "$call" -l "$locator" "$gain" -d 2 &>> /home/pi/Desktop/wsprd &


  • You create other equal files by changing only the reception frequency and then make the files executable with chmod +x 

  • The script was created to put a log file on the Desktop of the Raspian operating system called wsprd. If you want to change the path, you change it in the script.

  • Now you go to the terminal and type: sudo crontab -e

Here put the band change times

  • ...meaning of the contab -e (reception band change times)

  • 07:00/13:00 receive 20 meters
  • 13:00/16:00 receive 30 meters
  • 16:00/17:00 receive 20 meters
  • 17:00/21:00 receive 30 meters
  • 21:00/23:00 receive 40 meters
  • 23:00/02:00 receive 80 meters
  • 02:00/07:00 receive 40 meters

Open the terminal and write: ./20m and so the 20 meters script starts, at the set time the frequency changes automatically. After you can also close the terminal. To stop the WSPRD process you write:
killall rtlsdr_wsprd

Thank's also to Biagio IT9FDP


12 hours of reception with automatic band change (20-30-40-80 meters)


Bo Barry said…
Does it report the data to the WSPR site?
Bo W4GHV since '54.
IT9YBG said…
Yes,of course, then you also see the stations received in the log file! '73
Bo Barry said…
Got it installed (I think). Wasn't easy!
Comments on problems when I get it going.
Been wanting to do this with my Pi for a long time,
73, Bo W4GHV since '54
IT9YBG said…
OK thanks. If you have problems, write here. Best regards.
Unknown said…
How do you install this ?
Dietmar_DL4HAO said…
Nice done! I just have seen my callsign at the first log screenshot ;) I wonder, if it is possible, to use this RTL-SDR-Stick and a Raspberry-3 for some PSK-Reporter usage, and/or CW-Skimmer, to send received CW-Callsigns to the PSK-Reporter side. Did you do that in the past? I wish you and yours a nice weekend, vy73 from Hamburg/Germany, Dietmar, DL4HAO
IT9YBG said…
Thank you. I advise you to try this project. I have not done it yet, but it could be useful for you. Best regards from IT9YBG
Dietmar_DL4HAO said…
Guiseppe, thank you for the fast reply, I will investigate your hint ... vy73, Dietmar, DL4HAO
IT9YBG said…
Thank's to you. '73 de Giuseppe IT9YBG
Rob AI6VN said…
Can someone point me to build instructions? I have a brand new RP3b+ running fresh Stretch OS and I get:

pi@Pi3bPlus1:~/Downloads/rtlsdr-wsprd-master $ make
gcc -Wall -O3 -ffast-math -std=gnu99 -c rtlsdr_wsprd.c -o rtlsdr_wsprd.o
rtlsdr_wsprd.c:42:23: fatal error: curl/curl.h: No such file or directory
compilation terminated.
Makefile:9: recipe for target 'rtlsdr_wsprd.o' failed
make: *** [rtlsdr_wsprd.o] Error 1
pi@Pi3bPlus1:~/Downloads/rtlsdr-wsprd-master $

IT9YBG said…
Rob Robinett: You try this way:
Download WSPRD

Install dependencies & useful tools (ex. ntp for time synchronization) ex: sudo apt-get install build-essential cmake libfftw3-dev libusb-1.0-0-dev curl libcurl4-gnutls-dev ntp
Install rtlsdr library : https://github.com/steve-m/librtlsdr
Install rtlsdr-wsprd (this app) : https://github.com/Guenael/rtlsdr-wsprd

git clone https://github.com/Guenael/rtlsdr-wsprd
cd rtlsdr-wsprd
Start Listening
sudo ./rtlsdr_wsprd -f 14.0956M -c NOCALL -l AA00AA -a 1 -p 45
Replace NOCALL with your call sign, and AA00AA with your grid square.
If you get an error about already in use, run this, then the above
sudo rmmod dvb_usb_rtl28xxu rtl2832
"Rasberian to use with a Raspberry PI"
I noticed some disconnection problems with USB port while using Raspbian Jessie (2016-05-27-raspbian-jessie-lite.img). I rollbacked to Raspbian Wheezy (2015-02-16-raspbian-wheezy.img) and the problems solved by themself magically... For now, I have not investigated this issue, but if you experience some "Caught signal 11" error message, it could be this same problem. For now, I would recommend Raspbian Wheezy v2015-02-16.
Rob AI6VN said…
Thanks, I have it running on an RTL-SDR now.
IT9YBG said…
Rob Robinett: It's ok now? :-)
Rob AI6VN said…
I have rtlsdr-wsprd running reliably on a Pi 3, but on 432Mhz my oscillator is off by 110 Hz (actually, I am impressed the V3 has such an accurate and stable oscillator). However it isn't clear to me how to command rtlsdr-wsprd to compensate for the < 1 ppm oscillator inaccuracy. The -p HZ doesn't work, and -o OFFSET changes the tuning but logs the same 110 Hz high signal frequencies. I am experimenting now with changing the -f FREQ by 110 hz. I have been inspecting the source code, but it remains unclear how the posted freq is calculated,
Rob AI6VN said…
I have been unable to calibrate the frequency spotted on 432 Mhz by changing the -f FREQ or -o OFFSET parameters. I log spots, but I can't get them to be recorded at the correct frequency
Rob AI6VN said…
I am struggling to post accurate frequencies at 432mhz band
IT9YBG said…
...have you removed the - d 2 to receive 432Mhz?

/home/pi/rtlsdr-wsprd/rtlsdr_wsprd -f "$hz" -c "$call" -l "$locator" "$gain" &>> /home/pi/Desktop/wsprd &
ZP4KFX said…
dom dic 1 16:06:41 -03 2019
Start reception 40 meters

Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001

Using device 0: Generic RTL2832U OEM
usb_claim_interface error -6
ERROR: Failed to open rtlsdr device #0.

any idea ?
IT9YBG said…
RTLSDR busy in another application or you have to reinstall its drivers.
Thomas DJ6oi said…
Hello de DJ6OI

I think i have problem with WSPRD Skrip... my 20m script are not
goes executable.. chmod +x 20m ? do not work...73 Thomas
IT9YBG said…
DJ6OI: ...try chmod a+x or chmod 755