Updated license to GPLv3
This commit is contained in:
parent
1f028db14d
commit
b85f660cae
94
README.md
94
README.md
@ -1,17 +1,18 @@
|
|||||||
# RNode Firmware <img align="right" src="https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg"/>
|
# RNode Firmware
|
||||||
|
|
||||||
This is the firmware for [RNode](https://unsigned.io/rnode), a very flexible LoRa-based communication device. RNode can functions as a:
|
This is the firmware for [RNode](https://unsigned.io/rnode), a very flexible LoRa-based Open Communications Device.
|
||||||
|
|
||||||
|
An RNode can function as a:
|
||||||
|
|
||||||
|
- General purpose long-range data radio module
|
||||||
- Network adapter for [Reticulum](https://github.com/markqvist/Reticulum)
|
- Network adapter for [Reticulum](https://github.com/markqvist/Reticulum)
|
||||||
- A general purpose long-range data radio
|
|
||||||
- LoRa interface for your computer (or any device with a USB or serial port)
|
- LoRa interface for your computer (or any device with a USB or serial port)
|
||||||
- Generic [LoRa-based network adapter](https://unsigned.io/15-kilometre-ssh-link-with-rnode/) for your Linux devices
|
- Generic [LoRa-based network adapter](https://unsigned.io/15-kilometre-ssh-link-with-rnode/)
|
||||||
- [Packet sniffer](https://github.com/markqvist/LoRaMon) for LoRa networks
|
- [Packet sniffer](https://github.com/markqvist/LoRaMon) for LoRa networks
|
||||||
- LoRa development board
|
- LoRa-based KISS-compatible TNC for amateur radio and AX.25 applications
|
||||||
- A LoRa-based KISS-compatible TNC for amateur radio and AX.25 applications
|
- Flexible platform for experiementing with LoRa technology
|
||||||
- A flexible platform for experiementing with LoRa technology
|
|
||||||
|
|
||||||
To install this firmware on homebrew RNodes and other supported boards, please use the [RNode Config Utility](https://github.com/markqvist/rnodeconfigutil). It contains an auto-installer that allows you to install the RNode firmware on a variety of boards. For guides and tutorials on how to get started with making your own RNodes, visit [unsigned.io](https://unsigned.io).
|
To install this firmware on homebrew RNodes and other supported boards, use `rnodeconf`, the *RNode Config Utility*. For guides and tutorials on how to get started with making your own RNodes, visit [unsigned.io](https://unsigned.io).
|
||||||
|
|
||||||
![Devices Running RNode Firmware](https://github.com/markqvist/RNode_Firmware/raw/master/Documentation/rnfw_1.jpg)
|
![Devices Running RNode Firmware](https://github.com/markqvist/RNode_Firmware/raw/master/Documentation/rnfw_1.jpg)
|
||||||
|
|
||||||
@ -27,9 +28,6 @@ pip install rns --upgrade
|
|||||||
rnodeconf --autoinstall
|
rnodeconf --autoinstall
|
||||||
```
|
```
|
||||||
|
|
||||||
## Current Status
|
|
||||||
The RNode firmware can be considered stable at this point. If you do find a bug or discover unintended behaviour, please report it as an issue here, so I can fix it!
|
|
||||||
|
|
||||||
## Supported Hardware
|
## Supported Hardware
|
||||||
|
|
||||||
The RNode Firmware supports the following boards:
|
The RNode Firmware supports the following boards:
|
||||||
@ -44,12 +42,6 @@ The RNode Firmware supports the following boards:
|
|||||||
- LilyGO LoRa32 v2.1 devices
|
- LilyGO LoRa32 v2.1 devices
|
||||||
- Heltec LoRa32 v2 devices
|
- Heltec LoRa32 v2 devices
|
||||||
|
|
||||||
The original RNode from [unsigned.io](https://unsigned.io) is controlled by a powerful ATmega1284p MCU, and is fully Arduino compatible. You can use this firmware, or it can be programmed any way you like, either from the Arduino IDE, or using any of the available tools for AVR development. This firmware can also be edited and compiled directly from the Arduino IDE.
|
|
||||||
|
|
||||||
For adding RNode to your Arduino environment, please see [this post](https://unsigned.io/board-support-in-arduino-ide/).
|
|
||||||
|
|
||||||
For configuring an RNode with this firmware, please have a look at the [RNode Config Utility](https://github.com/markqvist/rnodeconfigutil).
|
|
||||||
|
|
||||||
## Operating Modes
|
## Operating Modes
|
||||||
RNode can operate in two modes, host-controlled (default) and TNC mode:
|
RNode can operate in two modes, host-controlled (default) and TNC mode:
|
||||||
|
|
||||||
@ -57,36 +49,6 @@ RNode can operate in two modes, host-controlled (default) and TNC mode:
|
|||||||
|
|
||||||
- When RNode is in TNC mode, it will configure itself on powerup and enable the radio immediately. This mode can be enabled by using the -T option of this utility (the utility will guide you through the settings if you don't specify them directly).
|
- When RNode is in TNC mode, it will configure itself on powerup and enable the radio immediately. This mode can be enabled by using the -T option of this utility (the utility will guide you through the settings if you don't specify them directly).
|
||||||
|
|
||||||
## USB and Serial Protocol
|
|
||||||
You can communicate with RNode either via the on-board USB connector, or using the serial pins on the board (labeled RX0 and TX0). RNode uses a standard FTDI USB chip, so it works out of the box without additional drivers in most operating systems.
|
|
||||||
|
|
||||||
All communications to and from the board uses [KISS framing](https://en.wikipedia.org/wiki/KISS_(TNC)) with a custom command set. RNode also does not use HDLC ports in the command byte, and as such uses the full 8 bits of the command byte is available for the actual command. Please see table below for supported commands.
|
|
||||||
|
|
||||||
| Command | Byte | Description
|
|
||||||
| -----------------|------| -----------------------------------------------
|
|
||||||
| Data frame | 0x00 | A data packet to or from the device
|
|
||||||
| Frequency | 0x01 | Sets or queries the frequency
|
|
||||||
| Bandwidth | 0x02 | Sets or queries the bandwidth
|
|
||||||
| TX Power | 0x03 | Sets or queries the TX power
|
|
||||||
| Spreading Factor | 0x04 | Sets or queries the spreading factor
|
|
||||||
| Coding Rate | 0x05 | Sets or queries the coding rate
|
|
||||||
| Radio State | 0x06 | Sets or queries radio state
|
|
||||||
| Radio Lock | 0x07 | Sets or queries the radio lock
|
|
||||||
| Device Detect | 0x08 | Probe command for device detection
|
|
||||||
| Promiscuous | 0x0E | Sets or queries promiscuous mode
|
|
||||||
| RX Stats | 0x21 | Queries received bytes
|
|
||||||
| TX Stats | 0x22 | Queries transmitted bytes
|
|
||||||
| Last RSSI | 0x23 | Indicates RSSI of last packet received
|
|
||||||
| Blink | 0x30 | Blinks LEDs
|
|
||||||
| Random | 0x40 | Queries for a random number
|
|
||||||
| Firmware Version | 0x50 | Queries for installed firmware version
|
|
||||||
| ROM Read | 0x51 | Read EEPROM byte
|
|
||||||
| ROM Write | 0x52 | Write EEPROM byte
|
|
||||||
| TNC Mode | 0x53 | Enables TNC mode
|
|
||||||
| Normal Mode | 0x54 | Enables host-controlled mode
|
|
||||||
| ROM Erase | 0x59 | Completely erases EEPROM
|
|
||||||
| Error | 0x90 | Indicates an error
|
|
||||||
|
|
||||||
## Programming Libraries
|
## Programming Libraries
|
||||||
Have a look in the "Libraries" folder for includes to let you easily use RNode in your own software.
|
Have a look in the "Libraries" folder for includes to let you easily use RNode in your own software.
|
||||||
|
|
||||||
@ -96,18 +58,18 @@ Here's a Python example:
|
|||||||
from RNode import RNodeInterface
|
from RNode import RNodeInterface
|
||||||
|
|
||||||
def gotPacket(data, rnode):
|
def gotPacket(data, rnode):
|
||||||
print "Received a packet: "+data
|
print "Received a packet: "+data
|
||||||
|
|
||||||
rnode = RNodeInterface(
|
rnode = RNodeInterface(
|
||||||
callback = gotPacket,
|
callback = gotPacket,
|
||||||
name = "My RNode",
|
name = "My RNode",
|
||||||
port = "/dev/ttyUSB0",
|
port = "/dev/ttyUSB0",
|
||||||
frequency = 868000000,
|
frequency = 868000000,
|
||||||
bandwidth = 125000,
|
bandwidth = 125000,
|
||||||
txpower = 2,
|
txpower = 2,
|
||||||
sf = 7,
|
sf = 7,
|
||||||
cr = 5,
|
cr = 5,
|
||||||
loglevel = RNodeInterface.LOG_DEBUG)
|
loglevel = RNodeInterface.LOG_DEBUG)
|
||||||
|
|
||||||
rnode.send("Hello World!")
|
rnode.send("Hello World!")
|
||||||
```
|
```
|
||||||
@ -132,19 +94,15 @@ You can help support the continued development of open, free and private communi
|
|||||||
```
|
```
|
||||||
- Ko-Fi: https://ko-fi.com/markqvist
|
- Ko-Fi: https://ko-fi.com/markqvist
|
||||||
|
|
||||||
## License
|
## License & Use
|
||||||
Permission is hereby granted to use the RNode firmware in binary form, for any and all purposes, and to freely distribute binary copies of the firmware, so long as no payment or compensation is charged or received for such distribution or use.
|
The RNode Firmware is Copyright © 2022 Mark Qvist / unsigned.io, and is made available under a dual GPL+commercial license.
|
||||||
|
|
||||||
If you want to charge money or receive compensation for providing this work to others, in any way or form, you must buy a license for doing so, which is cheap and easy.
|
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.
|
||||||
|
|
||||||
Unless otherwise noted, this work is licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].
|
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.
|
||||||
|
|
||||||
Prior versions of this work, until and including commit [fe5e6aab9c2ab8fe69ede7f1da04bcffff7d1ed7](https://github.com/markqvist/RNode_Firmware/commit/fe5e6aab9c2ab8fe69ede7f1da04bcffff7d1ed7) was licensed purely under MIT License.
|
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 use the RNode Firmware in commercial products, or build and sell RNodes, it is easy to do so by licensing the firmware commercially. I provide a range of convenient tools and resources for anyone who wants to build and sell RNodes, so just get in contact with me to get started.
|
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.
|
||||||
|
|
||||||
<img src="https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png" align="right">
|
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.
|
||||||
|
|
||||||
[cc-by-nc-sa]: http://creativecommons.org/licenses/by-nc-sa/4.0/
|
|
||||||
[cc-by-nc-sa-image]: https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png
|
|
||||||
[cc-by-nc-sa-shield]: https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg
|
|
@ -1,25 +1,3 @@
|
|||||||
// MIT License
|
|
||||||
//
|
|
||||||
// Copyright (c) 2022 Mark Qvist - unsigned.io/rnode
|
|
||||||
//
|
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
|
||||||
// in the Software without restriction, including without limitation the rights
|
|
||||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
// copies of the Software, and to permit persons to whom the Software is
|
|
||||||
// furnished to do so, subject to the following conditions:
|
|
||||||
//
|
|
||||||
// The above copyright notice and this permission notice shall be included in all
|
|
||||||
// copies or substantial portions of the Software.
|
|
||||||
//
|
|
||||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
// SOFTWARE.
|
|
||||||
|
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
#include "Utilities.h"
|
#include "Utilities.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user