Skip to content

Latest commit

 

History

History
94 lines (69 loc) · 2.29 KB

File metadata and controls

94 lines (69 loc) · 2.29 KB

Ultra TNC Interface

ultra_tnc exposes a legacy-compatible TCP TNC shell backed by ProjectUltra's ProtocolEngine, StreamingEncoder/StreamingDecoder, and SDL audio I/O.

Run

./build/ultra_tnc \
  --audio-output "USB Audio Device" \
  --audio-input "USB Audio Device" \
  --callsign N0CALL \
  --port 8300

The command port is --port and the binary data port is --port + 1. By default, ultra_tnc binds to 127.0.0.1:8300 and 127.0.0.1:8301. Use --bind 0.0.0.0 only when you intentionally want LAN access.

For TCP-only smoke tests, use --audio-output none --audio-input none.

Client Configuration

Point the client at the command port:

[[ax25]]
  port = "ultra"

[[transport.legacy_tnc]]
  address = "127.0.0.1:8300"

If your client separates command and data ports, use:

  • Command: 127.0.0.1:8300
  • Data: 127.0.0.1:8301

Supported TNC Commands

The TNC shell accepts the Phase 1/2 command set:

  • VERSION
  • MYCALL <call> [secondary...]
  • LISTEN ON|OFF|CQ
  • CONNECT <src> <dst>
  • DISCONNECT
  • ABORT
  • BW500, BW2300, BW2750
  • BUFFER
  • SN
  • BITRATE
  • STATS (ProjectUltra extension; see below.)
  • COMPRESSION, CHAT, CWID
  • PUBLIC, P2P, client-mode probes, IGNOREKISSDCD, RETRIES, CALLINT

STATS

STATS\r returns a single-line snapshot of ARQ counters and the current PHY configuration:

STATS frames_sent=42 frames_recv=38 retx=5 timeouts=2 failed=0 \
  out_of_order=1 rate=R1_2 mod=DQPSK mode=OFDM_CHIRP snr=15 bps=2300 \
  backlog=128

Fields are space-separated key=value pairs. Counters are session- scoped (cleared on disconnect/reset). rate, mod, mode track the current adaptive selection; snr/bps mirror the existing SN/BITRATE events; backlog mirrors BUFFER. Existing clients ignore unknown commands, so this is safe to leave on.

Bandwidth mapping:

  • BW500 selects OFDM_NARROW
  • BW2300 selects OFDM_CHIRP
  • BW2750 is accepted for legacy compatibility and maps to OFDM_CHIRP

Binary payload bytes are sent on the data port while connected. Received ProtocolEngine binary payloads are emitted on the data port.

Quick Check

./build/ultra_tnc --audio-output none --audio-input none --port 18300
printf 'VERSION\r' | nc 127.0.0.1 18300

Expected reply:

VERSION 0.3.1