// 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.
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 |
| 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.
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
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 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.
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. |