Important: The FT8 Module (as other modules) use the WEBSOCKET interface to the SDRconnect system. Be sure that the selector to enable the WebSocket Server in SDRconnect is enabled, it is probably not enabled by default.
ft8-module is a separate program dedicated to decoding FT8 messages transmitted in the various radio amateur bands for use with SDRConnect as front end
The program is written in C++ and uses Qt (version 6) for the GUI and websocket handling.
To ease use, precompiled versions (a Windows installer and an AppImage for x64 based Linux boxes) are available.
For generating an executable, see the relevant section of this README
A simple scanning function is added. Touching the buttonlabeled scan shows (or hides) a spinbox, a spinbox used for setting the time spent per channel. The scan runs over the subsequent preset elements.
It us assumed that the reader is familiar with FT8 transmissions and messages, FT8 transmissions consist of short encoded messages, transmitted on defined regions within different amateur bands.
The program shows a GUI which is divded into two parts,
- the left hand side contains the controls,
- the right hand side shows decoded messages.
of course, on program startup a connection must be made with an SDRconnect server. As can be seen on the picture above,n IP address can be specified in a small widget on top of the right half of the GUI.
The spinbox on the right is prefilled with the number 5454 which is the default port number where the SDRconnect server is listening.
FT8 is transmitted on specified frequencies, therefore ft8-module has a preset list. Touching the button labeled *presets shows the list, touching a frequency on the list instructs the software to switch over to the frequency specified.
A select freq button is just below the button for the preset list. Touching that button shows a small window where a frequency can be set (of course SDRconnect itself has plenty possibilities of setting a frequency). The current frequency is shown on top of the left half of the GUI.
The currently selected frequency - regardless the way the selection was made - can be added to the preset list by touching the button labeled "frequency save".
A few parameters for the decosing process can be set
-
a spinbox with a (default) value 20 tells the decoder how many iterations should be made over the raw message data. Experience shows that the default number works well;
-
a spinbox with a (default) value of 4000 tells the decoder to set a band filter with the specified width.
-
the combobox labeled All items allows choosing betwee showing all messages (which is the default) or just the CQ messages.
If all goed well, the right hlf of the GUI shows messages that are received and decoded.
The button labeled save output controls whether the messages are also saved in a .csv type file. If touched a small menu appears where a filename can be selected.
Messages received can be reported to the pskReporter, and subsequently, it can be made visible on the map where the originators of the messages were.
Connecting to the pskReporter requires some form of identification, touching the button labeled "id" shows a small menu where call, location and type of antenna can be filled in. (the program will remeber this type of data between program invocations). If given, the label your call shows the entered callsign.
Assuming the identification data is set, touching the button Reporter will result in
- starting a browser connected to the pskReporter server;
- sending each received message to the pskReporter.
While for both Linux (x64) and Windows precompiled versions are available it is of course possible to build an executable yourself.
As said, ft8-module is built using C++ as implementation language with use of the excellent framework of Qt for GUI, websockets etc.
So for building a executable one needs at least g++ and Qt6. I have been using Qt6.2 (which is the supported version under Ubuntu 22) and 6.9 (which runs on my Fedora development platform.)
The directory contains a file "qt-ft8.pro" that can be used to generate a Makefile. In order to do so, Qt6 and qmake6 need to be installed.
The AppImage is built on Ubuntu 22 with Qt 6.8.3 which is NOT the default Qt version on Ubuntu 22. An executable and an AppImage can be made using the default installed Qt version on U22.
The required libraries and programs can be installed as given below (assuming the default Qt version is used)
- sudo apt-get update
- sudo apt-get install git
- sudo apt-get install cmake
- sudo apt-get install build-essential
- sudo apt-get install g++
- sudo apt-get install pkg-config
- sudo apt-get install libfftw3-dev
- sudo apt-get install zlib1g-dev
- sudo apt-get install libusb-1.0-0-dev
- sudo apt-get install mesa-common-dev
- sudo apt-get install qt6-base-dev
- sudo apt-get install qt6-multimedia-dev
- sudo apt-get install libqt6websockets6-dev
As said, calling qmake6 from within the directory generates a makefile, running the makefile generates an executable.
Copyright (C) 2026
Jan van Katwijk (J.vanKatwijk@gmail.com)
Lazy Chair Computing
Copyright of libraries used - Qt-DAB, fftw,
libusb-1, - is gratefully acknowledged.
Some functions in the core of the decoder, in particular
the ldpc decoding, is - with minor modifications -
taken from Karlis Goba.
All rights of Karlis Goba is gratefully acknowledged.
ft8-module - the sources and the precompiled versions -
is distributed under e GPL V2 library, in the hope that
it will be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for
more details.





