WSPR (Tx) on Raspberry Pi

WSPR (Whisper) stands for Weak Signal Propagation Reporter.
WSPR implements a protocol designed for probing potential propagation paths with low-power transmissions. Transmissions carry a station's callsign, grid locator, and transmitter power in dBm.

WSPR uses a two-minute time slots for transmitting and receiving. Transmissions nominally start one second into an even UTC minute: i.e., at hh:00:01, hh:02:01, ... 

Raspberry Pi 3
Raspberry Pi 3


One way to set up a WSPR Tx-only QRP station is to use a Raspberry Pi with Raspbian OS. The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects.

The Raspberry Pi Foundation is a UK-based charity that works to put the power of digital making into the hands of people all over the world, so they are capable of understanding and shaping our increasingly digital world, able to solve the problems that matter to them, and equipped for the jobs of the future.

WSPR Software

James Peroulas (JamesP6000 on github) wrote WsprryPi. He and others did a great job !!
WsprryPi is a program for the Raspberry Pi to transmit WSPR signals.

Installation WsprryPi

Just open a terminal on the Raspberry Pi and use the following commands:

  • sudo apt-get install git
  • git clone
  • cd WsprryPi
  • make
  • sudo make install

Start WsprryPi transmitting

In a terminal from the home folder (cd ~):

  • sudo wspr -r -o -s callsign locator tx_pwr_dBm f1 [f1] [f3] ...

or to only test the signal

  • sudo wspr [options] --test-tone f


  • f / f1, f2, f3 ... can be in the form:
    LF LF-15 MF MF-15 160m 160m-15 80m 60m 40m 30m 20m 17m 15m 12m 10m 6m 4m 2m
    (-15 indicates the WSPR-15 region of band)

For build-in help:

  • wspr -help

You will find the full description on the Githup page WsprryPi.


  • add & to the end of the command to run in background with output to the terminal
  • add > /dev/null 2>&1 & to run in background without output to the terminal

Terminal output

WsprryPi terminal output
WsprryPi terminal output example

Tx output

The Tx signal is generated on pin 7 (GPIO4 / GPIO_GCLK) of the GPIO header. Pin 9 for ground. As you can see below the output is a raw (square wave) signal and needs additional band filtering...

WSPR Tx Raspberry Pi

Connecting your antenna

The newer Raspberry Pi models have a 40-pin GPIO header. Older models use a 26-pin header.

Raspberry Pi GPIO pinout

Be careful with these pins. Pins are unbuffered. So you can brick your Pi...

GPIO4 or GPIO_GCLK (general clock) generate a general purpose clock (square wave of user defined frequency). This is used by WsprryPi as the output/Tx pin.

Raspberry Pi WSPR shields

A Shield is an expansion board that fits on top of an Raspberry Pi header pins. A "HAT" (Hardware Attached on Top) board is the newer term.

I found a nice shield for the 20m band. The QRP TX Shield for WSPR on 20 Meters produces 20 dBm output on the 20m band and has onboard band path filters.

Android app control

The Raspberry Pi is utterly suitable for stand alone (no keyboard, no mouse, no display) operation. Connected to a network (wire or WiFi) the Raspberry Pi can be remotely controlled.

I've developed a app called Raspi-R (-R for Remote) to control various functions and extension shields/Hats on the Raspberry Pi. Now working on a new version of Raspi-R app which adds:

  • install WsprryPi software (only needed once)
  • uninstall WsprriPy
  • starts WsprryPi
    • with various parameters like
      • callsign
      • QTH locator
      • band(s)
      • ...
      • number of Tx cycles
      • ...
  • stops WsprryPi

Intended release November 2017.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer