Tracking Balloons with WSPR

What is WSPR?

WSPR is a low data rate digital protocol intended for measuring RF propagation, typically on LF and HF bands and at very low powers (often 1W to as little as 20mW). WSPR messages are digital packets that contain just a few pieces of data:

  • Callsign of sender
  • 4-digit grid locator for indicating transmitter location
  • Transmit power in dBm

This data allows a listener to know how far away transmissions originated and with how much power the transmission was made, giving a fairly realistic and real-time measurement of RF propagation.

On the physical layer, WSPR consists of a 4FSK modulated signal with a separation of 1.4648Hz between tones. This frequency shift is so small that it is nearly imperceptible to the human ear. Bits are transmitted at 1.4648 baud (which is crazy slow!) and messages take just shy of 2 minutes to transmit, which contributes to the protocol’s robustness.

WSPR includes a few other features that help it decode reliably even at very low SNR. Each WSPR message must be transmitted on an even minute, +/- a couple seconds, so receivers know when to expect the beginning of a message. Each message includes forward error correction (FEC) so that receivers can correct any bit errors that do occur during transmission. Messages are also combined with a 162-bit pseudo-random sequence sync vector to aid in receiver synchronization to the bit stream.

Why use it for balloon tracking?

WSPR provides a great transport for data when balloon tracking, as distances of 1000km+ are easily spanned with merely 20mW of power or less. WSPR receivers are located around the globe, and are continuously listening for WSPR transmissions which they relay to the Internet, providing an easy-to-use backbone for balloon data.

The hardware required to transmit WSPR is also very simple. Most transmitters are very simple, and consist of a single I2C programmable oscillator with a simple low-pass filter. The oscillator is re-programmed to different frequencies on the I2C bus for each bit transmitted. Even though this method is several orders of magnitude too slow for conventional modulation schemes, the extremely slow baud rate of WSPR allows this technique to work very well.

While all this sounds perfect for balloons, there are some practical limitations: you can only transmit very limited data, and transmissions are super slow. Packets only include 4-digit grid locators, which only localizes you down to a 70mi x 100mi square. There is no provision for any additional data such as battery voltage, altitude, temperature, etc.

(mis)Using WSPR fields to encode data

We can work around two of these issues with a slight hack on the WSPR network. WSPR packets that have callsigns with ‘0’ or ‘Q’ are considered invalid packets (since no allocated callsign starts with these characters). However, WSPR receivers still process and upload these packets to WSPRnet, and they can be used for balloon telemetry.

Typically trackers will transmit a “standard” WSPR packet that shows up correctly on the WSPRnet map, followed by an “invalid” ‘0’-packet that encodes some additional telemetry. This packet typically encodes battery voltage, temperature, altitude, and 2 additional characters of maidenhead grid locator into a single WSPR packet.


Check back for a follow-up post where I walk through how this data is encoded in my WSPR tracker. All of my code will be open-source and available for reuse!


Ethan is a computer engineer and open source hardware/software developer from Michigan. He enjoys AVR and linux development, photography, mountain biking, and drinking significant amounts of home-roasted coffee. Find out more at

Tagged with: , , , , , , ,
Posted in HAB, Projects
5 comments on “Tracking Balloons with WSPR
  1. Mike Bessant says:

    Really interesting post Ethan.

    A couple of years ago I developed a HAB avionics platform as part of an MSc project. I am now investigation the potential of pico balloons for long-duration atmospheric research and need a much lighter and lower power alternative to the current Iridium telemetry.

    Therefore, I eagerly awaiting the next instalment of your WSPR telemetry project!

    Regards, Mike.

    • I’ll post up some new information soon! Just recently completed a long-duration test flight (battery-only) where I had telemetry from Michigan, USA to off the coast of Portugal. The platform seems pretty solid, just need to get my solar power module working to enable even longer-duration flights.

  2. Patrick D'Anzi says:

    are there any news about it?

  3. Ken Hill says:

    Interested in your follow up. Curious to know what frequency and antenna you used on your balloon.

  4. Hi

    Still looking forward to your second balloon telemetry article.

    In the mean time, please could you advise on the best WSPR band to try receiving telemetry from the increasing number of very long duration balloon flights?

    I currently have a QRP Labs receiver fitted with filters for the 10 metre band but would I stand a better chance changing to 20 metres?

    Thanks, Mike.

Leave a Reply

Your email address will not be published. Required fields are marked *