FX.25 On-Air Performance

The FX.25 encapsulation specification was presented at the TAPR DCC in 2006. The concept and algorithms have been deployed using amateur radio equipment and some custom hardware. An FX.25-encapsulated AX.25 packet was sent repeatedly over a low-quality radio link, and the subsequent error performance analyzed. Results are presented here.


FX.25 is a method for encapsulating an AX.25 packet in an FEC wrapper that maintains compatibility with existing AX.25 equipment. The AX.25 packet is presented as clear test within the FX.25 frame, and can be decoded by unmodified AX.25 algorithms.

Please consult the current FX.25 specification [pdf] for implementation details.

Presentation notes from the 2006 TAPR DCC are also available: Slides Presentation Outline

Source code for the Reed Solomon algorithms comes from Phil Karn, KA9Q. Phil's code has been butchered to run on an embedded microcontroller. Sorry for the hack, Phil.


Testing was performed using a Stensat Cansat kit configured to send a fixed AX.25 telemetry packet. The Cansat contained the necessary FX.25 encapsulation code to create the FX.25 frame dynamically. The embedded CPU is and Atmel ATMega88.

The radio signal was received by an ICOM IC-9000 and presented as audio to a custom decoder module. The decoder contains an MX-614 modem chip backed up by a Microchip PIC16LF73. The PIC performs clock recovery on the data output from the modem, and streams raw data serially to a PC. The PC collects the raw data to a file, then performs post-processing to extract the corrected AX.25 data. [note: the application may also be used in real-time as a streaming client, but at the expense of being able to re-process the input data.]


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

Raw and processed data is available:

  Binary raw data  
  Hex raw data  
  Text processing log file  
  Text processing log file with errors marked as "*"  
  Error analysis file  

Source Code

Source code for the Encode and Extract functions is available. The code provided is configured to be run from the command line on a PC. Embedded support is not included in these files.

  FX.25 Encoder  
  FX.25 Extraction  

The source code is far from being complete, but provides a working example of the FX.25 process. The code was compiled using the GCC toolchain under both Linux and Windows (using Cygwin.) Compiler directives are included in the Encoder code to allow cross-compiling with the Atmel AVR as the target.

Back to Stensat Projects Page © 2007 Stensat Group LLC