Receive FT8 with WSJT-X and SDRSharp (Windows)

 Posted by:   Posted on:   Updated on:  2019-11-23T18:13:00Z

Configure WSJT-X and SDRSharp to receive digital ham radio FT8 broadcasts on Windows 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 Realtek RTL2832U 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 (SDR# on Windows, Gqrx on Linux) 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, as well as virtual serial ports (on Windows only).

Receive FT8 with WSJT-X and RTL-SDR

Setup

Windows users must setup SDRSharp software. A CAT plugin is needed to let WSJT-X change receiving frequency of SDR#. This plugin works with serial port, therefore some virtual COM port software will be installed too. At last, SSB demodulated audio will be piped to WSJT-X. This requires a virtual audio cable.

Let’s start with the prerequisites. For virtual serial port emulation, you can use com0com driver or Eltima Virtual Serial Port driver. Usage is similar. You get an installation package; you install it and launch the application that will configure the driver. With com0com, after it installs, launch Setup from Start Menu – com0com and create/edit a pair of serial ports. It's recommended you check use Ports class and don't forget to click Apply to save changes. The serial ports should now be visible in Device Manager.

Setup virtual serial ports in com0com

Setup virtual serial ports in com0com

If you're having troubles with this or you need more features, try the driver from Eltima. Although it is not free, it has a fully functional trial version for 14 days. Besides creating a virtual serial ports pair, it allows you to make changes to the pinout of this pair.

Configure the virtual serial port driver from Eltima

Configure the virtual serial port driver from Eltima

I guess you already have SDRSharp installed. If not, download its archive and extract it to a folder. Find there install-rtlsdr.bat and double click this script to install support for RTL-SDR. Plug in the USB dongle and cancel any automatic driver installation dialog that may appear. In the same folder with SDRSharp, there is Zadig, a tool which can install a generic USB driver. Launch it and select only a device whose name starts with RTL8232 or Bulk-In, Interface (Interface 0). Click Install Driver and wait. It may be required to restart computer.

Install generic USB driver for RTL2832U

Install generic USB driver for RTL2832U

Do not launch SDRSharp yet. Download Calico CAT control plugin. Extract SDRSharp.Calico.dll in SDRSharp directory. I tested this plugin with 32-bit SDRSharp only, and I don't know if it will work with 64-bit versions. In the same folder, there is Plugins.xml file. Open it with a text editor and add the magic line from the text file that came with the plugin inside <sharpPlugins> node. This is the line:

<add key="Calico" value="SDRSharp.Calico.CalicoPlugin,SDRSharp.Calico" />

Now, when you launch SDRSharp, on the left pane, you should find Calico CAT *. Enable it on a virtual COM port.

Enable CAT control on SDRSharp

Enable CAT control on SDRSharp

I said earlier that SSB demodulated audio from SDRSharp must be piped to WSJT-X. This requires virtual audio devices. There are two popular solutions for this. We have Virtual Audio Cable (VAC) and VB-Cable. As usual I prefer free to use software, so I installed VB-Cable. This is just a driver that adds additional sound cards on your system. It's recommended to restart computer after installation. After this, when you select audio output in SDRSharp you will have the option [MME] CABLE Input (VB-Audio Virtual C. I had better results (more decoded FT8 packets) by using MME instead of DirectSound. I don't quite understand why, since DirectSound uses WASAPI backend which should have the lowest latency. Anyway, feel free to try both and see which one works better for you.

At last, it's time to get WSJT-X. Get the 64-bit version if your system architecture is 64-bit (it doesn't matter SDRSharp is 32-bit).

Let's start

Plug in the RTL dongle, connect a proper antenna to it and start SDRSharp. Make sure the demodulation is set to USB (upper side band), bandwidth is 2.5 kHz and audio output is set to VB Cable Input. Also check and enable CAT plugin if necessary. Start demodulation (click the play icon) in SDRSharp. It doesn't matter on what frequency you're at this moment.

Launch WSJT-X. Go to File - Settings and select Radio tab. Choose Kenwood TS-2000 rig and select the other virtual serial port from the pair you created (for example I have COM20 and COM21; Calico CAT uses COM20, so WSJT-X will use COM21). Set the baudrate to match the plugin (that's 19200). Click Test CAT button and if everything is correctly set up, WSJT-X main window will display the frequency from SDRSharp.

Configure CAT in WSJT-X

Configure CAT in WSJT-X

Don't close the settings window yet. Move to Audio tab and set as input the CABLE Output. 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 SDRSharp. Otherwise, WSJT-X will throw a rig error and you need to check your virtual rig configuration and serial ports. 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 SDRSharp and WSJT-X

FT8 decoding with SDRSharp and WSJT-X

If you're on the right frequency and you see FT8 broadcasts but nothing gets decoded, there are audio latency issues or incorrect time configuration. Perform clock sync with a NTP server and try different audio interface (MME, DirectSound). Make sure sample rate is 48000 Hz and that applications are allowed to take control of the audio interface if needed. Disable any effects (surround) that may be in use. This is done from Windows classic Control Panel - Hardware and Sound - Manage audio devices, where you select the virtual devices and check their configuration. Restart all these apps after you made any system changes.

At last, if you got everything good and working, when you want to stop, it's recommended to close WSJT-X first. Otherwise, if SDRSharp is not running, CAT control will give a lot of errors. The same is true when launching these tools. SDRSharp 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. Make sure your RTL2832 dongle has a tuner that can receive the selected frequencies (some are below 25 MHz). Use a different hardware (HackRF etc.) Use a better antenna if needed.

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

No comments :

Post a Comment

Please read the comments policy before publishing your comment.