thicket

RNS·LXMF/ 915 MHz/ nRF52840/ SX1262

A Reticulum node with nothing behind it.

On LoRa the radio is usually an interface. The Reticulum stack runs on a phone or a laptop behind it, and the radio carries what the host decides to send.

Standalone nodes exist on ESP32, which has the headroom to carry the stack but a power budget that is harder to reconcile with a handheld. Thicket moves it onto an nRF52840 and an SX1262, where a receiver can be held open on a budget a handheld can carry.

It's built on microReticulum and microLXMF, embedded implementations of RNS and LXMF designed for constrained hardware. Identity, encryption, routing & the message store's index compete for one 256 KB of SRAM, alongside a receiver that doesn't poll. The store's pools are 37,384 B of that; the messages themselves go to flash.

The keypair is generated on the device and kept on external flash. All durable state goes there, because the internal filesystem is about 28 KB and the message store alone is 37,384 B. The external part sits on its own SPI bus, so storage and radio never contend for the same lines.

The enclosure is a design direction rather than a built object, and the intent is that no control breaks the shell: the wheel and the sliders read through solid wall by magnets, so the case stays closed and the radio stays sealed behind it.

Thicket is the firmware. The handheld is its first target.

Status

On 3 August a RAK4631 booted the firmware, brought up the SX1262 at 914.875 MHz, announced, and answered a message from a peer. The peer returned a delivery proof, so the reply arrived. That run was captured over serial.

On 5 August it exchanged messages with Python RNS 1.4.2 and LXMF, running on a Raspberry Pi with an RNode as its radio. Inbound arrived over an RNS Link, and the reply came back confirmed at −73 dBm. The reference implementation is the specification, so that's the compatibility claim worth making.

The same exchange was repeated on battery with nothing attached. That one was observed at the bench, not logged, because untethered leaves no serial line.

Both those runs regenerated the identity at every boot. On 1 September, with external flash fitted, the board came back from a cable-out power cycle on the same identity, and a second board that never restarted delivered 6 messages to it afterwards with 0 failures.

Source

  • github.com/thicketgarden Firmware & the interop suite it's checked with. Run the tests against the reference yourself.
  • [email protected] Corrections welcome, particularly on the radio and the RF path. Also from anyone building something similar.
Firmware is GPL-3.0-or-later. Reticulum and LXMF are Mark Qvist’s work. Wordmark set in Bitcount, SIL Open Font License 1.1.