Direwolf 1.7 Dev branch support IL2P

Yes I know i`m a few steps behind, but great news. Direwolf is also support IL2P.

### New Features: ###

- Improved Layer 2 Protocol [(IL2P)](https://en.wikipedia.org/wiki/FX.25_Forward_Error_Correction).  Use "-I 1" on command line to enable transmit for first channel.  Compatible with Nino TNC for 1200 and 9600 bps.

- Limited support for CM109/CM119 GPIO PTT on Windows.

- Dire Wolf now advertises itself using DNS Service Discovery. This allows suitable APRS / Packet Radio applications to find a network KISS TNC without knowing the IP address or TCP port. Thanks to Hessu for providing this.  Currently available only for Linux and Mac OSX.  [Read all about it here.](https://github.com/hessu/aprs-specs/blob/master/TCP-KISS-DNS-SD.md)

- The transmit calibration tone (-x) command line option now accepts a radio channel number and/or a single letter mode:  a = alternate tones, m = mark tone, s = space tone, p = PTT only no sound.

- The BEACON configuration now recognizes the SOURCE= option.  This replaces the AX.25 source address rather than using the MYCALL value for the channel.  This is useful for sending more than 5 analog telemetry channels.  Use two, or more, source addresses with up to 5 analog channels each.

- For more flexibility, the FX.25 transmit property can now be set individually by channel, rather than having a global setting for all channels.  The -X on the command line applies only to channel 0.  For other channels you need to add a new line to the configuration file.

    > After:   "CHANNEL 1"   (or other channel)
    >
    > Add:     "FX25TX 1" (or 16 or 32 or 64)

https://en.wikipedia.org/wiki/Improved_Layer_2_Protocol

IL2P (Improved Layer 2 Protocol) is a data link layer protocol originally derived from layer 2 of the X.25 protocol suite and designed for use by amateur radio operators. It is used exclusively on amateur packet radio networks.

IL2P occupies the data link layer, the second layer of the OSI model. It is responsible for establishing link-layer connections, transferring data encapsulated in frames between nodes, and detecting errors introduced by the communications channel.

The Improved Layer 2 Protocol (IL2P) was created by Nino Carrillo, KK4HEJ, based on AX.25 and implements Reed Solomon Forward Error Correction for greater accuracy and throughput than either AX.25 or FX.25. Specifically, in order to achieve greater stability on links exceeding speeds of 1200 baud.

IL2P can be used with a variety of modulation methods including AFSK and GFSK. The direwolf software TNC contains the first open source implementation of the protocol.

So now let`s get the “Dev” branch and start playing with IL2P.

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

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.