The following is a posting I made to the OzAPRS mailing list talking about tracking systems based on HF radio. Forward Error Correction, or FEC is a way of removing errors from a signal transmitted over the air. The problem is that FEC makes certain assumptions which are not valid in the manner it was suggested to be used on the mailing list… And if you look at this and understand nothing, you will then realize why I have not gone back to get a masters or PhD.

Actually, lack of forward error correcting on AX-25 is not really all that much of an issue, at least from my point of view. I am happy to be contradicted, but if someone placed an FEC’ed payload inside an AX-25 packet, and if there was a single bit error, it is unlikely that the FEC would be able to recover the payload, even if it were able to recover 100 bad bits.

The reason for this is that FEC requires a physical layer where a single bit error will not corrupt the bits around it by the mere fact that it happened. The AX25 physical layer will not allow this – with single bit errors corrupting all the bits following!

Eh? Why? Well, the physical layer uses NRZI coding, or Non Return To Zero Inverted. Basically what this means is that if a single bit is of the wrong state, all the following bits will be inverted. Well, that is, all the following bits until we get another bad bit. All the data between the two bad bits will be inverted, but the rest will be good. But the odds of having only two bad bits and having them close together is not good.

Oh, but FEC will detect that first error, and correct it, will it not? Well, no. FEC will not detect so many errors. It is very hard to work out which the first error is. VERY HARD!

What this means is that AX25 is bad on air. NRZI is really really bad on air. If we add FEC to an AX25 packet things will improve, but only if we remove NRZI coding.