Reticulum Workshop

Prerequesites

You need Python and pip. Best to create a virtual environment for managing all binaries.

python -m venv ~/.venv
source ~/.venv/bin/activate
pip install --upgrade pip rns nomadnet

To use the RNode as non-root user, add yourself to the group uucp or dialout.

usermod -aG uucp $USER
newgrp uucp

MacOS:

dseditgroup -o edit -a $USER -t user wheel

Configuration

Reticulum configuration for Berlin (LoRa) ~/.reticulum/config

[reticulum]
  enable_transport = Yes
  share_instance   = Yes

[interfaces]
  [[RNode Reticulum Berlin]]
    type            = RNodeInterface
    enabled         = yes
    port            = /dev/ttyACM0
                    # /dev/ttyUSB0
                    # /dev/cu.ubmodem11201
    frequency       = 869475000
    bandwidth       = 125000
    spreadingfactor = 7
    codingrate      = 5
    txpower         = 27

Nomadnet configuration: ~/.nomadnetwork/config

[node]

enable_node = Yes
node_name = DWeb Node 1337
announce_interval = 360
announce_at_start = Yes
disable_propagation = No
propagation_cost = 16

Tools

Micron

Micron is the markup for Nomad pages (.mu files). Every tag begins with a backtick `.

FORMATTING              (toggles: same tag opens and closes)
  `!bold`!              bold
  `_underline`_         underline
  `*italic`*            italic
  ``                    reset ALL formatting  (two backticks)

COLOR                   three hex digits, one per R/G/B channel — like CSS #rgb
  `Ff00 text            red foreground
  `f                    reset foreground
  `B002 text            dark-blue background
  `b                    reset background

ALIGNMENT               put at the start of the line
  `c                    center
  `l                    left
  `r                    right
  `a                    default

STRUCTURE
  >Heading              section heading   (>> deeper, >>> deeper still)
  -                     horizontal divider (alone on its line)
  `[label`dest]         link  ->  dest = <hash>:/page/index.mu  or  #anchor
  `[lxmf@<hash>]        open conversation with an LXMF peer

Dynamic Content

Create a rand.mu and make it executable, link it, share it.

#!/usr/bin/env python3
import random, time

tick = int(time.time()) % 60
roll = random.randint(0, 99)

print(">Dynamic Python demo\n")
print("Hello, World!\n")
print(f"Unix seconds mod 60: `!{tick}`!\n")
print(f"Random roll (0-99): `!{roll}`!\n")
print("Reload the page. The node reruns the script, the numbers change.")

Terminology