WSPR (amateur radio software)
Developer(s) | Joe Taylor, K1JT |
---|---|
Initial release | 2008 |
Development status | active |
Written in | Python (GUI), Fortran, C [1] |
Operating system | Cross-platform |
Available in | English, Italian, Spanish, French, German, Japanese, Polish, Portuguese, Russian |
Type | Amateur radio and DSP |
License | GPL |
Website | physics.princeton.edu/pulsar/K1JT/wspr.html |
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.[2] 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.[2][3] 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.[2]
Protocol specification
- 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.[2]
- 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).
Applications
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.[4] The Raspberry Pi can also be used as WSPR beacon.[5][6]
History
WSPR was originally released in 2008.
References
- ↑ http://physics.princeton.edu/pulsar/K1JT/devel.html
- 1 2 3 4 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