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 on these low bands?
And 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...
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!).
After the development of WSQ2 (for LF/MF), the same team went on to develop the very successful HF mode, FSQ, which operates rather faster, uses similar modulation and other techniques, but includes selective calling and a range of automated features, including image and file exchange. When it was decided to develop an improved version of WSQ, what better way to go than adapt the well accepted FSQCall software for LF/MF - and that's what we did!
The result of these two developments is the new WSQCall software - a Weak Signal QSO mode with Selective Callingfor LF/MF. Like DominoEX, JASON and FSQ, it uses Incremental Frequency Keying (IFK), making it moderately drift-proof and easy to tune. However, it uses no error correction, and while the baud rate of WSQCall is even slower than JASON, each symbol* carries much more information, taking the typing speed up to 5 WPM or better.
- ZL2AFP WSQCall transceive program for LF/MF (Release 1.00, 20.11.2017)
* SYMBOL: The smallest unique signalling entity (frequency, phase, amplitude) which exists for a time in a digital transmission. (For example a Morse dot or dot-space).Not using error correction means that speed is not compromised by error correction redundancy, and there is no unfortunate delay in reception as a result. The mode is so robust that error correction is simply unnecessary. A 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. One special innovation in WSQCall is the introduction of notch filters, which the user can place on the waterfall to eliminate interfering carriers, or at least reduce their effect.
So what is WSQCall? Well, it...
- Has an ITU designation of 50H4F1B (66H4F1B).
- Does not use (or need) error correction.
- It uses long integration to defeat impulse noise.
- Is designed specifically for QSOs, i.e. it's a 'chat' mode.
- Is slower (though wider) than JASON 'Fast' mode, yet faster printing!
- Sends the most-used characters in only one symbol, about 2s/character.
- Uses Varicoding to give high text efficiency, which can almost double the typing speed.
- Is a modest speed, narrow band QSO mode, intended for VERY weak signals on LF and MF.
- Uses IFK (like JASON, WSPR and DominoEX) to achieve easy tuning, rejection of ISI and tolerance of drift.
- Uses phase coherent keying so you can transmit it using a typical LF/MF Class C, D or E (non-linear) amplifier without distortion.
WSQ uses 33 tones, spaced 1.46484375 Hz (or 1.953125 Hz) apart, resulting in a signal bandwidth of 48 Hz (64.4 Hz), 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 3/T or 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. (Values in BLUE relate to 4/T* settings providing compatibility with WSQ2. The narrower 3/T* settings are the default in WSQCall).
* T is the symbol period in seconds.
The comparison table below 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, WSQCall 33 1 or 2The default symbol rate of WSQCall is 0.512 baud, or about two seconds per symbol. Alternative rates of 0.256 and 1.024 are offered. Synchronization is achieved through a voting process similar to JASONand FSQCall, which allows considerable tolerance of speed and sync timing. The unusual symbol rates help 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 the default speed it achieves 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. At 1 baud it can easily achieve 10 WPM.
Varicoding (where more commonly used characters are sent using fewer symbols 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, FSQ and DominoEX. WSQCall 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). The only other mode anywhere to use single-symbol characters is FSQ.
If you operate WSQCall 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:vk7xyz ge om name hr Fred. ur sig -13 dB. loc RF77ee. hw?This complete over, including the automatic ID preamble, can be sent in just 75 symbols, and therefore takes about two and a half minutes to send at 0.5 baud.
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 Msg 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.512 83.98 6.4 WSQCall V1.00 1111111111111111111111111111111111111111111 = 43 symbols 0.512 83.98 6.4
Unusually, although WSQCall has faster text than JASON (fast) mode, it actually has a slower symbol rate, which gives better sensitivity. This is achieved using more efficient text coding. 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 WSQCall V1.00 4.7 46.9 10.0Clearly WSQCall is wider for its speed than the other modes, and of course this is part of the design strategy - but a bandwidth of ~50Hz is still modest.
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, typically in the form of unwanted carriers. While there is multi-path reception, especially at night (typically ground wave and E layer), 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.
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. This is well below where you would actually hear the 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.
The WSQCall Waterfall display with -25dB S/N signal
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 - while WSQCall uses 33 tones. 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.46484375 Hz (3/2.048) steps (the default symbol period is 2.048 sec). 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 1500Hz. 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 actual modulation scheme devised by ZL1BPU is a modification of IFK (devised by Steve Olney) called Offset IFK or IFK+. In this system a fixed offset is added to each tone tumber, to ensure continual tone rotation, even on repeated characters, and to provide even more robust rejection of inter-symbol interference which result from ionospheric path timing and Doppler effects.
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.
There are three speeds offered in WSQCall. The default 0.5 baud achieves comfortable -25 dB SNR reception. There are no speed changes required at the receiver, which will receive all speeds without adjustment.
Brief details of the WSQCall mode.
Baud Bandwidth Typing Speed ITU Definition 1.024 48.3Hz 11 WPM 50H4F1B * 0.512 48.3Hz 5.5 WPM 50H4F1B 0.256 48.3Hz 2.7 WPM 50H4F1B
* 0.512 baud is the default speed
The typing speed is an average for lower case text mixed with CW-practice acronyms and Q codes (must be lower case). For mixed upper/lower case standard text the speed can be 20% slower.
The software offers CAT transceiver control as well as 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. The transmitter can also be operated using VOX, as the transmitter tone stops on receive.
The computer sound system outputs tones (1500Hz upwards) to modulate an SSB exciter, in the same way as most HF digital modes operate. The tones are generated by an NCO, and are constant phase, constant amplitude, with minimum bandwidth.
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 WSQCall 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 about 1450 to about 1600Hz. 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 yellow 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 yellow 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.
Below the waterfall are a series of simple control buttons. Their use is well explained in the comprehensive Help information provided with the software.
- Where should I operate?
For a calling frequency, select a 'dial' frequency just below where you would operate WSPR. In Region 3 we operate at 472.5 kHz. As for working frequencies, I suggest ±100Hz from the calling frequency.
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. For lower HF you should be using FSQCall, which works in a similar way, but is designed for low HF (160 to 30m).
- How do I change the sound card settings?
The software manages the choice of sound card through the Menu system. Levels can also be set by calling up the properties of the soiund device you are using. You can have different devices for transmit and receive.
- 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.
- I have trouble with carrier QRM - is there a fix?
Yes, WSQCall has three separately controllable notch filters. Each can be controlled in frequency, width and depth, so you can null out interfering carriers. But watch 'em like a hawk - the carriers tend to move around!
- 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 transmissions as short as possible (one sentence - use CW-speak and lower case to speed things up), and then repeat missed overs. The bar graph will fade up and down naturally, and so long as the signal is above the yellow marker, you'll get consistent copy. You can move the marker to achieve a compromise between weak signals and junk between sentences.
- Is there (or will there be) a Beacon Mode in WSQCall?
NO - NEVER! That's the whole point! WSQCall is a real-time QSO MODE. If you need a beacon, use WSPR. You should however enable the periodic Sounding message, which will inform other users within range that you are on the air. There is never a need to call CQ. You of course will be listening/watching for stations responding to your Soundings.
- Some letters are sent faster than others - how come?
WSQCall 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!
- 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.
However there is a log of all stations heard (the Heard Log), and a daily digest of all transmissions heard on the channel (the Message Log). Both of these are time stamped and include a SNR reading.
The Windows™ software is written in ANSI C, and is compatible with Win2000, WinXP, Win7 and Win10. 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 can be reduced to 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.
Source code is available to serious developers. 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 WSQCall transceive program for LF/MF (Release 1.00, 20.11.2017)
- ZL1BPU WSQplot helper program (plots SNR vs time)