Date: January 02, 2026
Version: 1.0.1
Author: Kris Kirby, KE4AHR
PyAX25_22 implements AX.25 v2.2 (July 1998) Link Layer protocol in full, with no known deviations.
- All frame types
- I-frames (information)
- S-frames (RR, RNR, REJ, SREJ)
- U-frames (SABM/SABME, UA, DISC, DM, FRMR, UI, XID, TEST)
- Modulo 8 and Modulo 128 operation
- Full address field
- Source and destination callsigns with SSID (0-15)
- Up to 8 digipeaters with proper H-bit (has-been-repeated) handling
- Command/Response (C) bit support
- Bit stuffing and destuffing
- FCS: CRC-16/CCITT-FALSE (polynomial 0x8408, init 0xFFFF)
- XID parameter negotiation
- Modulo, window size (k), max frame (N1), SREJ support
- Connected mode
- Complete state machine per Section 4 SDL diagrams
- Adaptive T1 acknowledgment timer (SRTT algorithm)
- T3 idle probe timer
- Full flow control (RR/RNR/REJ/SREJ)
- Outstanding frame tracking and retransmission
- Unconnected mode
- UI frames for beacons, APRS, PACSAT broadcasts
- Transport interfaces
- KISS over serial (KISSSerial) and TCP (KISSTCP)
- XKISS multi-drop with active/passive polling and per-port DIGIPEAT
- SMACK (Stuttgart Modified Amateur Radio CRC-KISS) with CRC-16 auto-switch
- AGWPE TCP/IP complete client (AGWPEClient) and bridge to serial TNC (AGWSerial)
- FX.25 Reed-Solomon forward error correction (FX25Encoder, FX25Decoder)
- Concurrency
- Synchronous (threaded) APIs: KISSSerial, KISSTCP, XKISS, SMACK, AGWPEClient
- Asynchronous (asyncio) APIs: AsyncKISSTCP, AsyncAGWPEClient
- Thread-safe background I/O with locks and queues
- 324/324 unit and integration tests passing (100%)
- End-to-end integration tests with mock transports
- Automated compliance validation script (
evaluations/compliant_report.py)
Implementation based directly on:
- AX.25 Link Access Protocol for Amateur Packet Radio v2.2 (July 1998)
- Multi-Drop KISS Operation -- Karl Medcalf WK5M
- AGW TCP/IP Socket Interface -- George Rossopoulos SV2AGW (2000)
- AGWPE TCP/IP API Tutorial -- Pedro E. Colla LU7DID & SV2AGW
- PACSAT File Header Definition -- Jeff Ward G0/K8KA & Harold Price NK6K
PyAX25_22 is fully compliant with AX.25 v2.2 and ready for production use in amateur packet radio applications.
73 de KE4AHR
Copyright (C) 2025-2026 Kris Kirby, KE4AHR