Direwolf 1.6 D (Mar 1 2020) FX.25

I did some testing with a friend of mine PD2NLX. We have tested the (new) FX.25 protocol (32 and 16 Bytes) This is AX25 with forward error correction. Now the distance between us is quite short, about 5 kilometers. We have discovered that the 16 bytes check at a short distance works better.

First I have installed the “dev” release of Direwolf.

git clone https://github.com/wb2osz/direwolf.git
cd direwolf
git branch -r
git checkout dev
mkdir build && cd build
cmake ..
make -j4
sudo make install
make install-conf

My direwolf.start file look like this

#Start direwolf with -X (16, 32, 64) option to enable FX.25 tx. Number (16, 32, 64) means bytes to check
direwolf -X 16 -d x -t 0 -c /home/pd9q/jnos/direwolf.conf -l /home/pd9q/jnos/logs/direwolf >/dev/tty3

I have add the start option “-d x” Let’s take a look at what that looks like.

FX.25: Matched correlation tag 0x05 with 6 bit errors.  Expecting 223 data & 32 check bytes.
FX.25: Matched correlation tag 0x05 with 0 bit errors.  Expecting 223 data & 32 check bytes.
FX.25: Matched correlation tag 0x05 with 0 bit errors.  Expecting 223 data & 32 check bytes.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete, fixed 13 errors in byte positions: 11 19 65 73 74 92 116 117
132 138 143 144 192

FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: Matched correlation tag 0x06 with 1 bit errors.  Expecting 128 data & 32 check bytes.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete, fixed  1 errors in byte positions: 97

FX.25: Matched correlation tag 0x04 with 0 bit errors.  Expecting 32 data & 16 check bytes.
FX.25: Matched correlation tag 0x04 with 0 bit errors.  Expecting 32 data & 16 check bytes.
FX.25: Matched correlation tag 0x04 with 0 bit errors.  Expecting 32 data & 16 check bytes.
FX.25: Matched correlation tag 0x04 with 0 bit errors.  Expecting 32 data & 16 check bytes.
FX.25: FEC complete, fixed  1 errors in byte positions: 248
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.

FX.25: Matched correlation tag 0x01 with 0 bit errors.  Expecting 239 data & 16 check bytes.
FX.25: Matched correlation tag 0x01 with 0 bit errors.  Expecting 239 data & 16 check bytes.
FX.25: Matched correlation tag 0x01 with 0 bit errors.  Expecting 239 data & 16 check bytes.
FX.25: Matched correlation tag 0x01 with 0 bit errors.  Expecting 239 data & 16 check bytes.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.
FX.25: FEC complete with no errors.

It has, of course, been developed to work over large distances and thus achieve a reasonably reliable connection. But it works surprisingly well.

Direwolf AX.25 + FEC = FX.25

Probably most of you will already know, Direwolf will support FX.25. This is AX25 with forward error correction. Nice.

The mail John, WB2OSZ posted on the mail list.

What can you do if your radio signal isn’t quite strong enough to get through reliably?  
Move to higher ground?  Get a better antenna?  More power?   
Send data very very slowly with narrow bandwidth?

Sometimes those are not options.  
Another way to improve communication reliability is to add redundant information 
so the message will still get through even if small parts are missing.

FX.25 has been used for more than a decade with some satellites.  
Receiving implementations were oriented toward that niche application.  
Now that FX.25 is easy to use, integrated into a general purpose TNC, 
many other AX.25 based applications can gain the benefits while retaining 
complete compatibility with older equipment.

Read more about it.