Virtual Contesting with FT8

Matt Roberts - matt-at-kk5jy-dot-net

Published: 2025-05-14

Updated: 2025-05-22


In previous articles, I described different receiving antennas for the HF bands, along with experiences using FT8 to chase large numbers of contacts.  The latter is essentially a 24/7 contesting mode, with DXing and contact count the main goals.

After watching the robot make several tens of thousands of contacts on the air, and largely wearing out my favorite HF radio, I started a project to try FT8 as a non-contact sport, so to speak.  Many robots and DX-chasers on HF send only signal reports during contacts, which makes FT8 into little more than a snowstorm of radio beacons.  That makes FT8's style of "contesting" into an activity that could be rewarding to SWL operators, too.

The idea of SWL DXing isn't new.  It is a hobby as old as the earliest days of radio.  Many contests support SWL entrants.  This project extends the idea of using an FT8 robot to log large numbers of virtual contacts, which I will call vQSOs, over very long spans of time, to automate DXing with very inexpensive SDR hardware.

My own goals here are data collection and analysis, but this same approach could easily be used by SWL contest competitors, to gather very impressive log files for real radiosport events.


The Station

For this project, I chose the increasingly popular LoG antenna, with some minor updates from the original design.  First, I enlarged the loop to make it 20' per side.  This is a 33% increase in perimeter, giving a 77% increase in area.  Second, I'm using the loop as an all-band receiving antenna.  I normally recommend the LoG only for long wavelengths, but this time, it's going to run all bands, from 160m to 6m.

For the receiver, I chose the RTL-SDR v3, mostly because it is dirt-cheap, even by 2025 standards.  I can buy a handful of them for the same price as a single high-performance reciever.  This makes the activity approachable for even the most modest budget.  My receiver is actually four of these devices, connected to the antenna via splitter, which makes the receiver design scalable.  Four devices can take turns scanning across several bands at once.  Six receivers could cover all the contest bands, including 160m, without having to scan — each dongle could be dedicated to a single band full-time.

The RTL-SDR is not well-known for its sensitivity, especially on the HF bands, so I upgraded the "team" of receivers with an upconverter, to get better performance below 25MHz.  The upconverter was an inexpensive HamItUp Nano.  This shifts the spectrum captured by the antenna upwards by roughly 125MHz, which places the HF bands in roughly the low VHF range for the receivers, where they have far better performance.

Since the upconverter was intended for use with a single receiver, I pass the output of the upconverter through an again inexpensive common TV amplifier, to keep the signals at each receiver nice and strong.  This mostly offsets the splitter losses.  Since the LoG antenna is a negative-gain device, I also placed a very nice HF preamplifier between the antenna and the upconverter.

Strangely enough, the LoG antenna sometimes generates too much signal when paired with the RPA-1, so I found that a step attenuator between the output of the RPA-1 and the upconverter could help me set the output to a level where the receivers have plenty of signal to work with, but not enough signal to drown them.  Getting the levels right helps performance of cheap receiver dongles immensely.

So the entire receiver chain currently looks a bit like this:

    LoG antenna → HF preamp → Step Att → Upconverter → VHF preamp → 1:4 splitter → RTL-SDR x4 → USB hub → PC

...with everything after that done in software.


The Software

A while back, I gave up on the WSJT-X software for FT8, for a number of reasons, and replaced it with custom software that allows me to operate FT8 from the command line under Linux.  That allows me to easily run several long-term receivers to capture FT8 decodes.  Each RTL-SDR is assigned to its own instance of an FT8 softmodem, which generates text spots from the audio from that receiver.  It even uploads to the PSKreporter website while it runs.

That software package includes a utility to allow me to read and analyze the long ALL.TXT logs generated by the decoders.  Part of the output of that utility is an ADIF log, showing the vQSOs it has captured.

Diagrams and details of the software stack can be found in the FT8 Modem article.


Analysis - the fun part

There are all kinds of analyses that could be done with the data that is captured.  My own goals are to see how active the bands are, and how the bands perform over time.  Saving the data to an ADIF file allows for existing analysis tools to aid whatever study is desired.

It may seem a little frivolous to make a contact log of stations you didn't work, but by using "contest rules" to identify unique stations and/or grids per band, later investigations using that data will place all stations on a much more even footing.  This is statistically significant because otherwise, robots that call CQ 24/7 will appear in the data thousands or millions of times, while hand-operated stations (if such a thing actually exists in FT8) may show only sparsely.  By using contesting QSO counting rules, the two vastly different types of station operations appear in the log with relatively equal weight per call, making analysis far more meaningful.

As an example analysis, here's a list of the top 40 DX destinations in the log as of mid-May 2025, out of a list of nearly 200:
	 vQSOs Country
	 20641 Japan
	 10031 Germany
	  9821 Italy
	  9800 Spain
	  7072 United Kingdom
	  5265 France
	  4892 Brazil
	  4756 Russia
	  3899 Australia
	  3514 Poland
	  3381 Indonesia
	  2914 Netherlands
	  2912 Argentina
	  1802 Belgium
	  1676 Portugal
	  1472 Cuba
	  1224 Greece
	  1212 Ukraine
	  1162 Switzerland
	  1091 Chile
	  1085 Colombia
	  1082 Czech Republic
	  1037 Finland
	  1023 Denmark
	   910 Austria
	   905 Venezuela
	   889 New Zealand
	   876 Sweden
	   857 Norway
	   821 Romania
	   777 Dominican Republic
	   759 Croatia
	   679 Slovenia
	   668 Hungary
	   625 China
	   572 Bulgaria
	   562 South Africa
	   541 South Korea
	   463 Ireland
	   429 Slovakia
Other examples of analytical results include spots by day/hour, vQSOs per day/hour, grid square counts and mean distances, calls per band, etc.

A more involved data dive might compare spots per clock hour per band, where the software shows which hours of the day are most active for any given band.  This can be helpful for bands like 10m that are very sensitive to time-of-day.


Current Data

I am just getting started with this.  Right now, my FT8 SWL station gulps down over a million spots per week, and logs between 200 and 500 vQSOs each day, so the data production rate is both impressive and interesting.

As part of the project, I am starting an analysis page called the LiveLoG.  This will show aggregate statistics from the spot and vQSO log files, to track performance over time.  That page can be found here:

Link: KK5JY vContest LiveLoG

The plan is to update that page at least daily, so stay tuned.



Copyright (C) 2025 by Matt Roberts, All Rights Reserved.