Receive FT8 with WSJT-X and Gqrx (Linux)

 Posted by:   Posted on:   Updated on:  2019-11-23T18:08:29Z

Configure WSJT-X and Gqrx to receive digital ham radio FT8 broadcasts on Linux computers

FT8 has become the most popular data mode for ham radio. It is a digital mode created by Joe Taylor, K1JT and Steve Franke, K9AN which uses 8-FSK modulation. A transmission lasts for exactly 12.64 seconds and occupies about 50 Hz bandwidth (8 tones at 6.25 Hz spacing). FT8 works very well even with a lot of noise and it is simple to receive and transmit using the computer soundcard and SSB transceiver.

This post will focus on receiving only. We'll decode FT8 messages using HackRF hardware with software defined radio (SDR) application. However, SDR tools come with support for common analog modulation. For FT8 decoding and generation there is WSJT-X software, but this one accepts only audio input. So, I'll be using a SDR application (Gqrx) set to SSB (upper side band) demodulation and I will pipe its audio output to WSJT-X. The latter can be configured to automatically set the frequency of the SDR software. Besides configuration, a virtual audio cable is needed.

Receive FT8 with WSJT-X and RTL-SDR


Linux users must install Gqrx software. The developer offers binaries and this is also available in the respositories of some distributions. Since I'm using Ubuntu, I was able to find the latest Gqrx in the default repos. SSB demodulated audio from Gqrx will be piped to WSJT-X. This requires a virtual audio cable that we'll create with a simple command. It's easy to make virtual audio devices with common sound systems. For this guide, a virtual PulseAudio device will be created using the information from here. At last, WSJT-X is needed. This one is available too in Ubuntu repos. So, let's install everything and set up audio.

sudo apt update
sudo apt install gqrx-sdr wsjtx
pacmd load-module module-null-sink sink_name=Virtual_Sink sink_properties=device.description=Virtual_Sink

Let's start

Connect a proper antenna to the receiving hardware (RTL-SDR works as well for some of the FT8 frequencies; HackRF can receive all FT8 broadcasts in HF and VHF bands). Launch Gqrx and go to File - I/O Devices or use the toolbar button. Select your device and adjust input rate and decimation to get a sample rate as small as possible in order to have a better view of the narrowband signal on the waterfall and reduce CPU load. Do not go below 48000 sample rate (integer multiples of this number are preferred).

Configure hardware in Gqrx

Configure hardware in Gqrx

Go to Tools - Remote control settings and note the allowed IP and port (usually From the same menu or using the toolbar button enable Remote control. In the right pane of Gqrx, Input controls tab, drag the gain sliders close to the middle position. Move to Receiver Options tab and select USB, with normal filter.

Launch WSJT-X. Go to File - Settings and select Radio tab. Choose Hamlib NET rigctl rig and insert the correct IP:port of Gqrx. Click Test CAT button and if everything is correctly set up, the button color should change to green.

Configure remote control in WSJT-X

Configure remote control in WSJT-X

Don't close the settings window yet. Move to Audio tab and set as input the Virtual_Sink.monitor. In the main window of WSJT-X select from Mode, FT8. To change the frequency, select a wavelength from the combo box located on the left of the big frequency display. The change should be visible in Gqrx. Otherwise, WSJT-X will throw a rig error and you need to check your virtual rig configuration. Select a frequency where you notice FT8 packets. The waterfall display of WSJT-X shows at least 2000 Hz of the spectrum. Look there and click on a broadcast to set decoding frequency. As soon as new packets are broadcast on that frequency, new messages should appear in main window.

FT8 decoding with Gqrx and WSJT-X

FT8 decoding with Gqrx and WSJT-X

If you're on the right frequency and you see FT8 broadcasts but nothing gets decoded, your system time may not be correct. Perform clock sync with a NTP server.

At last, if you got everything good and working, when you want to stop, it's recommended to close WSJT-X first. Otherwise, if Gqrx is not running, CAT control will give a lot of errors. The same is true when launching these tools. Gqrx should be first, followed by WSJT-X.

You didn't receive anything? Broadcasts are not on all the time. Check the map at PSK Reporter to see who is on air and on what frequency. If you use RTL2832 dongle, make sure it can receive the selected frequencies (some are below 25 MHz). Use a better antenna if needed.

It's possible to decode FT8 broadcasts on Windows too, with the same hardware. The approach is similar, yet with different SDR software. Here is the complete guide for Windows users.


  1. This tutorial is simply perfect. Everything could be this way.

  2. Thank you very much! I didn't know about this command. It works great. I use this pacmd trick not only for JTDX, but also to interconnect other sound-generating devices to sound inputs of other software, like spectrum analyzers.
    If you have an YO callsign, maybe we'll meet on the air (HF, 2m/70cm).

    1. You welcome! Yes, you can use pacmd to pipe audio between any other software (I wrote about this in Virtual Audio Cable in Linux Ubuntu). I don't have a callsign yet, but I plan on getting one in the future.

  3. Awesome tutorial! Thanks!

  4. Excellent, I didn't knew that wsjt-x could controll gqrx. Really useful. Thanks.


Please read the comments policy before publishing your comment.