Skip to content

WA8DED hostmode

AXLoRaTNC implements the WA8DED binary host mode protocol for legacy host software. For LinFBB/F6FBB, the recommended setup is KISS through Linux AX.25; see the FBB KISS guide.

Enable hostmode

From the console:

text
mode ded

The mode is stored in NVS and persists across reboots. To return to the interactive console from any mode, send the plain text string console followed by Enter (CR).

Frame format

host → tnc:  [channel] [cmd] [count] [data…]
tnc  → host: [channel] [code] [data…]
  • channel: 1–8 for connected channels, 0 for UI/unproto
  • cmd: 0 = info/data frame; 1 = command frame
  • count: number of data bytes minus 1 (data frames); for command frames this is the command length
  • code: 0 = ack/no event; 1 = info text; 2 = error; 3 = link status; 4 = monitor header; 5 = monitor frame; 6 = connected data; 7 = UI data

Channels

RangePurpose
0UI / unproto (broadcast)
1–8Connected AX.25 channels

Commands (hostmode)

Connection control

CommandFunction
GPoll for any pending event
G0Poll for link-status events only (code 3)
G1Poll for data and link-status events (codes 3, 6, 7)
C <CALL>Connect to CALL on the selected channel
DDisconnect the selected channel
IQuery own callsign
I <CALL>Set own callsign
LQuery link status
JHOST0Leave hostmode, return to terminal mode
JHOST1Enter binary hostmode (TNC responds with ack)
VQuery firmware version string
SQuery selected channel
S <n>Select channel n (0–8)

Parameters

All parameters can be queried (send without argument → TNC replies with current value as info text) or set (send with numeric argument → TNC replies with ack 0). All settings persist in NVS.

CmdParameterDefaultRange
AAuto-LF (append LF after CR)10–1
BDAMA timeout (× 100 ms)1200–255
EEcho (terminal mode)10–1
FFRACK — T1 retry timer (× 100 ms)2500–255
KTimestamp in monitor output00–1
NRetry limit (N2)100–127
OMax outstanding frames (window, MAXFRAME)21–7
PCSMA persistence (0–255, p = (n+1)/256)630–255
RDigipeater on/off00–1
TTX delay (× 10 ms)300–127
WSlot time (× 10 ms)100–127
XTX enable10–1
YMax incoming connections40–8
ZFlow control: bit 0 = RTS/CTS, bit 1 = XON/XOFF30–3
MMonitor mode stringIUsee below
UUnattended mode + connect text00–2

Monitor mode (M)

M queries the current monitor mode string. M <string> sets it. Use M N to disable monitoring.

Monitor mode letters select which frame types are reported:

LetterFrames reported
II-frames (connected data)
UUnnumbered frames (UI, SABM, UA, DISC, DM, FRMR)
SSupervisory frames (RR, RNR, REJ, SREJ)
NNone (monitor disabled)

Example: M IU (default) reports UI traffic and connection control frames but not RR/RNR supervisory frames.

Buffer query (@B)

Query the number of free TX buffers available on the selected channel:

host → tnc:  [ch] [1] [2] @B\0
tnc  → host: [ch] [1] <free-buffers as text>

Reset to defaults (@Q / QRES)

Resets all DED parameters to factory defaults and saves them to NVS.

PACLEN (IPOLL)

Sets the maximum I-frame info field size in bytes (default 60). Large frames are automatically fragmented into PACLEN-sized chunks before being queued to the AX.25 layer.

host → tnc:  [ch] [1] [n] IPOLL <value>\0

Terminal mode (before JHOST1)

In terminal mode (after mode ded but before JHOST1) the TNC accepts plain text commands, one per line. All single-letter parameters above are accepted, plus:

CommandFunction
MYCALL [CALL]Query or set own callsign
UNPROTO [DEST]Query or set unproto destination
BTEXT [text]Query or set beacon text
CONNECT <CALL>Connect on current channel
DISCONNECTDisconnect current channel
JHOST1Switch to binary hostmode
QRESReset all DED parameters to defaults

Event codes (TNC → host)

CodeMeaningData
0Acknowledgement / no eventnone
1Informational textnull-terminated string
2Error textnull-terminated string
3Link status changenull-terminated string (see below)
4Monitor frame header (terminal mode)null-terminated string
5Monitor frame header (hostmode)null-terminated string
6Connected data receivedlength-prefixed bytes
7UI data receivedlength-prefixed bytes
StringMeaning
CONNECTED to <CALL>Incoming or outgoing connection established
DISCONNECTED fm <CALL>Link cleanly disconnected
DISCONNECTING fm <CALL>Disconnect in progress
LINK FAILURE with <CALL>T1 retry limit exceeded (Recovery state)
LINK RESET to station <CALL>SABM received while already connected

In hostmode the channel number is in the frame header byte — the status string contains only the text above. In terminal mode the string is prefixed with (n) so the operator knows which channel changed.

Monitor frame format (code 5)

FM <SRC> TO <DST> [VIA <R1>,<R2>] <TYPE> RSSI=<x> SNR=<y>[:<info>]

<TYPE> is one of: UI, I, RR, RNR, REJ, SREJ, SABM, UA, DISC, DM, FRMR.

Flow control

XON/XOFF (enabled by default, Z bit 1): 0x13 (XOFF) pauses TNC output; 0x11 (XON) resumes. In binary hostmode the control bytes are detected at frame boundaries so they cannot collide with channel bytes.

Hardware RTS/CTS (enabled when variant defines PIN_UART_RTS/PIN_UART_CTS): the UART hardware flow control lines are asserted automatically.

Compatible software

SoftwareSetup notes
F6FBBHost type D; set port to the ESP32 serial port
TFPCX + TSTHOSTLoad TFPCX first (tfpcx -pCOM1 -b9600), then launch TSTHOST
WinPackSelect TNC type WA8DED, set COM port and baud rate
BPQ32 / LinBPQUse port type DED; set PORTCOM to the ESP32 serial device
JNOSInterface type asy with tnc set to ded
Graphic PacketDirect WA8DED port
PaxTermDirect WA8DED port

The following AX.25 parameters are shared between KISS and WA8DED modes:

ParameterDefaultDED command
T1 retry timer25 s (F × 100 ms)F
T2 deferred-ack1.5 s@T2
T3 keepalive180 s@T3
N2 retry limit10N
Window size (MAXFRAME)2O
PACLEN (info field)60 bytesIPOLL

Released under the MIT License.