Skip to content

terminator513/RNS_Over_MeshCore

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

69 Commits
 
 
 
 
 
 
 
 

Repository files navigation

RNS_Over_MeshCore

Interface for Reticulum Network Stack (RNS) using MeshCore as the underlying networking layer to utilize existing LoRa/mesh hardware.

⚠️ TESTED — BEHAVIOR WARNING

MeshCore-based firmware on many devices is extremely unstable. Even under perfect conditions, sending a single CHUNK of a Reticulum packet often requires repeating the same command multiple times, and delivery is still not guaranteed. This interface handles fragmentation internally: each outgoing packet is split into CHUNKS with fragment IDs, and incoming fragments are reassembled automatically. Future improvements may include enhanced transport-layer reliability and protocol tagging.


Requirements

  • Python 3.10+
  • meshcore Python library
  • Reticulum Network Stack (rnsd)
  • Compatible LoRa device with MeshCore firmware

Installation

  1. Install MeshCore Python library:

    pip install meshcore
  2. Copy the interface file:

    • Place Meshcore_Interface.py in your Reticulum interfaces folder:
      • Linux/macOS: ~/.reticulum/interfaces/
      • Windows: C:\Users\<YourName>\.reticulum\interfaces\
  3. Configure the interface (see below)

  4. Restart rnsd


Configuration

Add the following to your ~/.reticulum/config file:

# =========================================================
# ⚠️ WARNING: MeshCore firmware is extremely unstable.
# You will often need to spam the same command multiple times
# just to get one CHUNK of a packet sent. Even then delivery
# is not guaranteed. Test one device at a time, expect failures,
# and do not rely on this for critical communication.
# =========================================================

[[MeshCore]]
   type = MeshCoreInterface
   interface_enabled = true

   # === Transport settings ===
   transport = ble           # Options: ble | serial | tcp
   #port = /dev/ttyUSB0       # Serial port if transport = serial
   #baudrate = 115200         # Serial baudrate
   #host = 127.0.0.1          # TCP host if transport = tcp
   #tcp_port = 4403           # TCP port if transport = tcp
   ble_name = MeshCore-Obdolbus  # BLE device name (optional, auto-scan if empty)

   # === RNS channel settings (DO NOT CHANGE SECRET unless you know what you are doing) ===
   # channel_name = RNSTunnel
   # channel_secret = c4d2b6c8254e3b11200f57e95dcb1197  # 16 bytes hex
   # channel_idx =                                        # Leave empty to auto-select, fallback = 39

   # === Fragmentation / reliability ===
   #count_repeat = 7            # How many times to send each fragment (spam to increase chance of delivery)
   #fragment_timeout = 3600     # Timeout for incomplete fragment reassembly (seconds)
   #fragment_delay = 20         # Delay between fragments in seconds — yes, MeshCore is THAT bad
   #bitrate = 200               # Rate limiting in bytes/sec, 0 = unlimited

Acknowledgements

Special thanks to HDDen for their help with the MeshCore integration and debugging.

License

MIT License — See LICENSE file for details.

About

Interface for RNS using Meshtastic as the underlying networking layer to utilize existing meshtastic hardware.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%