20 meters, 200mW & 12,000 miles: WSPR magic!

Weak Signal Propagation Reporter is a global radio propagation monitoring and reporting network comprised of thousands of low power beacons operating on the amateur radio bands. WSPR beacons can be detected from the lowest of Medium Wave frequencies (137kHz) all the way through the HF spectrum (all the bands from 160m to 10m are popular) to the VHF bands, 50 and 144MHz. WSPR receivers decode the tiny beacon packets and upload them to a central database, at WSPRNet.org, where anyone can literally ‘see’ the propagation paths that are currently open. Equally, you can go back and revisit the radio frequency propagation conditions during any previous time window. Running a WSPR beacon from your home allows you to ‘watch’ the propagation paths open, peak, and close each day under the influences of solar radiation, sunspots, and other ionospheric conditions. Arduinos and a few common accessory boards that can be had for tens of dollars make a beacon accessible to just about any experimenter (with an amateur radio license).

WSPR beacon in an Arduino Uno prototype case.

I’m late to the WSPR party. I’ve wanted to try a beacon project for a few years. A while back, I took a copy of the ZachTeck script and experimented with it and a Ublox GPS, but after getting the NMEA strings decoded from the GPS unit at roughly one second intervals, the rest of my code was over-engineered and bloated, and did not fit into the small memory constraints of the Arduino Nano. I put is aside.

Recently, I did a much needed upgrade to my Arduino IDE and libraries. The thought occurred to me that improvements to both IDE and libraries may give me a fighting chance of getting that old WSPR script fitting. When I opened it up, and started to work through it, I saw some obvious ways of reducing memory usage. I had too many String objects (memory-hungry). And my code was writrten to parse each NMEA message string and tokenise it. This allowed me to get to discrete data fields a long way down the messages, like the number of detected satellites. In a simple WSPR beacon, all you really need is the UTC timestamp at the very start of a number of the NMEA messages. I ditched the superfluous stuff and got it uploading, and more to the point, not hanging!

WSPR dataset applications

WSPR is brilliant for teaching you about rare and exotic places that you feel compelled to Google when they turn up on your map in the morning, places like Orlygshafnarvegur (TF4AH, Iceland) or Fuerteventura (EA8BFK on the Canary Islands).

The database of historical propagation across the HF spectrum is widely used by amateur researchers to learn about propagation and has some more serious applications as well. Experimenters have used the data to support ideas or research questions about how symmetrical propagation is at opposite sides of the globe in the same period, and to test antennas. More seriously, a theory was proposed that impressions in the WSPR dataset may indicate the path of the lost flight, Malaysian Airlines flight MH370.


The script is here: https://github.com/prt459/WSPR_GPS_Beacon


The schematic is so simple it really doesn’t need a kicad. The Ublox 6M GPS connects to Arduino D2 and D3 for serial data transfer. It also needs GND and +5V. The si5351 breakout board uses I2C and so goes to Arduino A4 (SDA) and A5 (SCK). Connect the si5351’s CLK0 to whatever low power HF amp you like. Mine is from Experimental Methods in RF Design (EMRFD), Fig 12.32, but I could have chosen any number of similar two-transistor stages.

WSPR works on truly tiny power levels. If you connect the bare si5351 clock output to an antenna, you will get decodes! (You should add a Low Pass Filter if this is anything more than a quick test). So use a single 2N3904, or anything with gain, up to a full 5 watt QRP PA with an IRF510 or Mitsubishi RF FET, which is a ‘big gun’ in the WSPR world. Mine uses a 2N3904 and 2N4427 in common emitter feedback configuration, delivering around 10 volts peak to peak into 50 ohms, followed by a W3NQN Low Pass Filter for the band of interest.

200mW QRP PA.


20 meter European WSPR decodes from the beacon in Melbourne Australia. 12,000 miles on 200milliWatts!
More European decodes, and a spot from Auld Blighty!
And a decode in the USA in the same timeslot, about an hour before sunset.


Thanks to Harry from ZachTek for making his code open source. And to Jason Milldrum NT7s for his si5351 and JTEncode libraries.

Tagged , , , , , , ,

4 thoughts on “20 meters, 200mW & 12,000 miles: WSPR magic!

  1. Andrew VK1DA says:

    Great job with the WSPR tx. I’ve used WSPR a few times, usually at about 1w or 2.5w from the 817. But I prefer to use my antenna for making other types of contacts. I am very dubious about the proposal that a tiny plane at 12 km above ground level will make any detectable dent in the signal strength of a dx WSPR signal on HF, that is mainly reflected by a relatively huge ionospheric layer at 120-150km agl. In addition to the level of reflection or interruption of an HF signal, there is the problem that WSPR logs signals over a 110 second integration time, recording only one signal level for the entire reception period. Studying WSPR logs from a typical HF transmission shows signal levels varying over sometimes more than 10 db in successive time periods, so to my mind it is not even valid to use WSPR signal levels over dx paths to make antenna comparisons, unless simultaneous transmissions and common receiving sites were used. Successive transmissions within 2 to 10 minutes vary so much on a single antenna that any meaning attributed to signal differences is unfortunately, illusory, IMO. 73 Andrew vk1da


    • Paul Taylor says:

      G’day Andrew. Thanks for commenting. I think I read somewhere the same scepticism re use of WSPR data to track an aircraft. Just way too many unrelated variables. We can dig into the analysis piece on the linked site if we wish, I note the WSPR data is correlated with other data to some claimed utility.
      The spots I’ve been getting on 0.2W 20m WSPR hint at improving propagation. It bodes well for /P CW DX on 20m!
      Cheers Paul VK3HN.


  2. Andrew VK1AD says:

    I’m operating WSPR on 30m @200mW. Getting EU decodes during the last 90 min before VK east coast sunset. Good sign for late afternoon SOTA activations during grey line propagation.

    Liked by 1 person

    • Paul Taylor says:

      Gday Andrew, thanks for that report. Similar to my experience on 20m over the past week for the same power level, 5.30pm DST for about an hour for EU. Its impressive the way they just suddenly appear within minutes. USA west coast around sunset to 8pm. As you say, a good sign!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Shack of VK2KMI

Ham Radio Blog of VK2KMI

Ham Historian

A passionate amateur looks at Melbourne history


My journey of repairing and recycling anything I put my hands on that I believe is still useful. Not just hardware, but including software with relevant content and issues in the field of Cyber Security, Vulnerability Scanning and Penetration Testing.

G4YDM Ham-Radio and SWL news

Radio craft, homebrew, QRP/SOTA, AM


Radio craft, homebrew, QRP/SOTA, AM


Amateur radio experiences with VK1DA

Tj Lab



Amateur Radio and unrelated technologies

Paul Gacek


%d bloggers like this: