Firmware for the RNode radio interface
Go to file
Mark Qvist 978479047a Bump version 2023-01-24 17:27:22 +01:00
Builds/Handheld RNode Added build guide 2023-01-16 12:37:12 +01:00
Console Cleanup 2023-01-14 21:26:42 +01:00
Documentation Cleanup 2023-01-15 09:54:56 +01:00
Python Module Cleanup 2023-01-16 12:48:22 +01:00
Release Updated console image 2023-01-15 16:42:39 +01:00
.gitignore Added basic console site generator and web server 2023-01-07 23:32:07 +01:00
Bluetooth.h Updated license header 2023-01-14 00:32:50 +01:00
Config.h Bump version 2023-01-24 17:27:22 +01:00
Console.h Updated license headers 2023-01-14 00:11:02 +01:00
Device.h Updated license headers 2023-01-14 00:11:02 +01:00
Display.h Fixed console mode display rendering on landscape displays 2023-01-14 18:19:38 +01:00
Framing.h Updated license headers 2023-01-14 00:11:02 +01:00
Graphics.h Updated graphics 2023-01-14 15:01:05 +01:00
LICENSE Updated license to GPLv3 2022-11-10 12:34:33 +01:00
LoRa.cpp Updated license headers 2023-01-14 00:11:02 +01:00
LoRa.h Updated license headers 2023-01-14 00:11:02 +01:00
MD5.cpp MD5 library 2018-06-20 08:45:36 +02:00
MD5.h MD5 library 2018-06-20 08:45:36 +02:00
Makefile Fixed console mode display rendering on landscape displays 2023-01-14 18:19:38 +01:00
Power.h Improved power management for v2 RNodes and T-Beam devices 2022-12-16 19:59:30 +01:00
README.md Updated readme 2023-01-16 14:30:48 +01:00
RNode_Firmware.ino Fixed TNC mode init at startup 2023-01-24 16:32:12 +01:00
ROM.h Updated license headers 2023-01-14 00:11:02 +01:00
Utilities.h Updated license headers 2023-01-14 00:11:02 +01:00
arduino-cli.yaml Added SPIFFS bootstrap 2023-01-06 22:29:23 +01:00
partition_hashes Cleanup 2023-01-14 15:02:02 +01:00
release_hashes.py Cleanup 2023-01-14 15:02:02 +01:00

README.md

RNode Firmware

This is the open firmware that powers RNode devices.

An RNode is an open, free and unrestricted digital radio transceiver. It enables anyone to send and receive any kind of data over both short and very long distances. RNodes can be used with many different kinds of programs and systems, but they are especially well suited for use with Reticulum.

RNode is not a product, and not any one specific device in particular. It is a system that is easy to replicate across space and time, that produces highly functional communications tools, which respects user autonomy and empowers individuals and communities to protect their sovereignty, privacy and ability to communicate and exchange data and ideas freely.

An RNode made from readily available and cheap parts, in a durable 3D printed case

The RNode system is primarily software, which transforms different kinds of available hardware devices into functional, physical RNodes, which can then be used to solve a wide range of communications tasks. Such RNodes can be modified and built to suit the specific time, locale and environment they need to exist in.

Latest Release

The latest release, installable through rnodeconf, is version 1.55. This release brings the following changes:

  • Added the RNode Bootstrap Console to all WiFi-capable RNodes. All such RNodes now contain a complete repository of information, software, guides and tools for replicating the RNode desing, and creating more RNodes.
  • RNodes can now supply other RNodes with firmware images, with allows creating RNodes and bootstrapping communication networks, even if the Internet is unavailable.
  • Improved RGB LED handling.
  • Improved power management and charge status handling.
  • Improved Bluetooth handling.

You must have at least version 2.1.0 of rnodeconf installed to update the RNode Firmware to version 1.55. Get it by updating the rns package to at least version 0.4.7.

A Self-Replicating System

If you notice the presence of a circularity in the naming of the system as a whole, and the physical devices, it is no coincidence. Every RNode contains the seeds necessary to reproduce the system, the RNode Bootstrap Console, which is hosted locally on every RNode, and can be activated and accesses at any time - no Internet required.

The designs, guides and software stored within allows users to create more RNodes, and even to bootstrap entire communications networks, completely independently of existing infrastructure, or in situations where infrastructure has become unreliable or is broken.

Where there is no Internet, RNodes will still communicate

The production of one particular RNode device is not an end, but the potential starting point of a new branch of devices on the tree of the RNode system as a whole.

This tree fits into the larger biome of Free & Open Communications Systems, which I hope that you - by using communications tools like RNode - will help grow and prosper.

One Tool, Many Uses

The RNode design is meant to flexible and hackable. At it's core, it is a low-power, but extremely long-range digital radio transceiver. Coupled with Reticulum, it provides encrypted and secure communications.

Depeding on configuration, it can be used for local networking purposes, or to send data over very long distances. Once you have an RNode, there is a wide variety of possible uses:

Types & Performance

RNodes can be made in many different configurations, and can use many different radio bands, but they will generally operate in the 433 MHz, 868 MHz, 915 MHZ and 2.4 GHz bands. They will usually offer configurable on-air data speeds between just a few hundred bits per second, up to a couple of megabits per second.

The RNode system has been designed to allow reliable systems for basic human communications, over very wide areas, while using very little power, being cheap to build, free to operate, and near impossible to censor.

While speeds are lower than WiFi, typical communication ranges are many times higher. Several kilometers can be acheived with usable bitrates, even in urban areas, and over 100 kilometers can be achieved in line-of-sight conditions.

Supported Boards & Devices

The RNode Firmware supports the following boards:

  • Handheld v2.x RNodes from unsigned.io
  • Original v1.x RNodes from unsigned.io
  • LilyGO T-Beam v1.1 devices
  • LilyGO LoRa32 v2.0 devices
  • LilyGO LoRa32 v2.1 devices
  • Heltec LoRa32 v2 devices
  • Homebrew RNodes based on ATmega1284p boards
  • Homebrew RNodes based on ATmega2560 boards
  • Homebrew RNodes based on Adafruit Feather ESP32 boards
  • Homebrew RNodes based on generic ESP32 boards

Supported Transceiver Modules

The RNode Firmware supports all transceiver modules based on Semtech SX1276 or Semtech SX1278 chips, that have an SPI interface and expose the DIO_0 interrupt pin from the chip.

Support for SX1262, SX1268 and SX1280 is being implemented. Please support the project with donations if you want this faster!

Getting Started Fast

You can download and flash the firmware to all the supported boards using the RNode Config Utility. All firmware releases are now handled and installed directly through the rnodeconf utility, which is inclueded in the rns package. It can be installed via pip:

# Install rnodeconf via rns package
pip install rns --upgrade

# Install the firmware on a board with the install guide
rnodeconf --autoinstall

For more detailed instruction and in-depth guides, you can have a look at some of these resources:

If you would rather just buy a pre-made unit, you can visit my shop and purchase my particular version of the Handheld RNode, which I can assure you is made to the highest quality, and with a lot of care.

Support RNode Development

You can help support the continued development of open, free and private communications systems by donating via one of the following channels:

  • Monero:
    84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
    
  • Ethereum
    0x81F7B979fEa6134bA9FD5c701b3501A2e61E897a
    
  • Bitcoin
    3CPmacGm34qYvR6XWLVEJmi2aNe3PZqUuq
    
  • Ko-Fi: https://ko-fi.com/markqvist

License & Use

The RNode Firmware is Copyright © 2023 Mark Qvist / unsigned.io, and is made available under a dual GPL+commercial license.

Unless otherwise noted, the source code and binaries in this repository and related release sections is licensed under the GNU General Public License v3.0. The source code includes an SX1276 driver that is released under MIT License, and Copyright © 2018 Sandeep Mistry / Mark Qvist.

The 3D-printable object files, mechanical design, illustrations and related material, and all guide and photo material is released under a Creative Commons - Attribution - Noncommercial - Share Alike 4.0 license.

Permission is hereby granted to use the RNode Firmware in binary form from this repository for any and all purposes, so long as no payment or compensation is charged or received for such distribution or use. Binary copies of the firmware obtained from this repository (or via the rnodeconf utility) are explicitly licensed under these conditions.

If you distribute or modify this work, you must adhere to the terms of the GPLv3, including, but not limited to, providing up-to-date source code upon distribution, displaying appropriate copyright and license notices in prominent positions of all conveyed works, and making users aware of their rights to the software under the GPLv3.

If you want to charge money (or similar) or receive compensation for providing the firmware to others, use the firmware in your own commercial products, or make and sell RNodes, you simplify commercial deployment by purchasing a commercial license, which is cheap and easy.

I provide a range of convenient tools and resources for anyone who wants commercially produce RNodes or provide services based on RNode, so just get in contact with me to get started.