// community mesh

Setting up a community mesh

You build a community mesh as soon as the network grows beyond one person or a single board. Think of a neighborhood, a campus or a city, with multiple operators, shared radio settings and one or more gateways to the backbone.

What it looks like

A community mesh is a mix of node types:

Node type What it does
Edge nodes RNodes, Ratdecks, laptops with a LoRa radio. They only speak over the air and depend on the rest of the mesh to reach beyond their radio horizon.
Transport routers Always-on nodes, usually a Raspberry Pi or SBC with an RNode. They forward packets between LoRa neighbors and announce paths on behalf of edge devices that come and go.
IP gateways A subset of transport routers that also have an internet connection. They bridge the local LoRa segment to wider Reticulum over TCP. Without at least one gateway, the mesh is limited to its radio range.

Aim for more than one gateway and more than one operator. Then nobody owns the network and it does not depend on one person.

Aligning radio settings

Two RNodes on the same frequency but with a different spreading factor do not see each other. Before anyone deploys, the operators have to agree on four numbers:

Parameter ReticulumNet default Notes
Frequency869.463 MHzEU band, 869.463 (EU sub-band with higher allowed TX power)
Bandwidth125 kHzWider is faster but shorter range
Spreading FactorSF8Range/throughput compromise
Coding Rate5Higher corrects more errors but costs more airtime

Write the parameters down and make sure every operator uses them. If one node differs, it drops out of the mesh without any warning.

Setting up a gateway node

A gateway is a transport node with both a LoRa interface and an internet interface:

# Gateway config: LoRa + internet

[reticulum]

enable_transport = yes

[interfaces]

[[LoRa]]

type = RNodeInterface

port = /dev/ttyUSB0

frequency = 869463000

bandwidth = 125000

spreadingfactor = 8

codingrate = 5

[[Internet]]

type = TCPClientInterface

target_host = voorbeeld.nl

target_port = 4242

Use /dev/serial/by-id/... paths for USB radios. Device numbers are not stable across reboots. Run as a systemd service for automatic restart. See set up a node.

Scaling

Each operator who adds a transport node extends the range. Each extra gateway is a second route to the internet if one goes down.

When the mesh is large enough for multiple LoRa segments that do not reach each other directly, gateways connect the segments over the internet. That is how ReticulumNet is set up: local LoRa segments, connected via a backbone of transport nodes on the internet.

Add a propagation node (lxmd -p) if you want to store messages for offline members. Without a propagation node, message delivery is best-effort and synchronous.