A Weak Signal QSO mode for LF/MF


Amateur Radio enthusiasts who are interested in the LF and MF bands will be familiar with WSPR. Used as a propagation probe or beacon, WSPR allows very weak signals to be detected, frequently as weak as -27dB SNR or lower. However, once you have established that a signal path exists, how then do you hold a QSO?

But what QSO mode matches WSPR for sensitivity?

WSPR is not a QSO mode, and is very slow, so you cast around for something else - to find that no 'chat' modes offer performance anywhere near the -27dB sensitivity of WSPR. Not Morse, PSK31 or even CMSK will reach this sensitivity. Even DominoEX4 will only manage about -18dB SNR. The best offering is JASON, with a sensitivity of about -25dB, but it is

V... E... R... Y...     S... L... O... W...

How frustrating!

So, Con ZL2AFP and Murray ZL1BPU decided to do something about this problem - to take on the challenge to design a QSO mode capable of sensitivity performance near that of WSPR, and much faster than JASON: fast enough to allow real QSOs. To do this required a completely new approach. Using a new IFK design with more tones, plus text compression techniques, we have achieved not quite a comfortable 'chat' speed, but at least enough typing speed to allow contact and to exchange information within a few minutes. Novice CW operators have been doing much the same for decades (although not at -25dB SNR!).

Presenting WSQ

The result of these efforts is WSQ - a Weak Signal QSO mode for LF/MF. Like DominoEX and JASON, it uses Incremental Frequency Keying (IFK), making it moderately drift-proof and easy to tune. Unlike WSPR or THOR, it uses no error correction (DominoEX has already demonstrated clearly that error correction isn't necessary when using slow IFK), and while the baud rate is even slower than JASON, each symbol* carries much more information, taking the typing speed up to 5 WPM or better.

* SYMBOL: The smallest unique signalling entity which exists for a time in a digital transmission. (For example a Morse dot or dot-space).
A new sensitive waterfall display is used for tuning. Clearly, if you can't see to tune a signal, it makes contact fairly difficult. On the WSQ display you can easily see signals at -25dB SNR, making tuning reasonably straightforward, although some patience is required.

So what is WSQ? Well, it...

WSQ uses 33 tones, spaced 1.953125Hz apart, resulting in a signal bandwidth of 64.4Hz, including the keying sidebands (bandwidth assessed according to ITU-R SM.1138). The modulation is constant amplitude, phase coherent MFSK with 2.048 second symbols (spacing 4/T), using IFK coding with 32 frequency differences. This means that each symbol carries enough information for all lower case letters to be expressed in just one symbol, which greatly enhances the speed.

WSQ is a decimal data system, so although 32 differences can be expressed exactly in five bits, this is actually not relevant. The way it works, there could indeed be any number of tones, which is a point of difference from most digital modes.

The next table shows, for several popular modes, the number of tones used and number of symbols required to express a letter of the alphabet:

		Mode		Tones	Symbols per Letter
		WSPR		 4	Not applicable
		JASON		16	2
		DominoEX	19	1, 2 or 3
		WSQ2		33	1 or 2
The symbol rate of WSQ is 0.512 baud, or about two seconds per symbol. We call this mode WSQ2. Synchronization is achieved through a voting process similar to JASON, which allows considerable tolerance of speed and sync timing. The unusual symbol rate helps simplify the receiving software achieve a low processor load (it will work on a 'Netbook').

Despite the very low symbol rate, the typing speed is remarkable - at least 5 WPM, and potentially up to 7 WPM if the user is cunning, making maximum use of lower case and 'CW-speak' abbreviations.

Varicoding (where more commonly used characters are sent in fewer bits than those less often used) is an application of Huffman coding, a technique pioneered by Morse (well before Huffman described it!) and then used in PSK31 and DominoEX. WSQ achieves a very high coding efficiency because first of all there is more information per symbol; and secondly because it has available 28 single-symbol characters, which of course are used for the most frequently used letters, 'space', comma, and full-stop (period).

If you operate WSQ using standard Morse QSO protocol, using lower case text for callsigns, and use upper case sparingly for Q-codes and acronyms, you'll be able to operate at maximum efficiency. Here's an example:

ge om name hr Fred. ur rst 569. loc RF77ee. hw? VK7XYZ de ZL1ABC K
This complete over can be sent in just 88 symbols, and therefore takes under three minutes to send.

Comparison of Coding Efficiency

Any test message can be easily analysed to determine how many symbols are required to send the message. This information, combined with knowing the symbol rate, will allow prediction of the typing speed with reasonable accuracy. In this way we can compare the coding efficiencies and even the typing speeds of various modes, even when the symbol rates are different. Here are some examples:
		Mode	Text-->	the quick brown fox jumps over the lazy dog			Baud	Duration	WPM
		Morse 5WPM		                                    ~500 symbols	~5.5	~108 sec	5.0
		JASON		2222222222222222222222222222222222222222222 = 86 symbols	0.75	 114.7		4.7
		DominoEX4	1211221221211211212121222112111121121221212 = 63 symbols	3.91	  16.11		8.7
		WSQ2		1111111111111111111111111111111111111111111 = 43 symbols	0.488	  88.11		6.1

Unusually, although WSQ2 has faster text than JASON (fast) mode, it actually has a slower symbol rate, which gives better sensitivity. It's also very obvious from an information theory point of view that Morse has a much higher symbol rate and therefore much less sensitivity that any of these other modes.

We can also use the same information to compare the number of symbols per word, the transmitted bandwidth and bandwidth efficiency (Hz used per WPM) for these modes:

		Mode		Symbols/word	Bandwidth, Hz	Hz/WPM
		Morse 5WPM	~55		15.0		  3.0
		JASON		9.55		38.0		  8.1
		DominoEX4	7.0		74.3		  8.5
		WSQ2		4.7		64.4		 10.6
Clearly WSQ2 is wider for its speed than the other modes, and of course this is part of the design strategy - but a bandwidth of ~64Hz is still modest.

Designed for the Conditions

The LF and MF Amateur bands are characterized by relatively stable carrier phase on received signals, accompanied by low Doppler shift. These bands have very strong lightning interference, but brief and mostly local, unlike the background of random impulse noise encountered on lower HF. There can also be considerable man-made interference. While there is multi-path reception, especially on 160m, the path changes are slow. The slow fades can be very deep, and signals can be extremely weak, especially on 2200 and 630m, so in order to have a conversation at typing speed on these bands, we need a mode that is extremely sensitive, narrow band, has excellent impulse noise tolerance, but need not have strong phase change or Doppler tolerance. The way WSQ handles lightning noises is most impressive. This is due to the way that each symbol is received in a very narrow bandwidth (~0.5Hz) and integrated over about two seconds, much longer than the duration of a lightning burst.

Slow Tones
One good way to achieve robustness and sensitivity is to use very slow single-carrier signals, which can be integrated over a time frame which is much larger than the duration of interference bursts. With very slow signals the bandwidth can then be narrowed (in this case to 0.5Hz per carrier), further reducing the energy received from wide-band noise sources, and enhancing the sensitivity. Using a two-second 'integrate and dump' type signal detector, based on repeated Fast Fourier Transforms (FFTs), WSQ achieves excellent interference rejection, and the technique also gives incredible sensitivity. Tests have shown that the signal can be detected on the waterfall display at -30dB SNR in 2.4kHz bandwidth, and the software will print recognisable text from about -27dB, becoming 100% reliable at about -25dB. You won't actually hear the signal until it reaches about -10dB!

The WSQ2 Waterfall display with -25dB S/N signal

Any signal that you can receive with this software will also be seen clearly on the waterfall tuning display and tuned in easily. The picture above shows a real off-air signal at -25dB S/N. It is clearly visible on the spectrum display, standing out above the background band noise. The background noise is levelled automatically by AGC in the software, rather like ARGO. When tones are recognised, they can be 'tagged' with a yellow line to make them even more visible.

Multiple Tones
The more tones that are used in an MFSK system, the more information is provided per tone, and in addition, the sensitivity improves. It is generally believed that this latter advantage continues up to more than 30 different tones, then decreases again. WSPR uses only 4 tones, MFSK16 uses 16, DominoEX 18 - WSQ uses 33 tones, and in addition to improved sensitivity, the increased signal bandwidth also contributes to its ease of tuning.

Incremental Frequency Keying
IFK is a type of Multi-Frequency Shift Keying (MFSK). Conventional MFSK encodes the data directly as various frequencies. In an IFK mode, the data is coded in the difference between tones, rather than by defining the actual tones used. Text is transmitted as groups of codes in the range 0 - 31. The tone numbers to be transmitted are determined by adding each code number to the immediate previously transmitted code number, then adding one. If the result is greater than 32, then 33 is subtracted from the tone number. The resulting tone number is in the range 1 - 33, and is converted (using a look-up table) into an audio tone for transmission in 1.953125Hz (4/2.048) steps. Audio tones are generated by a sine-wave Numerically Controlled Oscillator (NCO), a type of software synthesizer. The 33 tones used are numbered sequentially from the lowest to the highest, with the lowest tone being 1000Hz. This is also the transmission starting tone.

Modes with such narrow shifts and narrow receiver filters could be extremely sensitive to drift and Doppler effects. By using differential measurement from one symbol to the next (IFK) the problem of drift is largely eliminated. IFK also significantly reduces the interference of one tone by the next due to ionospheric effects (inter-symbol interference), which is a major contribution to the very low error rate which avoids the need for error correction. In fact, an evaluation made during development showed that the addition of error correction made no diffierence to sensitivity, and very little to readability, while considerably slowing typing speed.

Why codes 0 - 31 in the table, 1-32 IFK differences, and yet there are 33 tones? It's a bit like making a post-and-rail fence 32m long with posts every metre - you need 32m of railing, but 33 posts, not 32! In addition, the IFK modulator always adds one to keep the tones in rotation (so repeated '0' symbols don't give a constant tone), but this does not change the number of differences- there are still 33 tones.

The Varicodes
The groups of codes just mentioned are taken from the Varicode Table (see below). The most common letters have just one code number, while all other letters, numbers and punctuation have two code numbers.

WSQ Varicode V3.0
(Click on image for larger view)

If you study the table above you will see that the first number of all code groups is always in the range 0 - 26. The most used characters have just one code. Following numbers in a code group (if used) are always in the range 27 - 31. In this way the receiver will always know when a new code starts. We call the first number the Initial Symbol, while the others are called Continuation Symbols, the same nomenclature used for DominoEX. The symbols are expressed as 'x' or 'x,y' to signify Initial or Initial and Continuation codes respectively. However, the alphabet used is not the same as DominoEX, largely because there are more tones (DominoEX uses 18). In addition, there is no separate data bit reserved to signal the Initial code, as it's not a binary system.

At the receiver, when an Initial code is received directly after a previous Initial code, the earlier one must relate to a single-symbol character, so is looked up in the table and printed, and the new code retained for next time. If the new code is a Continuation code, the previous code and the new code are looked up in the table as a pair, and the result printed.


Speed Options
While different speeds and bandwidths have been tested, in order to determine the optimum parameters for release, only one version has been released. The performance of the others did not justify release, and the last thing we need is confusion! Hence there are no speed options.

Mode Baud Bandwidth Typing Speed ITU Definition
WSQ2 0.488 64.4Hz 7.7/5.5 WPM 64H4F1B

Basic details of the WSQ2 mode.

Two typing speeds are shown in the table. The first is an average for lower case text mixed with CW-practice acronyms and Q codes (must be lower case). The second is for mixed upper/lower case standard text.

Transmitter Control
The software offers PTT control of a transmitter using the RTS and DTR lines of a serial port in the same manner as most HF digital mode programs. It does not offer CAT control. The transmitter can also be operated using VOX, as the transmitter tone stops on receive.

Transmission Method
Two transmit modes are available. These cater for operators with an SSB Exciter, and those with a serial-control programmable synthesizer:

SSB Exciter
The simplest method is to use the computer sound output tones (1000Hz upwards) to modulate an SSB exciter, in the same way as most HF digital modes operate.

The software may also send serial commands out the same port used for PTT control. These commands force an external synthesizer (typically a DDS type) to operate on one of 33 predetermined frequencies. These frequencies must be pre-defined for the intended frequency of operation, and are synthesizer-specific. ZL1BPU has written a simple spreadsheet which generates the commands for the FEI FE-56xx family of programmable Rubidium Synthesizers. This could be easily adapted to other synthesizer protocols. The technique should also work with the ZL1BPU LF Exciter, the Novatech 409B and the N3ZI synthesizer kits. The screenshot below illustrates reception of a weak-signal transmission using the FEI-5650A synthesizer controlled in this manner.

Guided Tour

In keeping with all ZL2AFP designs, the program is uncomplicated to use, clearly laid out, and devoid of unnecessary features. The software has been thoroughly tested, mostly on the 600m band, over 500km and 2500km paths.

Screenshot of the ZL2AFP WSQ2 software software
(Click on image for full-size view)

Expand the above image to see each of the features described here. At the very top, under the banner, is a simple menu system. Here there are various controls and setup options.

Directly below the menu is a large yellow window - this is the received text window. You can also cut and paste text from here. Below it, the smaller blue-grey window is the transmit text buffer. Again, you can cut and paste from here. While the transmitter is not running, you can also type ahead and correct what you type with normal Windows editing functions. The sliders on the right become active when there is more text in the receive or transmit buffer than will fit on the pane.

Below the TX buffer is the waterfall display, which has frequency calibration below, and spans from 850 to over 1200Hz. It shows the received signals over time, as the waterfall moves down, with older signals toward the bottom. When the 'tagging' option is on, each recognised symbol is tagged here with a thin yellow line. Two red lines indicate the signal-focussed area of the decoding software - the received signals must be completely contained between these marks or copy will deteriorate.

To the left of the waterfall display is the S/N (signal to noise) meter, which was calibrated against a simulator to indicate real signal to noise ratios. There is a thin red line at -25dB to indicate the level below which copy will start to deteriorate. The meter has averaging to remove the effect of impulse noise. Even on weak signals you will see the meter pulse up and down as the tones change.

Below the waterfall are the only four controls - at the left the waterfall brightness control, and at the right the PAUSE button, the Transmit button (TX) and the Receive button (RX). Each of these is dark when not active, and bright when active. The program starts in Receive. PAUSE is used while editing the TX buffer, as otherwise the cursor will jump around when you least expect it. It also stops reception and transmission until either RX or TX is pushed again.

Frequently Asked Questions

  1. Where should I operate?
    For a calling frequency, use the same 'dial' frequency you would use for WSPR. Since the tone frequencies are ~1000Hz for WSQ2 and ~1500Hz for WSPR, there will be no conflict. As for working frequencies, I suggest �100Hz from the calling frequency, which will still be visible on the waterfall display when tuned to the calling frequency, although you'll need to retune the transmitter and receiver to operate.

    160m	1836.600 kHz
    630m	474.200 kHz
    2200m	136.000 kHz
    Don't even think about using the software on HF. There is far too much Doppler shift (except on ground wave) for the receiver to work reliably. Even 160m will be a challenge at night.

  2. How do I change the sound card settings?
    The software works only with the standard output, so you can't direct it to other ports. Use Menu item Tools/Audio devices. In addition, when you make changes, you need to quit the program and restart in order for the changes to 'stick'. There are no plans to change this arrangement, although since the source code is available, anybody willing to have a go could change this.

  3. I have trouble with QRN - is there a fix?
    There are no plans to add a noise blanker, if that's what you are thinking. We did try that. The big problem is actually the AGC in the receiver reducing the gain on static bursts. It is important to operate with AGC off (if you can) or with AGC on FAST (if you can't). The transmitted symbol elements are longer than the static bursts and should be received OK.

  4. Is there (or will there be) a Beacon Mode in WSQ?
    NO - NEVER! That's the whole point! WSQ2 is a real-time QSO MODE. If you need a beacon, use WSPR.To call CQ repeatedly, repaste the text from the RX buffer into the TX buffer and start transmitting again. You of course will be listening/watching for replies between transmissions, right?

  5. I have trouble with QSB, what can I do?
    Fading on LF/MF is fairly slow, and when signals are near the -25dB threshold, long overs will inevitably have fade gaps in them. It's best to keep overs as short as possible (use CW-speak and lower case to speed things up), and then repeat missed overs. The bar graph will fade up and down at symbol rate naturally, and so long as the peaks are above the red -25dB marker, you'll get consistent copy.

  6. Some letters are sent faster than others - how come?
    WSQ2 uses a Varicode system. ALL lower case letters and common punctuation are sent as a single symbol (two secs/char), while upper case, numbers and all other characters require two symbols, so go at half the speed. Stick to lower case where you can! The speed is deceptive - walk away for a cup of coffee and you'll find all your text has been sent!

  7. Is the received text saved anywhere?
    No, it's not. You can easily copy and paste selected text from the receive pane (say to paste into a text document) with the usual Windows CTRL+C and CTRL+V, or by right-clicking and selecting Copy. You will need to hit the PAUSE button momentarily for this to work. You can also copy from the receive pane and paste into the transmit pane.


The Windows™ software is written in ANSI C, and is compatible with Win2000, WinXP and Win7. It may work with Vista on some computers. The program requires at least a 1GHz processor, SVGA display and a 16-bit sound card. It is not sensitive to sound card sampling rate accuracy. One serial port (or USB equivalent) is required for PTT control and/or external synthesizer control. Memory requirements are minimal, and the program size is well under 200kB. The program should run quite well on a low-spec 'netbook' type computer, and the program screen size (which is fixed) will also fit on the netbook screen.

The program consists of just one file, and no changes are made to the computer's registry or anywhere else. To remove the program, simply delete the files made during installation. A setup file is required when using the external synthesizer option.

Source code is available to serious developers (see link below). Please respect the copyright and ownership rights.
Questions about the source code and permission to distribute adaptations should be addressed to Con ZL2AFP (zl2afp at xtra dot co dot nz).

ZL2AFP WSQ transceive program (Release 1.0 26.12.2013)
ZL2AFP WSQ source code (Release 1.0 26.12.2013)
ZL2AFP WSQ Help file
ZL1BPU Calculator (Spreadsheet for FEI Synthesizers)

Copyright © Murray Greenman and Con Wassilieff 2013-2014.
Software Copyright © Con Wassilieff 2013-2014. All rights reserved.