Skip to content
Reticulum

Reticulum

July 27, 2026·alex
alex

I don’t mean to collect devices but for some reason I had an excess of LoRa modules. I was losing interest in Meshtastic becuase the local traffic seemed to consist of ‘RX?’ followed by ‘RX in …’ or a persone with a node flying overhead on aholiday trip followed by a glut of nodes across th ecountry that just weren’t useful.

This was a similar feeling across the water with Richard who has a node pointing in my direction. So whilst I’ve not shut the door on it, I’ve used the yagi and Wisblock module for something slightly different. Reticulum

The appeal of reticulum is that it seems to extend the LoRa thing to include mini web pages and a different way of interacting. A bit like a cross between packet, the general internet and normal messaging. It took me a while to work out what I ought to be doing and then making sure that is what I am actually doing. There is a doubt in my mind that I’m doing what I should be doing but there have been no complaints so far.

Hardware

Looks a bit like this..

    flowchart TD
    subgraph Phone_Side["Phone Side"]
        Phone[("Phone")]
        LoRa_Bluetooth[Loara Module Bluetooth]
        Phone --"BT"--> LoRa_Bluetooth
    end

    subgraph Desktop_Side["Desktop PC Side"]
        PC[("Desktop PC")]
        LoRa_USB_Pc[LoRa Module USB]
        PC --"USB"--> LoRa_USB_Pc
    end

    subgraph RPi_Node["Raspberry Pi Node"]
        RPi[("Raspberry Pi")]
        LoRa_RPi[LoRa RF Module USB to RPi]
        RPi --"USB"--> LoRa_RPi
    end

    subgraph Network_Backend["Reticulum Network"]
        Reticulum_RF["Reticulum RF Link"]
        Reticulum_TCP["Reticulum TCP IP"]
        Internet[("Internet")]
    end

    %% LoRa RF connections
    LoRa_Bluetooth -.->|"LoRa RF"| LoRa_RPi
    LoRa_USB_Pc -.->|"LoRa RF"| LoRa_RPi

    %% RPi to Reticulum Network
    RPi -->|"RF & TCP"| Reticulum_RF
    RPi -->|"TCP"| Reticulum_TCP
    
    Reticulum_RF --- Internet
    Reticulum_TCP --- Internet

    style Phone_Side fill:#e3f2fd
    style Desktop_Side fill:#e8f5e9
    style RPi_Node fill:#fff3e0
    style Network_Backend fill:#f3e5f5
    
  

Software

Here’s where everything gets complicated really quickly (for me at least). A fresh OS on the Rpi was installed and as mine is a RPi3 it takes a bit longer to go through the setup. Just do the usual WiFi stuff so its all up to date. Then install the software as per the guide. I did this a couple of times, the first time nothing happened and a bunch of errors appeared. Then it seemed to sort itself out.

So, everything is a=installed. Now what?

The config is where it unravelled again for me. For some reason I could not connect to any known backbone via TCP. After a lot of farting about it was due to servers not being available. Once I’d found a few that worked you can check on the status by running rnstatus from the command line. you should get something like this:

alex@reticulum:~ $ rnstatus

 Shared Instance[rns/default]
    Status    : Up
    Serving   : 0 programs
    Rate      : 1.00 Gbps
    Traffic   : ↑2.36 KB  1.73 Kbps
                ↓0 B      0 bps

 BackboneInterface[reticulum_will0w_dev/reticulum.will0w.dev:4242]
    Status    : Up
    Mode      : Full
    Rate      : 100.00 Mbps
    Traffic   : ↑2.59 KB  0 bps
                ↓0 B      0 bps

 AutoInterface[Default Interface]
    Status    : Up
    Mode      : Full
    Rate      : 10.00 Mbps
    Peers     : 0 reachable
    Traffic   : ↑0 B  0 bps
                ↓0 B  0 bps

 TCPServerInterface[TCP Server Interface/0.0.0.0:4242]
    Status    : Up
    Clients   : 0
    Mode      : Full
    Rate      : 10.00 Mbps
    Traffic   : ↑0 B  0 bps
                ↓0 B  0 bps

 TCPInterface[Beleth RNS Hub/rns.beleth.net:4242]
    Status    : Down
    Mode      : Full
    Rate      : 10.00 Mbps
    Traffic   : ↑0 B  0 bps
                ↓0 B  0 bps

 TCPInterface[rmap.world/rmap.world:4242]
    Status    : Up
    Mode      : Full
    Rate      : 10.00 Mbps
    Traffic   : ↑2.58 KB  0 bps
                ↓7.51 KB  1.71 Kbps

 RNodeInterface[g7kse RNode]
    Status    : Up
    Mode      : Full
    Rate      : 1.76 kbps
    Noise Fl. : -114 dBm, no interference
    CPU load  : Unknown
    Airtime   : 0.0% (15s), 0.03% (1h)
    Ch. Load  : 0.0% (15s), 0.04% (1h)
    Traffic   : ↑224 B  0 bps
                ↓51 B   0 bps
                

This shows us that everything is connecting and is a handy way to check on things. If not then check the config

Config

The biggest isuue I had was with the LoRa module seemingly not connecting to anything. Its worth sharing the config for the interfaces in case its useful elsewhere. My route was to use the Liam Cottle RNode flasher and to use the advanced tools to check the statud of the node. This was very handy as the Wisblock doesn’t have a screen.

      [[reticulum_will0w_dev]]
    type = BackboneInterface
    enabled = yes
    remote = reticulum.will0w.dev
    target_port = 4242
    transport_identity = 0b95bdc1ddf2f397dc88278b22bc5cd4

  [[Beleth RNS Hub]]
    type = TCPClientInterface
    enabled = yes
    target_host = rns.beleth.net
    target_port = 4242

  [[rmap.world]]
    type = TCPClientInterface
    enabled = yes
    target_host = rmap.world
    target_port = 4242

  [[I2P]]
    type = I2PInterface
    enabled = no
    connectable = yes
    peers = ykzlw5ujbaqc2xkec4cpvgyxj257wcrmmgkuxqmqcur7cq3w3lha.b32.i2p

  # Here's an example of how to add a LoRa interface
  # using the RNode LoRa transceiver.
  [[g7kse RNode]]
    type = RNodeInterface
    enabled = yes
    port = /dev/ttyACM0
    frequency = 867500000
    bandwidth = 125000
    spreadingfactor = 9
    codingrate = 5
    

Desktop & Phone

This is your choice really. But I use MeshChatX on the desktop and Columba on the phone although Sideband features quite a lot.

With any of these there needs to be some configuration. As the LoRa side was being a pest I used the reliable TCP interface to start with. Then once that was functioning and nodes were appearing I think brought the LoRa bit back in. Funnily enough it works just as well with my basic setup.

So, I have turned off the TCP interfaces on the MeshChatX and Columba and they talk to the RPi via RF only.

Some handy starter videos

I’d suggest looking at Simon Phillip’s stuff. Here’s a basic one to help you get started

Ok so its working now what?

The obvious question is ‘So What?’. Why bother to do all this? I can message people anyway, why should i have another burden to manage? Well messaging is just one part, and as a raduo ham I seem to enjoy making it hard to contact other people :-)

The messaging part is fun, but its only one element. The more interesting thing for me is the NomadNet part. This is like a small website that is part of the network. To have one of these I need to be a Node rather than a Peer. Its not entirely accurate but Peer = Person. Node = Computer.

These littel web pages are written using a language called Micron. Coding by hand might be some peoples idea of fun, for me I prefer to see what is going on with an editor. But Simon does a nice video on displaying the rnstatus details on a page thats below. If you really want to add stuff then there are all sorts of add ons for Chat Rooms or a BBS

So you can see that whilst Meshtastic and Meshcore are excellent, they are limited in comparison to Reticulum. There is a lot more to look at but its starts getting beyond my little brain. I’ll stick to mucking about with what i have and it’ll be running in th eloft so long as there is electricity and a functioning LoRa module.

Here’s a start er for you. The Nomad Net Index….

Nomad index