00. Download - Install
ESP32 Hardware Compatibility:
- 100% Variant Agnostic: Native ESP-NOW architecture enables ERNI to run cleanly on all chips (ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6).
Get the latest release directly from GitHub:
Download Last ReleaseFlash the ERNI_Alpha.ino direct to any generic ESP32
mapping the serial port cleanly.
01. Fragment Bridging
THE ESP-NOW BOTTLENECK
Reticulum networks are heavily optimized for long-range, encrypted meshing
with a standard 500-byte MTU frame. However, raw ESP-NOW (`802.11` WiFi Action
Frames) maxes out around 250 bytes.
THE ERNI ENGINE
When the PC attempts to inject a 500-byte MTU, ERNI intelligently chops the
buffer into twin fragments, attaching a microscopic [PacketID][Sequence]
ESP-NOW header to track and reassemble them seamlessly on the distant node. A brief
inter-fragment pacing delay ensures receivers process each chunk cleanly, even on
noisy channels. The reassembly engine tracks sender identity to prevent fragment
interleaving from multiple simultaneous transmitters.
02. Auto-Deduplication & Flooding
EVERY NODE IS A REPEATER
If you leave a battery-powered ERNI node in the woods, it natively bridges network gaps
extending your hardware horizon.
However, mesh echoing quickly triggers looping broadcast storms. To prevent this, ERNI runs the
FNV-1a 32-bit hash algorithm on every packet and checks it against a fixed-size
circular cache with O(1) insertion and zero heap allocations.
When it overhears an incoming radio frame, it consults the hash cache. New pack?
Queue it for re-broadcast from the main loop. Duplicate pack? Drop it instantly.
Rebroadcasts are queued and dispatched safely from the main task context, avoiding
reentrancy issues inside the ESP-NOW callback.
03. v1.1 Improvements
FNV-1a HASHING
Industry-standard 32-bit hash with superior avalanche properties. Dramatically fewer collisions than the previous polynomial hash, reducing silent packet drops in busy mesh environments.
SAFE REBROADCAST
Packets are queued in a lock-free ring buffer and transmitted from
the main loop() context. Eliminates timing and reentrancy risks from
sending inside ESP-NOW callbacks.
KISS COMPLIANCE
Full KISS TNC specification compliance with the standard
0x00 command byte. The RX path correctly strips this byte when reading
from Reticulum's SerialInterface.
04. RNS Configuration
Connect your PC to the ERNI bridge via USB and configure `/etc/reticulum/config`:
[[ERNI_Mesh]]
type = SerialInterface
interface_enabled = True
outgoing = True
port = /dev/ttyUSB0
speed = 921600
databits = 8
parity = none
stopbits = 1
Make absolutely sure you define the speed as `921600` otherwise the Reticulum stack will fail to decrypt the KISS boundaries effectively.