// interfaces

Network interfaces

An interface is the way Reticulum sends bytes: over TCP, LoRa, BLE, serial or something else. Reticulum treats them all the same way, so you can use several connections at once on a node.

Interface families

Reticulum interfaces fall roughly into five families. Usually you start with one or two kinds and only expand later.

Family Interfaces When
IP-based TCPClient, TCPServer, UDP, AutoInterface, Backbone, I2P Internet, LAN, anonymous connections
LoRa / RNode RNodeInterface, RNodeMulti Off-grid radio, long range mesh
Bluetooth BLE RNode bridge, Bluetooth Peer Mobile, radio without a cable, phone-to-phone
Serial / Packet radio Serial, KISS, AX.25 KISS, HDLC, Pipe Existing radio hardware, TNCs, modems
Other Pipe Bytes through any subprocess with stdin/stdout

IP, LAN and I2P

Interface What it does Config example
TCPClientInterface Outgoing TCP connection to a hub, public server or transport node. Auto-reconnect when dropped. target_host = voorbeeld.nl
target_port = 4242
TCPServerInterface Accepts incoming TCP connections. Run on a host with a routable address or behind port-forward. listen_ip = 0.0.0.0
listen_port = 4242
AutoInterface Zero-config LAN discovery via IPv6 multicast. Automatically finds other nodes on the same subnet. Discovery on UDP 29716, data on UDP 42671. enabled = true
group_id = reticulumnet
Backbone High-throughput TCP interface for WAN links. Intended for infrastructure and server roles. target_host = backbone.example
target_port = 4243
I2P Transport over the I2P overlay network. Hides IP addresses on both sides. Slower but anonymous. i2p_tunneled = yes

AutoInterface does not work on managed switches that drop multicast, hotel or captive-portal wifi that isolates clients, and most commercial VPNs without IPv6 multicast. On those networks use TCPClientInterface instead.

LoRa and RNode

RNode interfaces connect to LoRa hardware over USB serial, Android USB-OTG, Bluetooth LE or a TCP bridge. The radio does the modulation, Reticulum does the rest. See LoRa network for frequency settings and the hardware page for supported boards.

RNode over TCP is not the same as a TCPClientInterface. A TCPClient connects to another Reticulum node. RNode TCP connects to the radio's KISS control stream: packets still go over LoRa on the air.

# RNode over USB

[[LoRa Radio]]

type = RNodeInterface

port = /dev/ttyUSB0

frequency = 869463000

bandwidth = 125000

spreadingfactor = 8

codingrate = 5

# RNode over TCP (radio by the window via WiFi)

[[LoRa Radio WiFi]]

type = RNodeInterface

port = tcp://192.168.1.50:7633

frequency = 869463000

bandwidth = 125000

spreadingfactor = 8

codingrate = 5

Bluetooth

Two Bluetooth dialects that are not interchangeable:

Type What it does Hardware needed
BLE RNode bridge Connects a phone wirelessly to a LoRa radio. KISS frames over BLE instead of USB. Same radio, just a different transport to the modem. BLE-equipped RNode or Ratdeck
Bluetooth Peer Direct phone-to-phone or laptop-to-phone connection. Forms a Reticulum link without radio, router or internet. None, just BLE on both devices

Pairing: put the RNode in pairing mode (hold the left button until the screen shows a 6-digit passkey), scan in the app, enter the passkey. Bonding is persistent: next time the app connects automatically.

Serial and packet radio

Serial is the lowest common transport. It works over copper, RS-232 cables, AX.25 packet radio on amateur bands, LoRa modems on ISM bands and arbitrary half-duplex links. No DHCP, no router, no provider: two endpoints and a framer in between.

Interface When
SerialInterface Direct point-to-point cable, hardware that does not speak KISS or HDLC. Minimal overhead.
KISSInterface Hardware TNCs, LoRa modems with KISS firmware, anything labelled "KISS-compatible".
AX.25 KISS Amateur radio gateways. AX.25 framing with callsigns over KISS.
HDLC / Pipe Raw HDLC framing or bytes through a subprocess with stdin/stdout.

Both sides must use exactly the same parameters: baudrate, databits, parity, stopbits. A baudrate mismatch produces silence. A parity mismatch produces garbage that looks like silence after the CRC fails.

Interface modes and IFAC

Each interface can be given a mode that determines how traffic is handled. And with IFAC (Interface Access Codes) you can close off an interface with a shared passphrase, so only nodes with the right key can use it.

Concept Explanation
mode = gateway Use on the client-facing side of a node that also bridges another segment (e.g. LoRa to internet).
mode = boundary Use on the wider-network side when you want to limit announce flow.
IFAC Signs packets with a network_name + passphrase. Receivers without a match drop the packets. Segments the network but does not replace end-to-end encryption.
Announce Cap Default 2% of the interface bandwidth. Prevents routing updates from crowding out payload traffic on slow links.