[ADXA] Multi RX decoding (FT8/FT4/Q65) experiments

Jussi Eloranta eloranta at aa6kj.hopto.org
Wed May 6 17:20:22 EDT 2026


Hi,

If there are Linux users out with a radio that has dual RX capability 
then you may want to try out the following (must be able to compile C 
programs).

When using multiple RX antennas (low bands) diversity receive has been 
widely used to improve CW/SSB copy. But how about digital modes like 
FT8? The first thought is to mix the audio from the two RXs into one and 
let WSJT-X decode that. However, there are two issues with this: 1) 
there tends to be a small audio phase difference between the two audio 
signals in practice (as observed on my K4D) and adding them up does not 
give great results, and 2) the noise from both antennas will also be 
mixed together. The next thought is to use two separate WSJT-X instances 
to decode each RX separately (use -r option to start the 2nd one). While 
this works, it is somewhat cumbersome to use while running QSOs because 
the two WSJT-X's do not talk to each other. I initially did this such 
that the audio from the two RXs on the radio was directed to left and 
right stereo audio channels. One WSJT-X read the left and the second the 
right channel. The nice thing is that this performs decodes during 
identical time windows with the two antennas.

OK, then I decided to improve things a bit. I wrote a piece of code 
(called multi) that sits between WSJT-X GUI and the JT9 decoder (name of 
the program that decodes FT8/FT4/...). Multi gets the decodes from *two* 
JT9 instances (one for each RX), processes them, and passes them on to a 
single WSJT-X GUI. When running QSOs, the WSJT-X GUI gets decodes from 
both RXs without any extra hassle. Processing here means that multi 
picks the decode from the two RXs that has the best signal to noise 
(SNR) and drops the other one. It can also filter decodes based on a 
given CTY file or collect statistics for antenna comparison. It will 
insert information about the relative antenna performance in the decoded 
text (see attached photo as an example). Before the decoded message 
field one can now find:

=   Both RXs had SNR within 2 dB of each other.
a   RX a (or antenna attached to RX a) was better than b by more than 2 dB
b   RX b was better than a by more than 2 dB
A  RX a was better than b by more than 8 dB
B  RX b was better than a by more than 8 dB
A! Only RX a was able to decode (not present on b).
B! Only RX b was able to decide (not present on a).

As a sanity check, running the two RXs with identical antennas will give 
'=' for all stations. So no big differences between the two RXs & the 
program behaved as expected.

At least for me this has improved (and simplified) my low band RX on FT8 
a great deal. My RX antennas have different polarizations and this can 
help with (slow) variation of polarization. Also the arrival angle can 
vary. But, of course, if these variations are faster than the FT8 RX 
period then this probably won't help much (other than the directivity 
factor of the antennas). But my initial observation is that this 
approach works surprisingly well in practice. One could also envision to 
have remote SDR receivers sitting at each RX antenna and then get 
decodes from them (over wifi or wired ethernet)  into single WSJT-X.

Let me know if you are interested in testing this. I wrote a bit more on 
my blog page on this (source code on github):

http://aa6kj.hopto.org/wp/?p=153

Jussi (aa6kj)

ps. The attached photo also shows two waterfall displays - one for each 
RX. I should take another photo when 80m is actually open properly.

pps. And if there are Linux users out there with Bandmaster V then I 
have managed to reverse engineer their protocol & have example code 
showing how to set the antenna relays from C program.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: multi.jpeg
Type: image/jpeg
Size: 948110 bytes
Desc: not available
URL: <http://mailman.qth.net/pipermail/adxa/attachments/20260506/c942fcbe/attachment-0001.jpeg>


More information about the ADXA mailing list