# AX.25

AX.25 (Amateur X.25) is a data link layer protocol originally derived from layer 2 of the X.25 protocol suite and designed for use by amateur radio operators. It is used extensively on amateur packet radio networks.
AX.25 v2.0 is responsible for establishing link layer connections, transferring data encapsulated in frames between nodes, and detecting errors introduced by the communications channel.
AX.25 v2.2 (1998) improved efficiency, especially at higher data rates. Stations can automatically negotiate payload sizes larger than the previous limitation of 256 bytes. Extended sequence numbers (7 vs. 3 bits) allow a larger window size, the number of frames that can be sent before waiting for acknowledgement. "Selective Reject" allows only the missing frames to be resent, rather than having to wastefully resend frames that have already been received successfully. Despite all these advantages, few implementations have been updated to include these improvements published more than 20 years ago. The only known complete implementation of v2.2, at this time (2020), is the Dire Wolf software TNC.
AX.25 is commonly used as the data link layer for network layer such as IPv4, with TCP used on top of that. AX.25 supports a limited form of source routing. Although it is possible to build AX.25 switches similar to the way Ethernet switches work, this has not yet been accomplished.

## Specification

AX.25 does not define a physical layer implementation. In practice 1200 baud Bell 202 tones and 9600 baud G3RUH DFSK are almost exclusively used on VHF and UHF. On HF the standard transmission mode is 300 baud Bell 103 tones. At the physical layer, AX.25 defines only a "physical layer state machine" and some timers related to transmitter and receiver switching delays.
At the link layer, AX.25 uses HDLC frame syntax and procedures. (ISO 3309) frames are transmitted with NRZI encoding. HDLC specifies the syntax, but not the semantics, of the variable-length address field of the frame. AX.25 specifies that this field is subdivided into multiple addresses: a source address, zero or more repeater addresses, and a destination address, with embedded control fields for use by the repeaters. To simplify compliance with amateur radio rules, these addresses derive from the station call signs of the source, destination and repeater stations.
Media access control follows the Carrier sense multiple access approach with collision recovery (CSMA/CR).
AX.25 supports both virtual-circuit connected and datagram-style connectionless modes of operation. The latter is used to great effect by the Automatic Packet Reporting System (APRS).
A simple source routing mechanism using digipeaters is available at the datalink level. Digipeaters act as simplex repeaters, receiving, decoding and retransmitting packets from local stations. They allow multi-hop connections to be established between two stations unable to communicate directly. The digipeaters use and modify the information in the frame's address field to perform this function.
The AX.25 specification defines a complete, albeit point to point only network layer protocol, but this has seen little use outside of keyboard-to-keyboard or keyboard-to-BBS connections. NET/ROM, ROSE, and TexNet exist to provide routing between nodes. In principle, a variety of layer 3 protocols can be used with AX.25, including the ubiquitous Internet Protocol (IP). This approach is used by AMPRNet, which is an amateur radio TCP/IP network using AX.25 UI-frames at the datalink layer.

## Implementations

Traditionally, amateur radio operators have connected to AX.25 networks through the use of a terminal node controller, which contains a microprocessor and an implementation of the protocol in firmware. These devices allow network resources to be accessed using only a dumb terminal and a transceiver.
AX.25 has also been implemented on personal computers. For example, the Linux kernel includes native support for AX.25. The computer connects to a transceiver via its audio interface or via a simple modem. The computers can also interconnect to other computers or be bridged or routed to TNCs and transceivers located elsewhere using BPQ over Ethernet framing, which is also natively supported by the Linux kernel to facilitate more modern setups with the actual transceivers directly placed under or in the antenna mast, creating a 'low loss', shorter RF wiring need, and replacing expensive and long and thick coax cables and amplifiers with cheap fiber (RFI (both ways)/EMP/lightning resistant) or copper Ethernet wiring. BPQ Ethernet framing allows connecting entire stacks of TNC+transceiver pairs to any existing network of computers which then can all access all radio links offered simultaneously (transparently bridged), communicate with each other internally over AX.25, or with filtered routing select specific TNCs/radio frequencies.
Dire Wolf is a free open-source replacement for the 1980s-style TNC. It contains DSP software modems and a complete implementation of AX25 v2.2 plus FX.25 forward error correction. It can function as a digital repeater, GPS tracker, and APRS Internet Gateway (IGate) without any additional software.

### KISS-mode framing

    See full article at KISS (TNC)
AX.25 is often used with a TNC that implements the KISS framing as a low-cost alternative to using expensive and uncommon HDLC controller cards.
The KISS framing is not part of the AX.25 protocol itself nor is it sent over the air. It merely serves to encapsulate the protocol frames in a way that can successfully pass over a serial link to the TNC. The KISS framing is derived from SLIP, and makes many of the same assumptions, such as there only being two "endpoints" involved in the conversation. With SLIP, these were the two SLIP-connected hosts; with KISS, it is assumed that the KISS framing link is over serial with only the host computer and the TNC involved. Among other things, this makes it awkward to address multiple TNCs without having multiple (serial) data channels.
Alternatives to KISS do exist that address these limitations, such as 6PACK.

## Applications

AX.25 has most frequently been used to establish direct, point-to-point links between packet radio stations, without any additional network layers. This is sufficient for keyboard-to-keyboard contacts between stations and for accessing local bulletin board systems and DX clusters.
In recent years, APRS has become a popular application.
For tunneling of AX.25 packets over IP, AXIP and AXUDP are used to encapsulate AX.25 into IP or UDP packets.

## Limitations

At the speeds commonly used to transmit packet radio data (rarely higher than 9,600 bit/s, and typically 1,200 bit/s), the use of additional network layers with AX.25 is impractical due to the data overhead involved. This is not a limitation of AX.25 per se, but places constraints on the sophistication of applications designed to use it.
HDLC protocols identify each frame by an address. The AX.25 implementation of HDLC includes sender and destination station call-sign plus four-bit Secondary Station Identifier (SSID) value in range 0 through 15 in the frame address. At ITU WARC2003 the radio amateur station callsign specification was amended so that the earlier maximum length of six characters was raised to seven characters. However, AX.25 has a built-in hard limit of six characters, which means a seven-character callsign cannot be used in an AX.25 network.
AX.25 lacks an explicit port (or SAP); the SSID often assumes this role. Thus there can be only one service per AX.25 station SSID address, which is often kludged around with varying degrees of success.
Some amateurs, notably Phil Karn KA9Q, have argued that AX.25 is not well-suited to operation over noisy, limited-bandwidth radio links, citing its lack of forward error correction (FEC) and automatic data compression. However, a viable widely adopted successor to AX.25 has yet to emerge. Likely reasons may include:
* a large existing deployment of recycled narrowband FM radios and especially existing APRS applications,
* easy availability of cheap, low-power FM transmitters, especially for the 430 MHz UHF band, to match existing legacy radio gear,
* new radio level modulations would need different radio gear than what is currently in use and the resulting system would be incompatible with the existing one – thus requiring a large initial investment in new radio gear,
* adoption of newer line codings potentially including forward error correction takes more effort than the 1,200 bit/s AFSK of Bell 202. Previously sufficient small 8-bit microprocessors with 128 bytes of RAM would not be enough, and new ones might cost US$30 instead of US$3. Phil Karn did demo decoding of this new modulation of his by running it on a Pentium II machine – some 10 years later, mid-level embedded microprocessors are capable enough to do the same with under US$50 system cost.
Despite these limitations, an extension to the AX.25 protocol, supporting forward error correction, has been created by the TAPR. This extension is called FX.25.
Small gadget transmitters do not need to know what is being transmitted. There is only a need to monitor channel occupation by radio receiver RSSI (Received Signal Strength Indication) to know when not to send. Transmitting interleaved Reed-Solomon FEC signal in some smart modulation needs a lot fewer resources than reception of the same signal, thus a sufficient microprocessor might cost just US$5 instead of US$30 and a system cost might stay below US$50, transmitter included. However, in recent years, the ability to receive as well as send using cheap microcontrollers (such as the Atmel AVR or the Motorola 68HC08 families) has been demonstrated.
It seems, however, that any new system that is not compatible with the current Bell 202 modulation is unlikely to be widely adopted. The current modulation seems to fulfill sufficient need that little motivation exists to move to a superior design, especially if the new design requires significant hardware purchases.
Most recently, a wholly new protocol with forward error correction has been created by Nino Carillo, KK4HEJ, called Improved Layer 2 Protocol (IL2P).