G7JJF APRS Client · Manual App home PDF

Chapter 13

AX.25 Packet Terminal

Connected-mode packet to BBSs and nodes.

The AX.25 Packet Terminal makes connected-mode packet radio connections to BBSs, nodes and other stations — the traditional keyboard-to-keyboard packet that predates APRS. It works over every RF interface, including the phone's own audio modem.

#Opening the terminal

Connect an RF interface, then choose Menu → APRS Connections → AX.25 Packet Terminal. Your plain callsign (without SSID) is used as the source callsign so that it matches BBS user records.

#One connection per interface

Each RF interface — Bluetooth, BLE, TCP KISS, AGW, USB and the audio modem — has its own page in the terminal, with its own connection, terminal text and Monitor, so you can be connected to a BBS through one radio and a node through another at the same time. An interface on a packet radio frequency can be set to packet only (Settings → RF → RF Interfaces, chapter 5) so that no APRS goes in or out of it. The buttons under the title choose the page:

ButtonMeaning
● BLE GB7NASConnected to GB7NAS on that interface (shown in green).
◐ BLE GB7NASConnecting or disconnecting.
○ BLEInterface connected, no link.
BLE (dimmed)Interface not connected — nothing can be started there.
… (3)Three lots of text have arrived on a page you are not looking at.

Connections stay up when you close the terminal window. Closing it tells you which links are still open; reopen the terminal to carry on, and anything received meanwhile is waiting on the page. A link ends when you press Disconnect, when the other station or the radio drops it, or when the app is shut down. The terminal opens on the page you used last, if it is still connected.

#Layout

#Monitor tab

The Monitor tab shows every frame received or sent on that page's interface, connected-mode and APRS alike — time, addresses and path (* marks a digipeater that has repeated it), the frame type with N(S), N(R) and poll/final, and the information field:

19:42:07 GB7CPL-3>G7JJF [I(N(S)=2,N(R)=5,P)] pid=0xF0 "Msg# 1234 ..."
19:42:08 G7JJF>GB7CPL-3 [RR(N(R)=3,F)]

Frame types are I, RR, RNR, REJ, SABM, UA, DISC, DM, FRMR and UI. P, F or P/F shows the poll/final bit. Received frames are green and your own frames are in the accent colour; a saved Monitor file marks each line RX or TX instead.

Frames are collected all the time, whether or not the terminal is open, and the last 1,000 are kept for each interface until the app is closed — so the Monitor is also the place to look at what an interface has been hearing. The list follows new frames unless you have scrolled up. Clear and Save in the title bar act on the Monitor while it is showing.

A text-mode TNC (Bluetooth or USB without KISS) delivers decoded text rather than AX.25 frames, so its Monitor stays empty.

#Connecting through the audio modem

Start the audio modem (Menu → APRS Connections → Audio DSP TNC) and choose the Audio page. The modem is half duplex: anything it decodes while transmitting, or within half a second after, is taken to be its own signal and ignored. Frames waiting to go out together — a window of I-frames, say — are sent in one transmission, so the radio keys up once. The radio is keyed by VOX, which takes a moment to open and to drop out, so on a busy or slow link raise T1 a little (15–20 s) in Settings → RF → AX.25 Packet, and a smaller window (2–4) helps.

NET/ROM frames (PID 0xCF) are decoded too. A NODES broadcast is shown with the sender's alias and one line per route (alias:callsign, best neighbour and quality); network packets show origin, destination, time-to-live and the transport opcode — CONN REQ (with user and originating node), CONN ACK, CONN REFUSED, DISC REQ, DISC ACK, INFO (with sequence numbers and text) and INFO ACK, plus any CHOKE, NAK or MORE flags.

08:58:12 GB7NAS-7>NODES [UI] NET/ROM NODES from NASNOD
    NASBBS:GB7NAS-1 via GB7NAS-7 q=255
08:58:20 GB7NAS-7>GB7DIN-8 [I(N(S)=3,N(R)=5)] NET/ROM GB7NAS-4→GB7DIN-8 ttl=7 INFO cct=0345 S=1 R=2 "..."

Your own frames appear as they are handed to the TNC. If a TNC holds a frame for more than two seconds (typically because it is waiting for a clear channel), the terminal reports TNC took N s to accept the last frame. While a frame is held, further acknowledgements are not queued up behind it: only one RR waits, and it carries the current N(R) when it goes.

The terminal implements AX.25 version 2.0 connected mode (modulo 8) as used by BPQ32, LinBPQ, FBB, JNOS and most nodes:

MechanismBehaviour
Address formatThe SABM goes out in the original (v1) format, which every node accepts. As soon as the node's own frames show AX.25 v2 command/response bits, the terminal uses them too: I-frames, polls and DISC as commands; acknowledgements, F=1 answers and UA as responses. v2 nodes such as BPQ only accept a poll answer that is marked as a response.
ConnectSABM with P=1, repeated every T1 up to N2 times. UA completes the link; DM means refused. A remote asking for SABME (modulo 128) is answered with DM so it falls back to SABM.
SendingText is split into I-frames of up to the configured length and up to window frames are sent before waiting for acknowledgement.
ReceivingIn-sequence I-frames are shown and acknowledged with RR after the response delay (immediately if the frame had P set). An out-of-sequence frame causes one REJ; an old duplicate is acknowledged again.
T1 (ack timer)If an acknowledgement is overdue, the oldest frame is resent with P=1 (or an RR poll is sent). Progress resets the retry count; N2 failures in a row drop the link with Link failure.
T3 (idle timer)300 s — the value recommended in the AX.25 specification. After five minutes of silence the link is checked with an RR poll.
BusyRNR from the other end pauses sending until it is ready again.
DisconnectDISC, waiting for UA; after two unanswered T1 periods the link is closed anyway. A SABM received while connected resets the link.

T1, N2, window, frame length and response delay are set in Settings → AX.25 PACKET. The defaults (10 s, 10 retries, window 4, 128 bytes, 0.4 s) follow common TNC practice for 1200-baud links. T1 is the value for a direct link: when connecting via digipeaters it is stretched automatically to T1 × (1 + 2 × digipeaters) — 30 s via one, 50 s via two — because each one adds another trip over the air. On a poor or busy link a smaller window (1–2) helps.

Fixed values: T3 (idle-link poll) 5 minutes; disconnect gives up after two unanswered DISCs; on Bluetooth the app waits 0.6 s after the last received frame before transmitting and 150 ms between frames, so half-duplex radio TNCs can switch over. TX delay, persistence and slot time are set in the TNC or radio itself.

Status lines in the terminal tell you what is happening: Connecting to X…, Retrying SABM (n/N)…, Connected to X, Connection refused (DM), X ended the link, Link reset by X, Link failure — no response from X after N retries, Disconnected.

New in 1.8.2. The terminal was audited against the AX.25 specification: poll/final handling, T1/T3 timers, retry counting, REJ recovery and RNR were all corrected; T3 now defaults to 300 s; the header ✕ closes the terminal correctly; and the Monitor labels P and F bits.
Note. Only outgoing connections are supported; an incoming connection request is refused with DM.