ft8.rs

FT8 reception and decoding

About

ft8.rs decodes FT8 signals. Feed audio from your radio or SDR into your computer to see received callsigns, signal levels and messages.

It is receive-only, with no transmit function. Listen to activity across the band or follow a particular callsign. Four decoding modes are available: WSJT-X, JTDX, Hybrid and DX.

If you also use WSJT-X, Compare lets you view both programs' reception results in one message list.

Download

Current version: 0.0.24 (stable)
Published (UTC)

Windows and Linux packages require an Intel / AMD processor with x86-64-v3 support. They do not run on ARM. A macOS package is not currently available.

The callsign database, ALLCALL7.TXT, is included. Keep it next to the program.

Release details · Download checksums · All versions

Getting started

These steps are for the Windows graphical app.

  1. Connect your audio. Tune your radio or SDR to the FT8 frequency you want to receive. Route its audio to your computer using a soundcard, USB audio or a virtual audio cable. Keep your computer's clock accurate.
  2. Open the app. Extract the entire ZIP archive and run ft8rs-gui.exe.
  3. Select the input. In Settings → Audio, choose your receiver's input device and channel. Check that an audio level is shown. If the signal is present on only one channel, choose Left or Right as appropriate.
  4. Choose a mode. Start with the default WSJT-X mode. You can try other modes in Settings → Decode.
  5. Start listening. Click the play button in the main window. FT8 reception follows 15-second slots; decoded messages appear as they become available after each slot. Click stop to finish.

You do not need to enter your own callsign for general listening. If needed, enter your callsign and grid locator in Settings → Station.

Choosing a decoding mode

Select a mode in Settings → Decode → Profile or use the Profile menu.

WSJT-X
The default mode uses WSJT-X FT8 decoding. It is suitable for getting started and general band monitoring.
JTDX
Uses JTDX FT8 decoding. It may decode different messages from WSJT-X on the same audio, so you can try both. SWL and Deep decode provide additional search options.
Hybrid
Runs WSJT-X and two JTDX decoding paths, then merges their results and removes duplicate messages. The JTDX paths use the original audio and audio with automatic gain adjustment. Choose it to combine different decoding approaches; it uses more computing resources. SIC and experimental decoding, described below, can attempt additional recovery.
DX
Follows a target callsign and displays messages related to it. Enter the target in the main window's Callsign field before listening, or double-click a decoded message to select its target and audio frequency. DX manages SWL and deep searches internally, so their general switches do not need adjustment.

Hybrid decoding options

After selecting Hybrid, adjust these options in Settings → Decode. Start with the defaults, then try one option at a time while watching the results and CPU load on the same audio input.

Cross cancellation (SIC)
On by default. Uses an already decoded signal to cancel it from a copy of the audio, then searches again for messages hidden by overlapping signals. Additional messages recovered this way carry sic at the end of the row. Turning it off keeps the WSJT-X and both JTDX baseline decoding paths.
SWL
Off by default. Enables JTDX's listening-oriented search and affects both JTDX paths in Hybrid. It changes the search process and may take longer; enabling it does not guarantee retaining every message found with it off.
Deep decode
Off by default. Enables further JTDX searches around the selected receive audio frequency. Try it when following a particular signal; double-click a message to set the target and frequency. The extra searches may take longer.
Experimental decoder (exp)
Off by default and available only in Hybrid. Adds ft8.rs's own supplementary decoder to attempt recovery of stable weak signals and messages affected by single-tone interference or overlapping FT8 signals. Additional results carry exp at the end of the row, while baseline results are displayed first. It uses more computing resources, and supplementary messages may appear several seconds later; background work for the slot may continue for around 10 seconds or longer. It does not cover every fading, drift or interference condition, and may add no messages in a given slot.

Suffixes such as sic and exp identify how a message was decoded. They are separate from the message text and do not certify that it is correct. Cross-check important callsigns or rare signals against later slots and the received audio.

Compare with WSJT-X

Compare receives live decoded messages from WSJT-X and merges them with ft8.rs's local results. It shows which messages were received by one program and which were received by both.

  1. Use the same receive audio. Set ft8.rs and WSJT-X to listen to the same receiver, frequency and audio channel, and start reception in both.
  2. Check ft8.rs's listener. In Settings → Compare, enable Listen to WSJT-X (UDP). It is enabled by default on first use, with Host 127.0.0.1 and Port 2237.
  3. Set WSJT-X's UDP output. Send WSJT-X's UDP reports to 127.0.0.1, port 2237. This assumes both programs run on the same computer. If another program already uses that port, choose a free port and change it in both programs.
  4. Wait for new receive slots. The message list uses source colors, with a legend in Compare settings: only WSJT-X, only ft8.rs, or both decoders. Comparison uses new live reports; it does not import WSJT-X's message history.

Match ± Hz is the frequency matching tolerance, initially ±7 Hz. Messages are merged as “both” when their slot and message content match and their audio frequencies are within this tolerance. SNR and DT do not have to be identical. Changes to the tolerance affect subsequently received messages.

Compare only changes the display; WSJT-X messages do not feed back into ft8.rs decoding, and source colors do not prove a message is correct. Settings → Output is a separate function that sends ft8.rs results to other programs, using port 2238 by default.

No messages?

Check the receive frequency, computer clock and audio input first. In Settings → Audio, check that the receiver's audio is selected and the level is not overloaded. If the level never changes, check the device, channel and your system's audio input permissions.

Linux command line

Open a terminal in the extracted directory. List the input devices, then start listening with the appropriate device number:

./ft8rs monitor
./ft8rs monitor --device 0

The command-line tool also decodes WAV recordings. See the full user guide for more audio settings, recording playback and UDP options.