KISS over TCP
A network TNC is a TNC you reach over TCP instead of a cable or a pairing: Direwolf running on a shack computer, or any other software or hardware TNC that serves KISS on a network port. The app connects to it like a client, and from there the channel behaves like every other radio link.
When this is the right choice
- A shack computer with a soundcard TNC. Direwolf attached to a radio does the modulating and demodulating, and the phone becomes the APRS station that uses it for messaging, beaconing and the packet log, all over the shack radio.
- SDR receive setups. A receive chain built around an SDR feeding Direwolf gives the app RF receive coverage with no transmitter involved.
- Testing. A software TNC on your own network is the easiest way to watch the app talk KISS without dedicating hardware to it.
- Listening to a LoRa APRS iGate. A LoRa iGate running CA2RXU's firmware can serve the packets it hears on a TCP port, as plain text. See A LoRa iGate's feed below.
If the TNC is a physical box next to you rather than a program on the network, a direct connection over Bluetooth, Bluetooth LE, or USB fits better. And a network TNC is not APRS-IS: this channel speaks raw KISS to a modem on a radio, not the internet backbone.
Set it up
- Open the Radio screen on the tab bar and tap Add channel.
- Pick Network TNC, listed as "KISS or text over TCP: Direwolf, a network TNC, a LoRa iGate".
- Enter the Host and the Port. The host is the address of the machine running the
TNC, such as
192.168.1.50ordirewolf.local.
The port defaults to 8001, and the screen says why: "Direwolf listens on 8001 unless it
was told otherwise." In Direwolf's configuration that is the KISSPORT setting. If you
paste a combined host:port address into the Host box, which is how a KISS server is usually
written down, the app splits it into the two fields for you.
Switch the channel on and it shows what it is doing: "Connecting to
192.168.1.50:8001", and then the link's own state, such as CONNECTING, CONNECTED or
RECONNECTING. If the connection drops, the app keeps retrying on its own.
Protocol and transmitting
Protocol is KISS unless you change it, which is right for Direwolf and every other KISS TNC. Plain text reads one packet per line of text, which is what a LoRa iGate's port sends.
Transmit on this channel is on by default, so beacons and messages can go out through the TNC. Switched off, the channel only listens: nothing at all is sent to the address, not even the TNC parameters, and the channel row says RECEIVE ONLY. Transmit delay and Send TNC parameters only appear for a KISS channel that transmits.
Two radios on one TNC
Some TNCs serve more than one radio over a single connection: Direwolf set up with two channels, or a Kantronics KAM with its VHF and HF ports. KISS tells the radios apart by a port number, and in the app each radio is its own channel.
- Add one Network TNC channel per radio, all with the same host and port.
- On each channel, set KISS port to that radio's number. Direwolf numbers its channels
from 0, so
CHANNEL 0in its configuration is port 0 andCHANNEL 1is port 1.
Each channel then hears only its own radio's packets and transmits only through that radio, and each one can be picked separately when you choose which links carry a beacon. A TNC with one radio uses port 0, which is the default, so there is nothing to change.
If a channel connects but hears nothing while the TNC is sending for a different port, the channel row says so, for example: "This TNC is sending on KISS port 1. Set KISS port to 1 to hear it."
KISS port is on every KISS channel: network, Bluetooth, Bluetooth LE and USB. It is not shown when Protocol is Plain text, which has no ports.
A LoRa iGate's feed
- Add a Network TNC channel and enter the host and port that the iGate's owner gave you.
- Set Protocol to Plain text.
- Switch Transmit on this channel off, unless the iGate's owner has said you may transmit through it. The iGate puts on the air whatever it is sent, under your callsign, on its frequency.
The feed also carries the iGate's own status lines; the app skips anything that is not a packet. Packets arrive marked as heard on RF, because they were heard on RF by the iGate's radio, which may be a long way from you.
The same-network requirement
The phone has to be able to reach the host. In practice that means both on the same Wi-Fi/LAN, or connected through a VPN that puts them on one network. A TNC on your home LAN is not reachable from a mobile connection out in the world unless you have arranged that yourself. Exposing a raw KISS port to the open internet is not something to do casually, since anyone who finds it can transmit through your radio.
Also check the TNC's side: Direwolf must actually be listening (KISSPORT 8001 in its
configuration), and the computer's firewall must allow the connection in.
In the Windows app
A Network TNC channel works the same way in the Windows app. With
Direwolf running on the same computer, the host is 127.0.0.1.
The Windows, Linux and Mac apps can also be the TNC that other programs connect to, with the phone app among them. See KISS server.
A quiet link
Once connected, the channel row counts frames received and sent, and a link that is up but
hearing nothing shows CONNECTED · QUIET rather than claiming either success or failure. A
quiet channel is normal in a low-traffic area. If nothing is ever
received, look at the far end first: is Direwolf decoding anything itself? Its own log
prints every packet it hears, which cleanly splits "the radio side is silent" from "the
network side is broken".
A network TNC channel sits alongside your other connections, so you can run it together with APRS-IS, a Bluetooth TNC, or the audio modem, and pick which links carry each beacon. See Connect a radio for how channels work together.
Last updated 23 September 2026