Extensions to WSQ / WSQCall(ZL2AFP's Weak Signal QSO mode) - by DL4YHF


  1. What is WSQ ?
  2. Modifications in this implementation of WSQ
  3. The main window
  4. Reception
  5. Transmission
  6. Waterfall display and -controls
  7. Interactive Decoder aka 'Frequency Shooter'
  8. PTT- and Synthesizer control via serial port
  9. Links
  10. Disclaimer

What is WSQ ?

The original WSQ software was written by Con Wassilieff (ZL2AFP). It means "Weak-Signal QSO", with the emphasis on QSO - which means it's not intended as a beacon mode (we already have WSPR, and to some extent WSJTX / JT9 / JT65 for that purpose).
All you need to know about WSQ is hosted on Murray Greenman's site, so don't miss http://www.qsl.net/zl1bpu/SOFT/WSQ.htm !

This document will soon contain an overview of the additions which DL4YHF made to the original software.
At the time of this writing, the 'extended' WSQ(2) was in an early step of development, and not really 'fit' to be published because most of the new functions had not been tested yet.

Again, more information than in this preliminary manual about DL4YHF's WSQ variant is in the original WSQ documentation (by ZL2AFP and ZL1BPU), especially about how to drive a synthesizer via the serial port.
See links in the appendix.

Modifications in DL4YHF's implementation of WSQ

Multi-channel decoder

To experiment with different decoder settings, the modified WSQ software supports two (or maybe more?) decoders which are fed by the same FFT input (in fact, the same frequency analyser which also feeds the spectrogram).
Since the CPU load is mainly caused by the overlapping FFTs, running one or two (or more) decoders simultaneously this way should not cause any problems (if the PC is fast enough for one decoder channel, it can handle two of them as well).
Some settings of the first decoder, most noteably the tone spacing, are also used for transmission:
    1.953125 Hz tone spacing for the original WSQ,
    1.46484375 Hz tone spacing for compatibility with WSQCall (since 2017).
To configure a decoder for WSQ or WSQCall, select 'Decoders' in the main menu,
and point to 'Decoder 1 Mode' (and Decoder 2 Mode if you use two decoders).
Then select 'Old WSQ' (with 1.953125 Hz tone spacing) or 'WSQCall' (with 1.46484375 Hz tone spacing). Since each decoder has its own configuration, you can even let WSQ2 look for both modes.

Adjustable 'squelch level' for each decoder channel

To avoid printing 'lots of garbage' when there is no signal, set the squelch level (in the 'Decoders' menu) a tiny bit above your noise level.
The squelch level is displayed as thin orange line in the SNR bagraph (see screenshot on the left).
It should be below -25 dB (SNR), indicated by the red line in the bargraph.
The optimum value depends on the type of the local noise; -27 dB (SNR) seemed to be a good setting.

Selectable input- and output device

The 'Settings' menu now lists the name of all audio input and -output devices, as far as PortAudio (which works under the hood of WSQ to talk to the soundcard) recognizes them.
In addition, any of DL4YHF's Audio-I/O-DLLs can be used as an audio bridge between WSQ and other signal sources. Details about the Audio-I/O-DLLs (and its compatibility with a few Winrad ExtIO-DLLs) are here.
During the author's initial tests, one of those Audio-I/O-DLLs ("in_AudioIO.dll", actually) was used in combination with Spectrum Lab as an 'input signal pre-conditioner' (noiseblanker, etc) to explore possible improvements before hard-coding them inside the WSQ software.

Record / Decode Wave Files

Allows recording the input signal as a wave audio file, while being analysed by the decoder(s).
The 'decode wave file' option replaces the input from the soundcard (or SDR) by a recorded file, much faster than in real time, with the option to repeat the file in an endless loop. This allows comparing different decoder settings while the file is being played, which wouldn't work during an on-air test (in real time) because the QSB on MF affects the signal rapidly, so it would be difficult to see an improvement when changing the decoder settings during a QSO. Thus if strange things happen (e.g. signal not properly decoded despite appearing 'strong' on the waterfall), record the received signal as a file and if possible upload it to a website to allow others to analyse it (and possibly find out "what's gone wrong").

Automatic transition from 'Transmit' to 'Receive'

Helps during a QSO if you decide to leave the shack for a short while, and then don't return in time to switch off the transmitter at the end of your TX-over.

'Diddle Tone' at the begin (or end) of a transmission

Sounds familiar from RTTY, or maybe PSK31 ? The optional 'diddle' tone, instead of sending an unmodulated carrier when there is "nothing else to send", helps to identify a WSQ transmission in a waterfall display (doesn't need to be the waterfall inside WSQ).
Remember .. (from ZL2AFP's original documentation) : WSQ2 uses 33 different tones, spaced 32000 Hz / 16384 = 1.953125 Hz.
Between 33 tones, there are 32(!) spaces, thus a WSQ transmission spans 32 * 1.953125 Hz = 62.5 Hz.
This is the difference between the lowest and highest WSQ symbol, actually the "diddle tones".
Thus, if there two alternating tones in the spectrogram, spaced 62.5 Hz, switching every 2 (exactly: 2.048) seconds, they will quite likely indicate the begin of a WSQ2 transmission.
Note: The bandwidth occupied by a WSQ sidebands is a bit larger, due to the spectral components added by the FSK (frequency shift keying).

Zoom in/out or move the displayed frequency range (in the spectrum display)

Zoom in/out: Point the mouse over the waterfall, then use the mouswheel to zoom in / out on that frequency.
Or 'grab' the waterfall with the left mouse button (held down), and move it sideways.
The displayable frequency range is only limited by the input sampling rate, and the decimation ratio for the FFT.
  See also : Waterfall controls

Option 'use long FFT' (in the 'Decoders' menu, since 2014-03-15)

With this option, the FFT window is a longer than a WSQ symbol.
In the original implementation, the FFT window was exactly as long as a WSQ symbol.
The 'long FFT' actually means a WSQ symol (2.048 seconds) fits betwen the -6 dB edges of the FFT window (which is now a raised cosine, aka Hann window, instead of the Blackman-something-window in the original code).
This causes a bit of inter-symbol-interference (aka 'smearing', or -for very strong signals- 'dog boning' in the spectrogram), but the effect of the 'longer FFT' is a lower receiver bandwidth, which -under certain conditions- helps with very weak signals.
Under normal conditions, you will hardly notice a difference between ZL2AFP's original FFT window and the 'longer' window in the modified WSQ2 decoder.

Running Multiple Instances of WSQ
Since the same FFT feeds all decoders (running inside one instance of the program), it's impossible to let one decoder with the 'normal', and another with the 'long' FFT. To compare the performance, let two instances of WSQ run at the same time - most modern PCs can easily handle multiple instances of WSQ running at the same time, along with WSJT, WSPR, etc.
The configuration of the 1st instance is stored in WSQ_Config.ini, the 2nd in WSQ_Config_2.ini, etc. Under windows XP, those files were saved under C:\WINDOWS. Unfortunately it's not easy to put them elsewhere. The WSQ INI files can be safely be deleted to let WSQ start again with 'everything' set to the default values.

Interactive Decoder (aka 'Frequency Shooter')
In the presence of QRM (e.g. 'carriers' in the decoder's passband), the human eye/brain combination may be more successfull to identify valid signals than the automatic decoder - quite similar to decoding QRSS (very slow CW) "visually". Details about the interactive decoder are here.

The main window

The main window contains the main menu (sorry but you will never, ever, see a "ribbon" or other graphic gimmicks here), one or two receive text panels (configurable under 'Decoders'..'Number of Channels'), a panel (text editor) to the transmit text, and (on the bottom) signal-to-noise indicator, waterfall (spectrogram), waterfall controls, peak display, and three buttons to switch from receive to transmit and back (TX, RX), and one more button to pause the program temporarily.

(screenshot of the modified WSQ2 main window)

The configuration of the WSQ window, and the decoder settings (but not the configuration for the synthesizer, see ZL2AFP documentation) are saved in an old fashioned 'INI' file.
If you think you completely trashed the settings (or the window layout), exit WSQ, delete its configuration file (e.g. C:\WINDOWS\WSQ_Config.ini), and restart WSQ.


Reception starts immediately after starting WSQ. If the SNR (signal to noise ratio) within the decoder passband reaches the adjustable squelch level, decoded characters are printed into the receive text panel (actually an edit control).
If necessary, the decoder's passband (audio frequency range) can be modified by pulling the vertical lines (left orange line in the waterfall, see screenshot below).
If there are 'carriers' or other kind of QRM near the received WSQ signal, the passband can be narrowed by pulling the right orange line, down to approximately 63 Hz (for 33 WSQ tones).
By default (or "convention" amongst MF users in Europe), tune your receiver to 474.2 kHz in USB, and leave the 'base frequency' (=audio frequency of the lowest WSQ tone) set to 1000 Hz. That way, you can have WSQ, WSPR, and JT9 (WSJT-X) running on the same PC, connected to the same receiver.
Because the decoder passpand is usually a few Hertz larger than the required minimum, the decoder will work even if the transmitting station, or the sampling rate of your own soundcard, is a few Hz off.

(screenshot of the WSQ2 main window during reception,
with manually adjusted decoder passband to 'catch all 33 WSQ tones')

See also: Waterfall display and -controls


To send text, type it into the transmit text editor while receiving or transmitting (doesn't really matter).
The tone frequency range of your own transmission (orignally fixed to 1000 ... 1063 Hz) is marked by a red indicator just above the waterfall. This indicator, labelled 'TX' in red colour, can be dragged with the mouse if necessary to 'align' it with the caller's frequency (doesn't work for synthesiser control, because the tone frequencies are defined by the synthesizer setup file in that case).
Anyway, the risk of colliding with other stations on MF is low, so (at least for Europe) tune your radio to 474.2 kHz in USB, and leave the 'Lowest Tone on TX' as-is (also in the Settings menu) on the default value, i.e. 1000 Hz.

(screenshot of the WSQ2 main window during transmission,
waterfall display automatically paused, currently sent tone marked by yellow disk)

To start transmission, click the 'TX' button near the lower right corner of the WSQ window.
While transmitting, a small yellow disk on top of the waterfall shows the momentary transmit frequency.
To switch back to receive, click the 'RX' button, or wait until the transmit buffer runs empty and the 'automatic TX -> RX' feature jumps in.

See also: PTT- and synthesizer control

Waterfall display and -controls

To zoom in and out, point the mouse over the waterfall, then use the mouswheel to zoom in / out on that frequency.
If the focus is in one of the text editors, click into the waterfall first to move the focus away from the editor (because the editors seem to 'eat up' the mouse wheel events).
To move the displayed frequency range, 'grab' the waterfall with the left mouse button (held down), and move it sideways.
To set the 'base frequency' for one of the decoders, click into the waterfall with the left mouse button (without movement), or with the right mouse button. This opens a popup menu (shown on the left) with the following options:

Other display-related settings can be modified in the 'Display' menu:

Show symbol markers
Click this item to toggle the WSQ symbol overlay on the waterfall

Show symbol numbers
Displays the WSQ 'tone numbers', ideally 0..32, as an overlay on the waterfall.
Tone 'number zero' will ideally appear at the decoder's base frequency, which can be adjusted in the 'Decoders' menu.

Show most recent spectrum graph
Shows the most recent spectrum as a graph (curve) overlaid on the spectrogram.
The display range is fixed to -120 dB "over" full scale at the bottom,
and 0 dBfs (i.e. the soundcard's clipping point for a pure sinewave) at the top.

Waterfall colour
Selects a different palette to map intensities to colours on the spectrogram.

Waterfall frequency range
The displayed frequency range (for the spectrum/spectrogram) can be entered in numerical form here.
It's usually easier to zoom in/out or move the waterfall with the mouse as described further above.

Waterfall amplitude range
This setting has no effect yet.

Split window arrangement
Selects differnt 'main window layouts', with different percentages of the screen area used for the RX- and TX-text fields in the upper part, and the waterfall in the lower part of the WSQ window.

Interactive Decoder aka 'Frequency Shooter'

This option can be set for the first decoder channel in the 'Decoders' menu.
In the presence of QRM (e.g. 'carriers' in the decoder's passband), the human eye/brain combination may be more successfull to identify valid signals than the automatic decoder
- quite similar to decoding QRSS (very slow CW) "visually".
Symbols emitted by the automatic WSQ decoder can be manually corrected (by the operator) by moving them with the left mouse button in the spectrogram.
Also, WSQ symbols can be added by clicking into the spectrogram. They will be marked by small rectangles, similar as the special mouse cursor. The height of those markers resembles the duration of a WSQ symbol. As long as the WSQ symbols have not been scrolled out of view (at the lower end of the spectrogram), characters decoded are printed into the spectrogram close to the symbols, and emitted as a 'ticker' in the last line of the RX text window.
When reaching the bottom of the spectrogram, the symbols cannot be moved anymore, and the character (decoded from the scrolled-out symbol) will be moved from the 'ticker' line into the normal text display.

PTT- and Synthesizer control via serial port

The COM port number for PTT- and/or synthesizer control can be selected through the 'PTT' menu. Only if no COM port number has been selected, it will be loaded from the synthesizer setup file, which can also be selected through the 'PTT' menu.

The option 'Release COM port while receiving' means the WSQ program will close the serial port when not transmitting, which means other programs (like WSPR and WSJT) can use the port when they shall be used for transmission. The PTT control uses two of the handshake signals on the RS-232 adapter (DTR or RTS), shown in the table below.

RS-232 9-pin D-Sub connector, male, found on the "PC" side (DTE).

Pin Number Signal Name Direction (at the DTE side), Remarks





data output to synthesizer



receive data (input, not used by WSQ)



output, positive voltage during transmit



signal ground





output, positive voltage during transmit






Original WSQ 'reference' implementation by ZL2AFP : www.qsl.net/zl1bpu/SOFT/WSQ.htm
Original WSQCall software by ZL2AFP : www.qsl.net/zl1bpu/MFSK/WSQweb.htm
Download site for DL4YHF's modified variant (executable and sources) : www.qsl.net/dl4yhf/WSQ/index.html


 (Ok, I hate this paranoid stuff, but someone told me it's wise to have it here..)


Namings for products in the software and this manual, that are registered trademarks, are not separately marked. The same applies to copyrighted material. Therefore the missing (r) or (c) character does not implicate, that the naming is a free trade name. Furthermore the used names do not indicate patent rights or anything similar.

WSQ was developed by ZL2AFP, Software Copyright Con Wassilieff 2013-2014. All rights reserved.
WSQCall was also developed by Con, ZL2AFP.
The extensions described above were added by Wolfgang Büscher ("Wolf", DL4YHF).
You may use this software, copy it, modify it, but only for non-profit purposes. The above copyright notice and terms of use shall be included in all copies or substantial portions of the software.

The program must not be used in 'critical' environments, where program failure may cause harm to persons or damage to property. Dont rely on this program as an emergency communication medium !

Further restrictions to the use of WSQ may apply, please check the original author's website:


Last modified: 2017-12-03 (YYYY-MM-DD)