G7JJF APRS Client · Manual App home PDF

Chapter 6

Connections

APRS-IS and the six RF interfaces — what they are and how to set them up.

The app can use APRS-IS and up to six RF interfaces at the same time. Every interface feeds the same packet stream, and each received packet is tagged with where it came from (IS, KISS, BT, BLE, AGW, USB or AUDIO). All interfaces are opened from Menu → APRS Connections.

#How transmissions are routed

TrafficWhere it goes
Position beaconsEvery connected interface at once: APRS-IS (if logged in) and every connected RF interface, including USB and Audio. RF copies use the RF path from Settings.
Messages and acksThe RF interface the other station was heard on directly in the last 30 minutes (KISS, Bluetooth, BLE, AGW, USB or Audio), if it is still connected — even if the station has since also been seen via APRS-IS. Otherwise wherever it was last heard; APRS-IS if that interface is not connected or the station is unknown. Long-press Send to override (chapter 9).
RetriesThe same interface as the original send, falling back to APRS-IS if it has disconnected.
ObjectsAPRS-IS plus every connected RF interface.
BulletinsAPRS-IS plus every connected RF interface.
TX iGateEvery connected RF interface.
Packet terminalOne RF port, chosen in the order Bluetooth, BLE, TCP KISS, AGW, USB.

#APRS-IS

APRS-IS is the internet backbone of APRS. Connect by tapping the status text, the APRS-IS row in the menu, the APRS Quick Settings tile, or Connect IS in Android Auto. All of these use your saved settings.

New in 1.8.2. Connecting from the Quick Settings tile, from Android Auto, or automatically after a reboot now uses your full saved settings. Previously these paths could log in with built-in defaults, and a normal connect could temporarily switch off iGating, the RF path and the extra filter clauses.

What happens when you connect

  1. The server name is looked up; IPv4 addresses are tried first, then IPv6, each with a 5-second timeout.
  2. The app sends its login line: user CALL-SSID pass NNNNN vers G7JJF-AprsClient 1.9.9 filter r/lat/lon/km … followed by any prefix, buddy, messages-only and extra clauses.
  3. When the server replies with its # logresp line the state becomes logged in. If Beacon on connect is set, a beacon is sent now.
  4. A #keepalive line is sent every 240 seconds so that routers and the server keep the connection open.

Reconnection

#KISS TNC over TCP/IP

Connects to any TNC that offers KISS over a TCP socket — most commonly Direwolf, but also hardware TNCs with a network port, soundmodem and similar. Open Menu → APRS Connections → KISS TNC TCP/IP.

FieldDescription
TNC HostHost name or IP address. Default localhost (Direwolf running on the phone, e.g. in Termux). For Direwolf on a Raspberry Pi use its LAN address, e.g. 192.168.1.50.
PortTCP port. Direwolf's default KISS port is 8001.

Tap Connect. The host and port are remembered. The app sends standard KISS data frames on port 0 (FEND/FESC escaping as per the KISS specification) and accepts frames from the TNC. APRS UI frames go into the packet stream; other AX.25 frames are passed to the packet terminal.

# direwolf.conf — make sure the KISS TCP port is enabled
KISSPORT 8001
AGWPORT 8000
Note. The TCP KISS connection does not reconnect by itself if the TNC goes away; connect again from the menu. Received packets are handled by the background service, so reception and iGating carry on with the screen off or the app closed.

#Bluetooth TNC (Classic / SPP)

For TNCs that use the Bluetooth Serial Port Profile: Mobilinkd TNC2/TNC3, many radios with built-in Bluetooth KISS TNCs (for example Kenwood TH-D74/D75, BTECH UV-Pro and similar), and Arduino/ESP32 home-brew TNCs.

  1. Pair the TNC first in Android Settings → Bluetooth. If no paired devices are found the app offers Open BT Settings.
  2. Open Menu → APRS Connections → Bluetooth TNC.
  3. Choose the Protocol: KISS for binary KISS framing (almost all modern TNCs) or Text for TNCs that output monitored packets as text lines in TNC2 format (CALL>DEST,PATH:info).
  4. Tap the device in the list. The app connects and remembers the device and mode.

While connected, the dialog shows Disconnect at the top of the list. In Text mode, lines that contain both > and : are treated as packets; everything is also shown in the Text Terminal. Bluetooth TNC packets are processed by the background service, so they keep arriving with the screen off or when you are using Android Auto.

For connected-mode packet (the AX.25 terminal) the app inserts small gaps between frames on Bluetooth so that half-duplex radio TNCs have time to switch between receive and transmit.

#BLE TNC (Bluetooth Low Energy)

For radios and TNCs that carry KISS over Bluetooth Low Energy. Three BLE serial profiles are supported, and the app uses whichever the device offers:

BLE devices do not need to be paired first. A radio accepts only one BLE connection at a time, so disconnect the maker's own app before connecting.

  1. Open Menu → APRS Connections → BLE TNC. Scanning starts immediately and the title shows how many devices were found.
  2. Each device is listed with its name, address and signal strength (RSSI). Only devices advertising one of the supported services are shown.
  3. Tap a device to connect. The status line shows which profile was found. The app subscribes to the receive characteristic and sends KISS frames in 20-byte chunks, each confirmed by the TNC when it supports that.

The list stays open while the app connects and its status line shows progress. A failed attempt is retried twice; if the link still cannot be set up within 20 seconds the reason is shown:

#Radio Control (UV-PRO, GA-5WB, VR-N76, VR-N7500)

Radios with Benshi firmware — BTECH UV-PRO, Radioddity GA-5WB, Vero VR-N76 and VR-N7500 — can be controlled from the app over Bluetooth LE. Connect the radio as a BLE TNC once, then open Menu → APRS Connections → Radio Control; the app remembers the radio, so later it works even when the BLE TNC is not connected. The app reads the radio's memory channels and lists each with its name, receive frequency, offset, CTCSS/DCS tone, bandwidth and power; A and B mark the channels selected now. Tap a channel and confirm to select it on VFO A — for example to move to the APRS channel, or to 145.825 MHz for an ISS pass.

Only the selected channel is changed: the app reads the radio's settings, changes the channel number and writes them back unchanged otherwise, then reads them again to check. Channel contents are only read, never written. The protocol follows the open benlink project. If a radio does not answer, close the window and open it again; a radio connected over Bluetooth Classic only, or another make, shows a message that it has no control service.

#AGW Interface

Connects to the AGWPE API offered by Direwolf, AGWPE, UZ7HO soundmodem and similar. Open Menu → APRS Connections → AGW Interface and enter the Host (default localhost), Port (default 8000) and Radio Port (0 = the first radio). On connect the app asks the engine for port information and turns on raw monitoring; it sends APRS packets as unproto frames with your digipeater path. The dialog lists the AGW frame types used for reference.

#USB Serial TNC

For TNCs connected with a USB OTG cable: the KV4P HT (ESP32 handheld), CP2102, CH340 and FTDI based KISS TNCs, and Direwolf on another computer via a USB-serial link.

FieldDescription
ProtocolKISS (default) or Text.
Baud rate1200, 2400, 4800, 9600 (default), 19200, 38400, 57600 or 115200. Data format is fixed at 8N1.

Plug the device in, open Menu → APRS Connections → USB Serial, and tap Connect. Android asks for permission to use the USB device; allow it. When a recognised device is attached the dialog shows Found: device name (manufacturer). A KV4P HT (CP2102, VID 0x10C4 / PID 0xEA60) is preferred if several devices are attached, and is reset through DTR/RTS when the port opens.

USB packets are received in the background service and can be gated by the RX iGate. Beacons are sent on USB, and so are messages and acks to stations heard on USB.

New in 1.8.2. The USB KISS receiver now decodes escaped bytes correctly and handles back-to-back frames that share a single FEND delimiter.

#Audio DSP TNC

Two speeds: 1200 baud Bell 202 (mark 1200 Hz, space 2200 Hz) for VHF APRS on 144.800 / 144.390 MHz, and 300 baud with 1600/1800 Hz tones for HF APRS (for example 10.1476 MHz LSB, as Direwolf's MODEM 300). Choose with the chips in the Audio TNC window; the choice is remembered. On HF, tune so the signal sits on the two lines in the waterfall — within about 30 Hz; further off, decoding falls away.

A complete 1200-baud Bell 202 AFSK modem in software, using the phone's microphone input and audio output. It lets you receive — and transmit, with a suitable interface — without any TNC hardware.

ItemValue
ModulationBell 202 AFSK, mark 1200 Hz, space 2200 Hz, 1200 baud, NRZI, HDLC framing
Sample rate22 050 Hz, 16-bit mono. The phone's unprocessed audio input is used where it has one (otherwise its voice-recognition input), avoiding the automatic gain and noise suppression meant for speech.
DemodulatorTone correlators over one bit for each tone, separate automatic level control for mark and space (so radio de-emphasis or pre-emphasis doesn't matter), and a digital PLL that keeps the bit clock locked to the incoming signal. CRC-CCITT checked; frames 18–400 bytes.
TX preamble45 flags (300 ms) before the frame, so a VOX has time to open; 5 after, plus 0.25 s silence. Frames sent together go in one transmission.
TX levelFixed 90% of full scale; adjust with the phone's media volume
PTTNot keyed by the app — use the radio's VOX or a VOX-keyed interface

The dialog contains a live waterfall (0–3400 Hz, mark and space marked) so you can see the two tones and set levels. It adjusts itself to the input level: the background noise shows dark blue and signals up to 50 dB stronger run through green and yellow to red. The dialog also shows the last eight received packets, and a transmit box pre-filled with a test position packet.

Wiring: radio speaker or data output to the phone's microphone input (through an attenuator and isolation as needed) and the phone's headphone output to the radio's microphone input, with VOX on the radio. Commercial APRS audio cables with a TRRS plug are available for most handhelds.

New in 1.8.2. Received audio packets now keep every byte of the information field, so Mic-E and compressed positions decoded by the Audio TNC are correct.
Important. Transmitting through the audio TNC keys your radio through VOX. Check the deviation on a second receiver and keep the media volume at the level that gives clean decoding — overdriven audio is the commonest cause of packets not being heard.

#TNC Bridge — the phone as a network TNC

Menu → APRS Connections → TNC Bridge lets a program on a PC use the radio the phone is connected to: Xastir, YAAC, APRSIS32, PinPoint, Outpost, a BBS or node program — anything that can use a KISS TNC over TCP/IP. Choose the radio interface (any connected one: Bluetooth, BLE, USB, TCP KISS, AGW or the audio modem) and a port (default 8001), and tap Start bridge. The window shows the phone's network address; in the PC program choose a KISS TCP/IP TNC at that address and port.

Important. While the bridge runs, any device on the network can transmit through your radio. Use it only on your own network, and stop it when you have finished.

#Text Terminal

Menu → APRS Connections → Text Terminal opens a plain serial terminal on the Bluetooth TNC (or the USB TNC if Bluetooth is not connected). Use it to talk to a TNC's command interpreter, to check that data is arriving, or with Text-mode TNCs. Received text is green, what you send is in the accent colour, status lines are amber. Each line you send ends with a carriage return. The terminal keeps the last 500 lines; Clear empties it.