Skip to content

gretel/feed-reticulum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenWrt Reticulum Feed 📡

This repository contains OpenWrt packages related to the Reticulum ecosystem. The feed currently provides packages for the Reticulum Network Stack, an open-source cryptography-based networking stack designed for reliable communication over high-latency, low-bandwidth networks.

Current Status ⚠️

This feed is under active development and not yet ready for general use.

We are working on stabilizing the packages and resolving various implementation challenges, particularly around Python module integration in OpenWrt's constrained environment.

Available Packages 📦

This feed provides the following packages:

rnspure 🌐

Pure Python variant of the Reticulum Network Stack with no external dependencies required for installation.

rns 🌐

The core Reticulum Network Stack implementation with Python dependencies.

lxmf 💬

Lightweight Extensible Message Format implementation for messaging over Reticulum.

nomadnet🕸️

Terminal-based resilient mesh communications platform built on LXMF and Reticulum.

python3-urwid 🖥️

Console user interface library required by nomadnet.

Note: The -src packages are optional and provide the Python source code, while the standard packages contain only bytecode and metadata as is typical for OpenWrt packages. Most users will only need the standard packages.

Prerequisites 📋

To use this feed, you need:

  • A computer running some Debian
  • OpenWrt buildroot environment
  • This feed

Development Setup 🛠️

System Requirements (Debian/Ubuntu)

Install required system packages:

sudo apt update && sudo apt install -qy \
    build-essential \
    ccache \
    file \
    flex \
    bison \
    g++ \
    gawk \
    gettext \
    git \
    libncurses5-dev \
    libssl-dev \
    python3-setuptools \
    rsync \
    unzip \
    wget \
    zlib1g-dev

OpenWrt Setup

  1. Clone OpenWrt repository:
git clone --depth 5 https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
  1. Configure feeds:
# Create feeds configuration if it doesn't exist
[ ! -f feeds.conf ] && cp feeds.conf.default feeds.conf

# Ensure reticulum feed is properly configured
if ! grep -q '^src-git reticulum' feeds.conf; then
    # Comment out any existing reticulum entries
    sed -i '/src-git reticulum/s/^/#/' feeds.conf
    # Add our feed
    echo "src-git reticulum https://github.com/gretel/feed-reticulum.git" >> feeds.conf
fi

Your feeds.conf should look similar to this:

src-git packages https://git.openwrt.org/feed/packages.git
src-git luci https://git.openwrt.org/project/luci.git
src-git reticulum https://github.com/gretel/feed-reticulum.git
  1. List using the feeds utility to confirm:
./scripts/feeds list -s
packages   src-git  2b999558db0711124f7b5cf4afa201557352f694 https://git.openwrt.org/feed/packages.git
luci       src-git  e76155d09484602e2b02e84bb8ffafa4848798f0 https://git.openwrt.org/project/luci.git
reticulum  src-git  3d196e9b824158b9a428892c426e8365dc02c373 https://github.com/gretel/feed-reticulum.git
  1. Update and install from all feeds:
./scripts/feeds update -a
./scripts/feeds install -a

Building Packages

For a default configuration:

make defconfig

To build specific packages:

# Clean and rebuild RNS package
make package/feeds/reticulum/rns/clean
make package/feeds/reticulum/rns/compile V=s
make package/index

NO_DEPS=1 will skip building dependencies. Building of the rns package will fail if the required dependencies have not been built before. It's meant to speed up development iterations.

V=s adds very verbose output logging. Remove for proven builds.

make package/feeds/reticulum/rns/compile V=s NO_DEPS=1

Building All

For a full system build (optional):

make -j$(nproc) world

This could result in a bootable distribution. No testing has been done yet!

Package Configuration ⚙️

RNS Configuration

Basic UCI configuration:

# Enable the service
uci set rns.main.enabled=1
uci commit rns

# Start the service
service rns start

Configuration directory: /var/rns

Configuration file: /etc/config/rns

LXMF Configuration

Basic UCI configuration:

# Enable the service
uci set lxmf.main.enabled=1
# Enable propagation node (optional)
uci set lxmf.main.propagation_node=1
uci commit lxmf

# Start the service
service lxmf start

Configuration directory: /var/rns

Configuration file: /etc/config/lxmf

Nomadnet Configuration

Basic UCI configuration:

# Enable the service
uci set nomadnet.main.enabled=1
uci commit nomadnet

# Start the service
service nomadnet start

Configuration directory: /var/rns

Configuration file: /etc/config/nomadnet

Urwid Configuration

No configuration required - library package.

Known Issues ⚡

Contributing 🤝

We welcome contributions to expand the Reticulum ecosystem on OpenWrt. Please ensure your pull requests are well-documented and include appropriate test cases.

License ⚖️

Each package is released under its respective license:

  • RNS: MIT License
  • LXMF: MIT License
  • Nomadnet: GPL-3.0
  • python3-urwid: LGPL-2.1 or later

Acknowledgments 🙏

  • Mark Qvist for creating Reticulum Network Stack
  • The OpenWrt team
  • All contributors to the Reticulum ecosystem

About

OpenWRT Package Feed for Reticulum Network Stack

Resources

Stars

Watchers

Forks

Packages

No packages published