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 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 |