WSPR (amateur radio software)
|Developer(s)||Joe Taylor, K1JT|
|Written in||Python (GUI), Fortran, C |
|Available in||English, Italian, Spanish, French, German, Japanese, Polish, Portuguese, Russian|
|Type||Amateur radio and DSP|
WSPR (pronounced "whisper") stands for "Weak Signal Propagation Reporter". It is a computer program used for weak-signal radio communication between amateur radio operators. The program was initially written by Joe Taylor, K1JT, but is now open source and is developed by a small team. The program is designed for sending and receiving low-power transmissions to test propagation paths on the MF and HF bands.
WSPR implements a protocol designed for probing potential propagation paths with low-power transmissions. Transmissions carry a station's callsign, Maidenhead grid locator, and transmitter power in dBm. The program can decode signals with S/N as low as -28 dB in a 2500 Hz bandwidth. Stations with internet access can automatically upload their reception reports to a central database called WSPRnet, which includes a mapping facility.
The WSPR Protocol
The type of radio emission is "F1D", frequency-shift keying. A message contains a station's callsign, Maidenhead grid locator, and transmitter power in dBm. The WSPR protocol compresses the information in the message into 50 binary digits. These are encoded using a convolutional code with constraint length K=32 and a rate of r=1/2. The long constraint length makes undetected decoding errors less probable at the cost, that the highly efficient Viterbi algorithm must be replaced by a simple sequential algorithm for the decoding process.
- Standard message: callsign + 4-digit locator + dBm (e.g., K1ABC FN20 37)
- Messages with a compound callsign and/or 6-digit locator use a two-transmission sequence. The first transmission carries compound callsign and power level, or standard callsign, 4-digit locator, and power level; the second transmission carries a hashed callsign, 6-digit locator, and power level. Add-on prefixes can be up to three alphanumeric characters; add-on suffixes can be a single letter or one or two digits.
- Standard message components after lossless compression: 28 bits for callsign, 15 for locator, 7 for power level, 50 bits total.
- Forward error correction (FEC): non-recursive convolutional code with constraint length K=32, rate r=1/2.
- Number of binary channel symbols: nsym = (50+K-1) * 2 = 162.
- Keying rate: 12000/8192 = 1.4648 baud.
- Modulation: continuous phase 4-FSK, tone separation 1.4648 Hz.
- Occupied bandwidth: about 6Hz
- Synchronization: 162-bit pseudo-random sync vector.
- Data structure: each channel symbol conveys one sync bit (LSB) and one data bit (MSB).
- Duration of transmission: 162 * 8192/12000 = 110.6 s.
- Transmissions nominally start one second into an even UTC minute: e.g., at hh:00:01, hh:02:01, etc.
- Minimum S/N for reception: around –28 dB on the WSJT scale (2500Hz reference bandwidth).
Usually a WSPR station contains a computer and a transceiver, but it is also possible to build very simple beacon transmitters with little effort. For example a simple WSPR beacon can be built using the Si570. The Raspberry Pi can also be used as WSPR beacon.
WSPR was originally released in 2008.
- Joe Taylor, K1JT: WSPRing Around the World. QST November (2010), p. 30-32.
- G4JNT: The WSPR Coding Process: Non-normative specification of WSPR protocol http://www.g4jnt.com/Coding/WSPR_Coding_Process.pdf
- WSPR Beacon with Si570 and Atmel AVR http://wsprnet.org/drupal/sites/wsprnet.org/files/si570wspr.pdf
- WSPR Beacon with Raspberry Pi https://gerolfziegenhain.wordpress.com/2013/04/13/raspi-as-wspr-transmitter/
- WSPR on Raspi Source Code https://github.com/JamesP6000/WsprryPi