Reticulum!
LAG`s effort to deploy a or partipate in the reticulum ecosystem.
Running your own communications infrastructure has obvious benefits. We live in a world of increasing digital censorship, and are rarely completely in charge of our communications. Even if we choose to use "better" alternatives to WhatsApp, Instagram, etc., we are still always completely reliant on the one underlying network, i.e. "The Internet". With the push of a button, "The Internet" may all of a sudden become unavailable. In places with oppressive regimes, this has not been uncommon. In the current political climate, it would not be surprising if any political system all of a sudden became repressive.
Natural disasters are another very important reason to have ways of communicating with each other. As we saw recently in the floods in Valencia, when disaster strikes, there are no more communication networks for civilians. It is obvious that it is crucial to be able to communicate with your peers when in an emergency: both for moral support; and to increase the safety and chances of survival.
The mesh network stack runs on various platforms. You can run it on your desktop, your home server, your mobile phone.
It can run on top of a wide variety of transport layers. It can run on normal IPv4 networks. However, for us the interesting part is that it also runs on high latency, low bandwidth radio links. These can be Internet of Things networks like LoRa, or packet radio systems using cheap handheld VHF radios. (One such radio is the infamous programmable Baofeng UV-5R.)
Workshops
second
- https://radar.squat.net/en/event/amsterdam/lag/2025-03-02/low-profile-and-low-energy-autonomous-networking-reticulum-ii-lets
More or less like the first time, since it was all a new group. Managed to go over the basics, and send a couple of messages around over lora
first
- https://radar.squat.net/en/event/amsterdam/lag/2025-01-25/low-profile-and-low-energy-autonomous-networking-reticulum
Bit of an intro day, quite diverse group in terms of experience and interest, we mostly spent time going over the basics of the networking protocol, and we ended with playing around a bit connecting some radios to our phones. managed to send
Rnode
Boards
Model | LoRa chip | Rnode model in rnodeconf | Purchase | Notes |
---|---|---|---|---|
Heltec Wireless Stick Lite V3 | SX1262 | heltec-v3 | buy | needs BLE to pair with sideband |
Heltec Wi-Fi LoRa 32 Oled | SX1262 | heltec-v3 | buy | |
LilyGO T-Beam V1.2 AXP2101 | SX1276 | T-beam v1.2 | buy | Has builtin charge controller and holder for 18650 |
Flashing Board with firmware
with sideband
Install with sideband. Sideband can run on most computing devices, but installation methods vary by device type and operating system. For installation instructions, please find the relevant section below. Android, Linux, Raspberry Pi, MacOS, Windows.
https://github.com/markqvist/Sideband
E.g. on Android, install downloaded .apk. Best is to allow it to run on the background and allow notifications
- menu > utilities > launch rnode flasher > the repository server get's started
Update contents will fetch the latest repositories, including the latest firmware.
After you see repository contents updated successfully, click on the assigned web address where the the repository server is running.
If you only get a blank page in your browser, type in the address manually. The adress doesn't support a secure connection with https, but because you run it on your device locally, you can continue to the site safely. Find a browser which allows you to choose ""Advanced"
Connect your esp32 with an usb cable to your device, it will ask for permissions of the usb port
- Select your device (indicated on your board) > find the firmware on your device (it is already downloaded by the repository server), the filename is indicated on the page or you download it again. Flash now (stuck here because of browser permissions - serial port/usb connection access)
with rnodeconf/rns
- http://reticulum.network/manual/index.html
rnodeconf --autoinstall
web installer
- https://liamcottle.github.io/rnode-flasher/
after flshing device indicates that config is missing
Provision - EEPROM (sets device info, checksum and blank signature)
- Set Firmware Hash- (uses hash from board, will fix later)
Bluetooth
Pairing boards to andoid and using them in sideband is sometimes a bit of a pain, some things to keep in mind:
- Some boards use BLE, some dont, make sure you have to correct setting enabled
- you only need to pair to the board in android bluetooth settings, no need to "connect" (also you cant). Sideband will take care of things when the board is paired
- triple check your radio settings, for example, if you input a impossible frequency like 868000000 MHz (note the lack of a decimal symbol) sideband will happily accept, but will not be able to initialize the radio.
- some boards have a button to put the board in pairing mode, also the oled will give a visual feedback. other boards will need to receive a serial command to be put in paring mode. this can be done with
rnodeconf -b /dev/ttyUSBx # make sure bluetooth is enabled rnodeconf -p /dev/ttyUSBx # start pairing mode
Or by connecting the board to the phone via usb, and go to Hardware -> RNode -> Enable bluetooth/Start Pairing mode - if you try to pair to a board and get an error that the pin is incorrect, it means the board was not in pairing mode.
- make sure you use the latest version of sideband, the one in f-droid repos is usually not the latest version
Software
Sideband
Get
There is an fdroid repo here but it is not always the latest version.
Notes
- to apply any setting in sideband, one must go to the menu, and choose shutdown, and restart the application!
- The Sideband program will automatically use the closest propagation node it hears an annouce from, unless the user has manually chose a specific propagation node to be used. In this case, Sideband will always use that specific node, and that node only. When using propagation nodes, no message delivery notifications will be sent in return once the messages are received by the intended recipient. Currently, this is intentional, and done for privacy purposes. The functionality will be added later, but it needs to be done very carefully to protect user privacy and avoid metadata leaks.
For the last version check out the github releases
Nomadnet
Meshchat
Nodes
lr-sq-desktop01
This node contains an orange pi zero 3 1gb and a heltec v3 esp lora board with oled screen. the orange pi is configured to be a wifi access point. it is running the following services:
- RNSD - the reticulum networking deamon
- Nomadnet - by default it boots a screen session that you can ssh into, to browse nomadnet
- LXMFD - LXMF routing deamon, configure to be a transport node.
- Meshchat headless - web version of meshchat.
Enabled interfaces in the reticulum config are the default interface and lora interface: <code) ?Default Interface type = AutoInterface interface_enabled = True
Automatic node deployment
TODO Here you will find an ansible playbook and resources to make it easier to deploy nodes.
it is based on this board http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-Zero-3.html
based on this image: orange pi bookworm server
LAG Testnet
LoRa
There are no permantent nodes up anywhere, but for testing we are using theses settings at the moment:
- Frequency: 867.2 MHZ
- Bandwidth: 125 KHz
- Spreading factor: 7
- Coding Rate: 5
TCP
need to set up..
Addresses
Nodename | Location | Adress | Type | Notes | |
---|---|---|---|---|---|
lr-sq-desktop01 | undisclosed | bla | msg | desktop node that travels around | |
lr-sq-desktop01-prop | undisclosed | bla | prop | desktop node that travels around | |
lr-sq-desktop01-rnsh | undisclosed | 9886345c95c54f983b347b11a2b3d213 | rnsh | desktop node that travels around | |
lr-sq-outdoor01-rnsh | undisclosed | 5cbe9638fed36e45d802789e363029de | rnsh | outdoor node |
Power consumption
Lilygo T-Beam Supreme v.3.0 (L76K chipset), 868 Mhz, SX1262,
We measured the power consumption of this device while connected with a cable to a power bank (no battery) and participating in a Reticulum network. It sees packages going by while it is standby. It is connected over Bluetooth to a phone.
- Standby 0.16A, 5V, 0.8W
- Peak (sending a big file) 0.28A, 5V, 1.41W
- Peak (startup) 0.18A, 5V, 0.9W
- 1 minute operation: 3mAh, 15mWh consumption
- 2 minute operation: 5mAh, 27mWh consumption
Links
Reticulum Ecosystem
- project page
- reticulum github
- rnode github firmware for the lora esp boards, original
- rnode github, firmware for the lora esp boards, community editon
- sideband, messaging app for android linux and macos
- LXMF, messaging protocol build ontop of reticulum
- Meshchat, LXMF client for linux, macos, and windows
HF Equipment
Sourcing
Where to find stuff to buy and where to buy it?
Equipment that was ordered for TBD.camp
- ESP32 to use it as a radio interface: Heltec Wi-Fi LoRa 32 - ESP32-S3 - SX1262 - with 0.96 inch OLED Display - 868MHz
- USB-C to USB-C cable to connect the ESP32 to a mobile phone: Goobay 66318 USB-C USB-C 2.0 Cable - 1m - 3A - Black and Goobay 67975 USB-C USB-C 3.1 Cable - 0.5m - 3A - Black
- Charge controller to power the ESP32: Waveshare Solar Power Management Module - 6-24V
- USB-C to USB-A 2.0 charge cable to connect the charge controller to the ESP32: Goobay 38675 USB-C USB-A 2.0 Cable - 0.1m - 3A - Black
- Solar panel that can be connected to the charge controller with a minijack: Solar Panel - 6V 833mA - 230x195x15mm - 3.5mm DC Jack
- 16500 type rechargable battery (same format as AA but different kind of battery) to go into the charge controller: LIR14500 / 14500 batterij (3.7 V, 800 mAh, 123accu huismerk)