README.md
  1  ***Important!** This repository is currently functioning as a stable reference for the default RNode Firmware, and only receives bugfix and security updates. Further development, new features and expanded board support is now happening at the [RNode Firmware Community Edition](https://github.com/liberatedsystems/RNode_Firmware_CE) repository, and is maintained by [Liberated Embedded Systems](https://github.com/liberatedsystems). Thanks for all contributions so far!*
  2  
  3  # RNode Firmware
  4  
  5  This is the open firmware that powers RNode devices.
  6  
  7  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](https://reticulum.network).
  8  
  9  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.
 10  
 11  <img src="Documentation/images/rnv21_bgp.webp" width="100%">
 12  
 13  <center><i>An RNode made from readily available and cheap parts, in a durable 3D printed case</i></center><br/><br/>
 14  
 15  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.
 16  
 17  ## Latest Release
 18  
 19  The latest release, installable through `rnodeconf`, is version `1.82`. You must have at least version `2.4.1` of `rnodeconf` installed to update the RNode Firmware to version `1.82`. Get it by updating the `rns` package to at least version `0.9.4`.
 20  
 21  ## A Self-Replicating System
 22  
 23  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](https://unsigned.io/rnode_bootstrap_console), which is hosted locally on every RNode, and can be activated and accesses at any time - no Internet required.
 24  
 25  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.
 26  
 27  <img src="Documentation/images/126dcfe92fb7.webp" width="100%"/>
 28  
 29  <center><i>Where there is no Internet, RNodes will still communicate</i></center><br/><br/>
 30  
 31  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.
 32  
 33  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.
 34  
 35  ## One Tool, Many Uses
 36  
 37  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.
 38  
 39  Depending 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:
 40  
 41  - As a network adapter for [Reticulum](https://reticulum.network)
 42  - Messaging using [Sideband](https://unsigned.io/software/Sideband.html)
 43  - Information sharing and communication using [Nomad Network](https://unsigned.io/software/Nomad_Network.html)
 44  - LoRa-based [KISS-compatible amateur radio TNC](https://unsigned.io/guides/2020_05_03_using_rnodes_with_amateur_radio_software.html)
 45  - LoRa development platform
 46  - [Packet sniffer](https://unsigned.io/software/LoRaMon.html) for LoRa networks
 47  - Long range [Ethernet and IP network interface](https://unsigned.io/guides/2020_05_27_ethernet-and-ip-over-packet-radio-tncs.html) on Linux
 48  - As a general-purpose long-range data radio
 49  
 50  ## Types & Performance
 51  
 52  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**. Maximum output power will depend on the transceiver and PA setup used, but will generally lie between **17 dbm** and **27 dBm**.
 53  
 54  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.
 55  
 56  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.
 57  
 58  ## Supported Boards & Devices
 59  It's easy to create your own RNodes from one of the supported development boards and devices. If a device or board you want to use is not yet supported, you are welcome to join the effort and help creating a board definition and pin mapping for it!
 60  
 61  <img src="Documentation/images/devboards_1.webp" width="100%"/>
 62  
 63  The RNode Firmware supports the following boards:
 64  
 65  - LilyGO T-Beam v1.1 devices with SX1276/8 LoRa chips
 66  - LilyGO T-Beam v1.1 devices with SX1262/8 LoRa chips
 67  - LilyGO T-Beam Supreme devices
 68  - LilyGO T-Deck devices (currently display is disabled)
 69  - LilyGO LoRa32 v1.0 devices
 70  - LilyGO LoRa32 v2.0 devices
 71  - LilyGO LoRa32 v2.1 devices (with and without TCXO)
 72  - LilyGO T3S3 devices with SX1276/8 LoRa chips
 73  - LilyGO T3S3 devices with SX1262/8 LoRa chips
 74  - LilyGO T3S3 devices with SX1280 LoRa chips
 75  - LilyGO T-Echo devices
 76  - Heltec LoRa32 v2 devices
 77  - Heltec LoRa32 v3 devices
 78  - Heltec T114 devices
 79  - RAK4631 devices
 80  - SeeedStudio XIAO ESP32S3 devices (with Wio-SX1262)
 81  - Homebrew RNodes based on ATmega1284p boards
 82  - Homebrew RNodes based on ATmega2560 boards
 83  - Homebrew RNodes based on Adafruit Feather ESP32 boards
 84  - Homebrew RNodes based on generic ESP32 boards
 85  
 86  ## Supported Transceiver Modules
 87  The RNode Firmware supports all transceiver modules based on Semtech **SX1276**, **SX1278**, **SX1262**, **SX1268** and **SX1280** chips, that have an **SPI interface** and expose the relevant **DIO** interrupt pins from the chip.
 88  
 89  ## Getting Started Fast
 90  You can download and flash the firmware to all the supported boards using the [RNode Config Utility](https://github.com/markqvist/rnodeconfigutil). All firmware releases are now handled and installed directly through the `rnodeconf` utility, which is included in the `rns` package. It can be installed via `pip`:
 91  
 92  ```
 93  # Install rnodeconf via rns package
 94  pip install rns --upgrade
 95  
 96  # Install the firmware on a board with the install guide
 97  rnodeconf --autoinstall
 98  ```
 99  
100  For most of the supported device types, it is also possible to use [Liam Cottle's Web-based RNode Flasher](https://liamcottle.github.io/rnode-flasher/). This option may be easier if you're not familiar with using a command line interface.
101  
102  For more detailed instruction and in-depth guides, you can have a look at some of these resources:
103  
104  - Create a [basic RNode from readily available development boards](https://unsigned.io/guides/2022_01_25_installing-rnode-firmware-on-supported-devices.html)
105  - Follow a complete build recipe for [making a handheld RNode](https://unsigned.io/guides/2023_01_14_Making_A_Handheld_RNode.html), like the one pictured above
106  - Learn the basics on how to [create and build your own RNode designs](https://unsigned.io/guides/2022_01_26_how-to-make-your-own-rnodes.html) from scratch
107  - Once you've got the hang of it, start building RNodes for your community, or [even for selling them](https://unsigned.io/sell_rnodes.html)
108  
109  If you would rather just buy a pre-made unit, you can visit one of the community vendors that produce and sell RNodes:
110  
111  - [Liberated Embedded Systems](https://store.liberatedsystems.co.uk/)
112  - [Simply Equipped](https://simplyequipped.com/)
113  
114  If you'd like to have your shop added to this list, let me know.
115  
116  ## Support RNode Development
117  You can help support the continued development of open, free and private communications systems by donating via one of the following channels:
118  
119  - Monero:
120    ```
121    84FpY1QbxHcgdseePYNmhTHcrgMX4nFfBYtz2GKYToqHVVhJp8Eaw1Z1EedRnKD19b3B8NiLCGVxzKV17UMmmeEsCrPyA5w
122    ```
123  - Bitcoin
124    ```
125    bc1p4a6axuvl7n9hpapfj8sv5reqj8kz6uxa67d5en70vzrttj0fmcusgxsfk5
126    ```
127  - Ethereum
128    ```
129    0xae89F3B94fC4AD6563F0864a55F9a697a90261ff
130    ```
131  - Ko-Fi: https://ko-fi.com/markqvist
132  
133  
134  ## License & Use
135  The RNode Firmware is Copyright © 2024 Mark Qvist / [unsigned.io](https://unsigned.io), and is made available 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.
136  
137  You can obtain the source code from [git.unsigned.io](https://git.unsigned.io/markqvist/RNode_Firmware) or [GitHub](https://github.com/markqvist/rnode_firmware).
138  
139  Every RNode also includes an internal copy of it's own firmware source code, that can be downloaded through the [RNode Bootstrap Console](https://unsigned.io/rnode_bootstrap_console), by putting the RNode into Console Mode (which can be activated by pressing the reset button two times within two seconds).
140  
141  The RNode Ecosystem is free and non-proprietary, and actively seeks to distribute it's ownership and control. If you want to build RNodes for commercial purposes, including selling them, you must do so adhering to the Open Source licenses that the various parts of the RNode project is released under, and under your own responsibility.
142  
143  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.
144  
145  In practice, this means that you can use the firmware commercially, but you must understand your obligation to provide all future users of the system with the same rights, that you have been provided by the GPLv3. If you intend using the RNode Firmware commercially, it is worth reading [this page](https://unsigned.io/sell_rnodes.html).