wb2osz / direwolf

Dire Wolf is a software "soundcard" AX.25 packet modem/TNC and APRS encoder/decoder. It can be used stand-alone to observe APRS traffic, as a tracker, digipeater, APRStt gateway, or Internet Gateway (IGate). For more information, look at the bottom 1/4 of this page and in https://github.com/wb2osz/direwolf/blob/dev/doc/README.md
GNU General Public License v2.0
1.54k stars 301 forks source link

Frames corrected with FEC are not digipeated or IGated. #376

Open wb2osz opened 2 years ago

wb2osz commented 2 years ago

https://groups.io/g/direwolf/topic/88846731#6175

I've noticed that APRS packets received but had FX.25 corrections made are not being digi'd unless at least one of the decoders successfully decodes with no FX.25 corrections. Is this by design? If so, can it be overridden (say if, 2 or less bytes have been corrected)?

log output demonstrates what I've stated above:

KH6JUZ-9 audio level = 28(6/5) 000000___ [0.2] KH6JUZ-9>APMI0D,KH6MP-1:>ULARI VHF7W Duo2 RF, U=14.6V, RFTEMP=30C, EXTTEMP=0.0C Status Report, normal car (side view), SQ3PLX http://microsat.com.pl/ ULARI VHF7W Duo2 RF, U=14.6V, RFTEMP=30C, EXTTEMP=0.0C

KH6JUZ-9 audio level = 41(5/5) 322222 [0.2] KH6JUZ-9>APDW17,KH6MP-1:!2117.18NT15742.78W& Hawaii Kai SouthEast Oahu Hawaii USA Position, TX igate with path set to 1 h, DireWolf, WB2OSZ N 21 17.1800, W 157 42.7800 Hawaii Kai SouthEast Oahu Hawaii USA [0H] KH6JUZ-9>APMI0D,KH6MP-1*:>ULARI VHF7W Duo2 RF, U=14.6V, RFTEMP=30C, EXTTEMP=0.0C <no digi of the packet where FX.25 had to correct every 'decoded' packet: KH6JUZ-9 audio level = 41(5/5) 322222>

Digipeater NH7C-5 audio level = 48(7/8) [NONE] ||||||___ [0.2] AH6GR-12>APN383,NH7C-5*,WIDE2-1:!2055.33NN15641.69W#PHG6440<0x0d> Position, OVERLAY DIGI (green star) w/overlay N, Kantronics KPC-3 rom versions, 36 W height=160 4dBi omni N 20 55.3300, W 156 41.6900

KH6JUZ-15 audio level = 39(5/5) _321111__ [0.3] KH6JUZ-15>APMI0D,KH6MP-1,WIDE2-1:>ULARI VHF7W RF, U=13.8V, RFTEMP=32C Status Report, VAN, SQ3PLX http://microsat.com.pl/ ULARI VHF7W RF, U=13.8V, RFTEMP=32C

KH6JUZ-15 audio level = 30(5/5) 0000115__ [0.3] KH6JUZ-15>APDW17,KH6MP-1,WIDE2-1:!2127.98NT15759.66W&PHG2040 Mililani Mauka Central Oahu Hawaii USA Position, TX igate with path set to 1 h, DireWolf, WB2OSZ, 4 W height=10 4dBi omni N 21 27.9800, W 157 59.6600 Mililani Mauka Central Oahu Hawaii USA [0H] KH6JUZ-15>APDW17,KH6MP-1*,WIDE2-1:!2127.98NT15759.66W&PHG2040 Mililani Mauka Central Oahu Hawaii USA <no digi of the packet where FX.25 had to correct every 'decoded' packet: KH6JUZ-15 audio level = 39(5/5) _321111__>

-Jeffrey Komori, KH6JUZ

wb2osz commented 2 years ago

Thanks for reporting this. You are finding the most interesting bugs.

Background:

A long time back, I implemented an experimental technique to try "fixing" an AX.25 frame with a single bit error. (It's described in the User Guide in a section called something like "One Bad Apple Don't Spoil the Whole Bunch.")

The technique worked pretty well but occasionally a corrupted result would get through. When a frame was "fixed," I figured it was good enough to pass along to any connected local applications but did not want to pass it along to digipeating or IGate because there was a chance of propagating corrupt information.

With proper forward error correction (FEC), such as FX.25 or IL2P, we have a much higher confidence level that corrected data is valid.

I need to add another check so those are allowed to continue to the digipeater and IGate.

wb2osz commented 2 years ago

Update the User Guide too.

Check out section 9.2.7 in the manual: Only error-free frames are digipeated or passed along to an APRTS-IS server. Propagating possibly corrupt data would not be acting responsibly. Note that these frames are passed along to attached applications. If they pass along data to someone else, it could be corrupt. I'm not sure if this can be disabled, but I suppose anything is possible as the code is available, heh.

73 Jason