FX.25 Forward Error Correction
FX.25 is a protocol extension to the AX.25 Link Layer Protocol. FX.25 provides a Forward Error Correction (FEC) capability while maintaining legacy compatibility with non-FEC equipment. FX.25 was created by the Stensat Group in 2005, and was presented as a technical paper at the 2006 TAPR Digital Communications Conference in Tucson, AZ.
FX.25 is intended to complement the AX.25 protocol, not replace it. It provides an encapsulation mechanism that does not alter the AX.25 data or functionalities. An error correction capability is introduced at the bottom of Layer 2 in the OSI model.
The AX.25 Link Layer Protocol is extensively used in amateur radio communications. The packets are validated by a 16-bit CRC, and are discarded if one or more errors are detected. In many cases, such as space-to-earth telemetry, the packets are broadcast unidirectionally. No back-channel may be available to request retransmission of errored elements. Consequently, AX.25 links are inherently intolerant of errors.
The FX.25 protocol extension provides an error correction "wrapper" around the AX.25 packet, allowing for removal of errors at the receiving end. Data fields have been carefully chosen to allow reception of the AX.25 packet data within an FX.25 frame by a non-FEC decoder.
A composite FX.25 entity is called a "frame," distinguishing it from the AX.25 "packet" contained within. The FX.25 frame contains the following elements:
- Correlation Tag
- AX.25 Packet
- - AX.25 Packet Start
- - AX.25 Packet Body
- - AX.25 Packet Frame Check Sequence (FCS)
- - AX.25 Packet End
- Pad for bit-to-byte alignment
- FEC Check Symbols
The "FEC Codeblock" contains all elements except the Preamble, Correlation Tag, and Postamble. These three elements exist outside of the correction-space for the FEC algorithm. The Preamble and Postamble blocks are variable length, and are included to account for delays typically found in radio links - transmitter "key" to stable operation, receiver squelch latency, etc. The Correlation Tag is a Gold code, and contains inherent error tolerance. This is necessary to provide a "start of frame" marker without requiring a dependency on the FEC capability.
The FEC frame currently implements Reed Solomon error correction algorithms, but is not restricted to these.
Performance improvement will be a function of AX.25 packet size combined with the noise characteristics of the transmission channel. Initial performance testing involved transmission of 61 FX.25 frames over an interval of about 15 minutes.
- 9 frames were received without errors
- 19 frames were received with correctable errors
- 33 frames were received with uncorrectable errors
15% of the AX.25 packets [9/61] were decodable without the FEC capability
46% of the AX.25 packets [(9+19)/61] were decodable with the FEC capability
- "FEC Encoding for AO-40 Telemetry from Phil Karn". Archived from the original on 2010-02-25. Retrieved 2010-01-29.
- "FX.25 On-Air Performance". Archived from the original on 2011-07-28.
- 2006 TAPR DCC webpage
- FX.25 Specification (pdf)
- FX.25 Presentation Slides from 2006 TAPR DCC (pdf)
- FX.25 Google Discussion Group
- AX.25 + FEC = FX.25 -- details about the "Dire Wolf" software TNC implementation of FX.25.