Extensions to WSQ / WSQCall(ZL2AFP's Weak Signal QSO mode) - by DL4YHF
- What is WSQ ?
- Modifications in this implementation of WSQ
- The main window
- Waterfall display and -controls
- Interactive Decoder aka 'Frequency Shooter'
- PTT- and Synthesizer control via serial port
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
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.
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
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").
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
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 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.
To zoom in and out, point the mouse over the waterfall, then use the mouswheel to zoom in / out on that frequency.
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
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:
- Clicked on xxx.x Hz
The frequency, in Hertz, onto you just clicked in the waterfall display.
- Set new base frequency for decoder N (1..2)
Use the clicked frequency as the new 'expected' lowest tone frequency for one of the decoders.
Note: Since the decoder's frequency span is usually more than 64 Hz, the decoder actually will also
accept frequencies slightly below this value as valid WSQ tones.
On the display (if the option show symbol numbers is enabled),
tones below the base frequency will appear negative.
Other display-related settings can be modified in the 'Display' menu:
This option can be set for the first decoder channel in the 'Decoders' 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.
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.
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).
||Direction (at the DTE side), Remarks
data output to synthesizer
receive data (input, not used by WSQ)
|output, positive voltage during transmit
|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..)
THIS SOFTWARE IS PROVIDED ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
AUTHOR AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
OF SUCH DAMAGE.
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.
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)