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.
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.
This feed provides the following packages:
Pure Python variant of the Reticulum Network Stack with no external dependencies required for installation.
The core Reticulum Network Stack implementation with Python dependencies.
Lightweight Extensible Message Format implementation for messaging over Reticulum.
Terminal-based resilient mesh communications platform built on LXMF and Reticulum.
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.
To use this feed, you need:
- A computer running some Debian
- OpenWrt buildroot environment
- This feed
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
- Clone OpenWrt repository:
git clone --depth 5 https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
- 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
- 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
- Update and install from all feeds:
./scripts/feeds update -a
./scripts/feeds install -a
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 therns
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
For a full system build (optional):
make -j$(nproc) world
This could result in a bootable distribution. No testing has been done yet!
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
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
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
No configuration required - library package.
Python module import issues related to OpenWrt's bytecode-only packagingService initialization requires further testing- Documentation needs expansion
- Implementation of systemd and procd service files needs testing
We welcome contributions to expand the Reticulum ecosystem on OpenWrt. Please ensure your pull requests are well-documented and include appropriate test cases.
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
- Mark Qvist for creating Reticulum Network Stack
- The OpenWrt team
- All contributors to the Reticulum ecosystem