Updated documentation Getting Started section

This commit is contained in:
Mark Qvist 2023-01-01 18:49:13 +01:00
parent 2839d39350
commit 7ed0726feb
11 changed files with 330 additions and 64 deletions

View File

@ -7,16 +7,35 @@ you want to do. This guide will outline sensible starting paths for different
scenarios. scenarios.
Standalone Reticulum Installation
=============================================
If you simply want to install Reticulum and related utilities on a system,
the easiest way is via ``pip``:
.. code::
pip install rns
If you no not already have pip installed, you can install it using the package manager
of your system with a command like ``sudo apt install python3-pip``,
``sudo pamac install python-pip`` or similar. You can also dowload the Reticulum release
wheels from GitHub, or other release channels, and install them offline using ``pip``:
.. code::
pip install ./rns-0.4.6-py3-none-any.whl
Try Using a Reticulum-based Program Try Using a Reticulum-based Program
============================================= =============================================
If you simply want to try using a program built with Reticulum, a few different If you simply want to try using a program built with Reticulum, a few different
programs exist that allow basic communication and a range of other useful functions programs exist that allow basic communication and a range of other useful functions,
over even extremely low-bandwidth Reticulum networks. even over extremely low-bandwidth Reticulum networks.
These programs will let you get a feel for how Reticulum works. They have been designed These programs will let you get a feel for how Reticulum works. They have been designed
to run well over networks based on LoRa or packet radio, but can also be used completely to run well over networks based on LoRa or packet radio, but can also be used over fast
over local WiFi, wired Ethernet, the Internet, or any combination. links, such as local WiFi, wired Ethernet, the Internet, or any combination.
As such, it is easy to get started experimenting, without having to set up any radio As such, it is easy to get started experimenting, without having to set up any radio
transceivers or infrastructure just to try it out. Launching the programs on separate transceivers or infrastructure just to try it out. Launching the programs on separate
@ -44,7 +63,7 @@ You can install Nomad Network via pip:
.. code:: .. code::
# Install ... # Install ...
pip3 install nomadnet pip install nomadnet
# ... and run # ... and run
nomadnet nomadnet
@ -61,12 +80,14 @@ If you would rather use a program with a graphical user interface, you can take
a look at `Sideband <https://unsigned.io/sideband>`_, which is available for Android, a look at `Sideband <https://unsigned.io/sideband>`_, which is available for Android,
Linux and macOS. Linux and macOS.
.. image:: screenshots/sideband_1.png .. image:: screenshots/sideband_devices.webp
:align: center :align: center
:target: _images/sideband_1.png :target: _images/sideband_devices.webp
Sideband is currently in the early stages of development, but already provides basic Sideband allows you to communicate with other people or LXMF-compatible
communication features, and interoperates with Nomad Network, or any other LXMF client. systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, Encrypted QR
Paper Messages, or anything else Reticulum supports. It also interoperates with
the Nomad Network program.
Using the Included Utilities Using the Included Utilities
============================================= =============================================
@ -272,7 +293,7 @@ don't use pip, but try this recipe:
# Run the example in client mode to "ping" the server. # Run the example in client mode to "ping" the server.
# Replace the hash below with the actual destination hash of your server. # Replace the hash below with the actual destination hash of your server.
python3 Examples/Echo.py 3e12fc71692f8ec47bc5 python3 Examples/Echo.py 174a64852a75682259ad8b921b8bf416
# Have a look at another example # Have a look at another example
python3 Examples/Filetransfer.py -h python3 Examples/Filetransfer.py -h
@ -287,7 +308,7 @@ or ask one of the developers or maintainers for a good place to start.
Reticulum on ARM64 Reticulum on ARM64
============================================== ==============================================
On some architectures, including ARM64, not all dependencies have precompiled On some architectures, including ARM64, not all dependencies have precompiled
binaries. On such systems, you will need to install ``python3-dev`` before binaries. On such systems, you may need to install ``python3-dev`` before
installing Reticulum or programs that depend on Reticulum. installing Reticulum or programs that depend on Reticulum.
.. code:: .. code::
@ -300,6 +321,12 @@ installing Reticulum or programs that depend on Reticulum.
python3 -m pip install rns python3 -m pip install rns
Reticulum on Raspberry Pi
==============================================
It is currently recommended to use a 64-bit version of the Raspberry Pi OS
if you want to run Reticulum on Raspberry Pi computers, since 32-bit versions
don't always have packages available for some dependencies.
Reticulum on Android Reticulum on Android
============================================== ==============================================
Reticulum can be used on Android in different ways. The easiest way to get Reticulum can be used on Android in different ways. The easiest way to get
@ -313,12 +340,31 @@ Termux is a terminal emulator and Linux environment for Android based devices,
which includes the ability to use many different programs and libraries, which includes the ability to use many different programs and libraries,
including Reticulum. including Reticulum.
Since the Python cryptography.io module does not offer pre-built wheels for To use Reticulum within the Termux environment, you will need to install
Android, the standard one-line install of Reticulum does not work on Android, ``python`` and the ``python-cryptography`` library using ``pkg``, the package-manager
and a few extra commands are required. build into Termux. After that, you can use ``pip`` to install Reticulum.
From within Termux, execute the following: From within Termux, execute the following:
.. code::
# First, make sure indexes and packages are up to date.
pkg update
pkg upgrade
# Then install python and the cryptography library.
pkg install python python-cryptography
# Make sure pip is up to date, and install the wheel module.
pip install wheel pip --upgrade
# Install Reticulum
pip install rns
If for some reason the ``python-cryptography`` package is not available for
your platform via the Termux package manager, you can attempt to build it
locally on your device using the following command:
.. code:: .. code::
# First, make sure indexes and packages are up to date. # First, make sure indexes and packages are up to date.
@ -329,7 +375,7 @@ From within Termux, execute the following:
pkg install python build-essential openssl libffi rust pkg install python build-essential openssl libffi rust
# Make sure pip is up to date, and install the wheel module. # Make sure pip is up to date, and install the wheel module.
pip3 install wheel pip --upgrade pip install wheel pip --upgrade
# To allow the installer to build the cryptography module, # To allow the installer to build the cryptography module,
# we need to let it know what platform we are compiling for: # we need to let it know what platform we are compiling for:
@ -338,11 +384,11 @@ From within Termux, execute the following:
# Start the install process for the cryptography module. # Start the install process for the cryptography module.
# Depending on your device, this can take several minutes, # Depending on your device, this can take several minutes,
# since the module must be compiled locally on your device. # since the module must be compiled locally on your device.
pip3 install cryptography pip install cryptography
# If the above installation succeeds, you can now install # If the above installation succeeds, you can now install
# Reticulum and any related software # Reticulum and any related software
pip3 install rns pip install rns
It is also possible to include Reticulum in apps compiled and distributed as It is also possible to include Reticulum in apps compiled and distributed as
Android APKs. A detailed tutorial and example source code will be included Android APKs. A detailed tutorial and example source code will be included

View File

@ -166,7 +166,7 @@ then install Reticulum with with ``pip``:
.. code:: .. code::
pip3 install rns pip install rns
Once installation has completed, it is time to start installing the firmware on your Once installation has completed, it is time to start installing the firmware on your
devices. Run ``rnodeconf`` in auto-install mode like so: devices. Run ``rnodeconf`` in auto-install mode like so:

View File

@ -5,7 +5,9 @@ Using Reticulum on Your System
****************************** ******************************
Reticulum is not installed as a driver or kernel module, as one might expect Reticulum is not installed as a driver or kernel module, as one might expect
of a networking stack. Instead, Reticulum is distributed as a Python module. of a networking stack. Instead, Reticulum is distributed as a Python module,
containing the networking core, and a set of utility and daemon programs.
This means that no special privileges are required to install or use it. It This means that no special privileges are required to install or use it. It
is also very light-weight, and easy to transfer to, and install on new systems. is also very light-weight, and easy to transfer to, and install on new systems.
@ -16,8 +18,8 @@ already running.
In many cases, this approach is sufficient. When any program needs to use In many cases, this approach is sufficient. When any program needs to use
Reticulum, it is loaded, initialised, interfaces are brought up, and the Reticulum, it is loaded, initialised, interfaces are brought up, and the
program can now communicate over any Reticulum networks available. If another program can now communicate over any Reticulum networks available. If another
program starts up and also wants access to the same Reticulum network, the program starts up and also wants access to the same Reticulum network, the already
instance is simply shared. This works for any number of programs running running instance is simply shared. This works for any number of programs running
concurrently, and is very easy to use, but depending on your use case, there concurrently, and is very easy to use, but depending on your use case, there
are other options. are other options.
@ -425,6 +427,48 @@ You can specify as many allowed senders as needed, or completely disable authent
--version show program's version number and exit --version show program's version number and exit
The rnodeconf Utility
=====================
The ``rnodeconf`` utility allows you to inspect and configure existing :ref:`RNodes<rnode-main>`, and
to create and provision new :ref:`RNodes<rnode-main>` from any supported hardware devices.
.. code:: text
usage: rnodeconf [-h] [-i] [-a] [-u] [-U] [--fw-version version] [--nocheck] [-C] [-N] [-T] [-b] [-B] [-p] [--freq Hz] [--bw Hz] [--txp dBm] [--sf factor] [--cr rate] [--eeprom-backup] [--eeprom-dump] [--eeprom-wipe] [--version] [port]
RNode Configuration and firmware utility. This program allows you to change various settings and startup modes of RNode. It can also install, flash and update the firmware on supported devices.
positional arguments:
port serial port where RNode is attached
options:
-h, --help show this help message and exit
-i, --info Show device info
-a, --autoinstall Automatic installation on various supported devices
-u, --update Update firmware to the latest version
-U, --force-update Update to specified firmware even if version matches or is older than installed version
--fw-version version Use a specific firmware version for update or autoinstall
--nocheck Don't check for firmware updates online
-C, --clear-cache Clear locally cached firmware files
-N, --normal Switch device to normal mode
-T, --tnc Switch device to TNC mode
-b, --bluetooth-on Turn device bluetooth on
-B, --bluetooth-off Turn device bluetooth off
-p, --bluetooth-pair Put device into bluetooth pairing mode
--freq Hz Frequency in Hz for TNC mode
--bw Hz Bandwidth in Hz for TNC mode
--txp dBm TX power in dBm for TNC mode
--sf factor Spreading factor for TNC mode (7 - 12)
--cr rate Coding rate for TNC mode (5 - 8)
--eeprom-backup Backup EEPROM to file
--eeprom-dump Dump EEPROM to console
--eeprom-wipe Unlock and wipe EEPROM
--version Print program version and exit
For more information on how to create your own RNodes, please read the :ref:`Creating RNodes<rnode-creating>`
section of this manual.
Improving System Configuration Improving System Configuration
------------------------------ ------------------------------

View File

@ -226,14 +226,29 @@
<p>The best way to get started with the Reticulum Network Stack depends on what <p>The best way to get started with the Reticulum Network Stack depends on what
you want to do. This guide will outline sensible starting paths for different you want to do. This guide will outline sensible starting paths for different
scenarios.</p> scenarios.</p>
<section id="standalone-reticulum-installation">
<h2>Standalone Reticulum Installation<a class="headerlink" href="#standalone-reticulum-installation" title="Permalink to this heading">#</a></h2>
<p>If you simply want to install Reticulum and related utilities on a system,
the easiest way is via <code class="docutils literal notranslate"><span class="pre">pip</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">rns</span>
</pre></div>
</div>
<p>If you no not already have pip installed, you can install it using the package manager
of your system with a command like <code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">apt</span> <span class="pre">install</span> <span class="pre">python3-pip</span></code>,
<code class="docutils literal notranslate"><span class="pre">sudo</span> <span class="pre">pamac</span> <span class="pre">install</span> <span class="pre">python-pip</span></code> or similar. You can also dowload the Reticulum release
wheels from GitHub, or other release channels, and install them offline using <code class="docutils literal notranslate"><span class="pre">pip</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="o">./</span><span class="n">rns</span><span class="o">-</span><span class="mf">0.4.6</span><span class="o">-</span><span class="n">py3</span><span class="o">-</span><span class="n">none</span><span class="o">-</span><span class="nb">any</span><span class="o">.</span><span class="n">whl</span>
</pre></div>
</div>
</section>
<section id="try-using-a-reticulum-based-program"> <section id="try-using-a-reticulum-based-program">
<h2>Try Using a Reticulum-based Program<a class="headerlink" href="#try-using-a-reticulum-based-program" title="Permalink to this heading">#</a></h2> <h2>Try Using a Reticulum-based Program<a class="headerlink" href="#try-using-a-reticulum-based-program" title="Permalink to this heading">#</a></h2>
<p>If you simply want to try using a program built with Reticulum, a few different <p>If you simply want to try using a program built with Reticulum, a few different
programs exist that allow basic communication and a range of other useful functions programs exist that allow basic communication and a range of other useful functions,
over even extremely low-bandwidth Reticulum networks.</p> even over extremely low-bandwidth Reticulum networks.</p>
<p>These programs will let you get a feel for how Reticulum works. They have been designed <p>These programs will let you get a feel for how Reticulum works. They have been designed
to run well over networks based on LoRa or packet radio, but can also be used completely to run well over networks based on LoRa or packet radio, but can also be used over fast
over local WiFi, wired Ethernet, the Internet, or any combination.</p> links, such as local WiFi, wired Ethernet, the Internet, or any combination.</p>
<p>As such, it is easy to get started experimenting, without having to set up any radio <p>As such, it is easy to get started experimenting, without having to set up any radio
transceivers or infrastructure just to try it out. Launching the programs on separate transceivers or infrastructure just to try it out. Launching the programs on separate
devices connected to the same WiFi network is enough to get started, and physical devices connected to the same WiFi network is enough to get started, and physical
@ -251,7 +266,7 @@ for the messaging and information-sharing protocol
<a class="reference external" href="https://github.com/markqvist/lxmf">LXMF</a>, another project built with Reticulum.</p> <a class="reference external" href="https://github.com/markqvist/lxmf">LXMF</a>, another project built with Reticulum.</p>
<p>You can install Nomad Network via pip:</p> <p>You can install Nomad Network via pip:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Install ...</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Install ...</span>
<span class="n">pip3</span> <span class="n">install</span> <span class="n">nomadnet</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">nomadnet</span>
<span class="c1"># ... and run</span> <span class="c1"># ... and run</span>
<span class="n">nomadnet</span> <span class="n">nomadnet</span>
@ -267,9 +282,11 @@ program, reboot your system and try again.</p>
<p>If you would rather use a program with a graphical user interface, you can take <p>If you would rather use a program with a graphical user interface, you can take
a look at <a class="reference external" href="https://unsigned.io/sideband">Sideband</a>, which is available for Android, a look at <a class="reference external" href="https://unsigned.io/sideband">Sideband</a>, which is available for Android,
Linux and macOS.</p> Linux and macOS.</p>
<a class="reference external image-reference" href="_images/sideband_1.png"><img alt="_images/sideband_1.png" class="align-center" src="_images/sideband_1.png" /></a> <a class="reference external image-reference" href="_images/sideband_devices.webp"><img alt="_images/sideband_devices.webp" class="align-center" src="_images/sideband_devices.webp" /></a>
<p>Sideband is currently in the early stages of development, but already provides basic <p>Sideband allows you to communicate with other people or LXMF-compatible
communication features, and interoperates with Nomad Network, or any other LXMF client.</p> systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, Encrypted QR
Paper Messages, or anything else Reticulum supports. It also interoperates with
the Nomad Network program.</p>
</section> </section>
</section> </section>
<section id="using-the-included-utilities"> <section id="using-the-included-utilities">
@ -443,7 +460,7 @@ dont use pip, but try this recipe:</p>
<span class="c1"># Run the example in client mode to &quot;ping&quot; the server.</span> <span class="c1"># Run the example in client mode to &quot;ping&quot; the server.</span>
<span class="c1"># Replace the hash below with the actual destination hash of your server.</span> <span class="c1"># Replace the hash below with the actual destination hash of your server.</span>
<span class="n">python3</span> <span class="n">Examples</span><span class="o">/</span><span class="n">Echo</span><span class="o">.</span><span class="n">py</span> <span class="mf">3e12</span><span class="n">fc71692f8ec47bc5</span> <span class="n">python3</span> <span class="n">Examples</span><span class="o">/</span><span class="n">Echo</span><span class="o">.</span><span class="n">py</span> <span class="mi">174</span><span class="n">a64852a75682259ad8b921b8bf416</span>
<span class="c1"># Have a look at another example</span> <span class="c1"># Have a look at another example</span>
<span class="n">python3</span> <span class="n">Examples</span><span class="o">/</span><span class="n">Filetransfer</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">h</span> <span class="n">python3</span> <span class="n">Examples</span><span class="o">/</span><span class="n">Filetransfer</span><span class="o">.</span><span class="n">py</span> <span class="o">-</span><span class="n">h</span>
@ -458,7 +475,7 @@ or ask one of the developers or maintainers for a good place to start.</p>
<section id="reticulum-on-arm64"> <section id="reticulum-on-arm64">
<h2>Reticulum on ARM64<a class="headerlink" href="#reticulum-on-arm64" title="Permalink to this heading">#</a></h2> <h2>Reticulum on ARM64<a class="headerlink" href="#reticulum-on-arm64" title="Permalink to this heading">#</a></h2>
<p>On some architectures, including ARM64, not all dependencies have precompiled <p>On some architectures, including ARM64, not all dependencies have precompiled
binaries. On such systems, you will need to install <code class="docutils literal notranslate"><span class="pre">python3-dev</span></code> before binaries. On such systems, you may need to install <code class="docutils literal notranslate"><span class="pre">python3-dev</span></code> before
installing Reticulum or programs that depend on Reticulum.</p> installing Reticulum or programs that depend on Reticulum.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Install Python and development packages</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Install Python and development packages</span>
<span class="n">sudo</span> <span class="n">apt</span> <span class="n">update</span> <span class="n">sudo</span> <span class="n">apt</span> <span class="n">update</span>
@ -469,6 +486,12 @@ installing Reticulum or programs that depend on Reticulum.</p>
</pre></div> </pre></div>
</div> </div>
</section> </section>
<section id="reticulum-on-raspberry-pi">
<h2>Reticulum on Raspberry Pi<a class="headerlink" href="#reticulum-on-raspberry-pi" title="Permalink to this heading">#</a></h2>
<p>It is currently recommended to use a 64-bit version of the Raspberry Pi OS
if you want to run Reticulum on Raspberry Pi computers, since 32-bit versions
dont always have packages available for some dependencies.</p>
</section>
<section id="reticulum-on-android"> <section id="reticulum-on-android">
<h2>Reticulum on Android<a class="headerlink" href="#reticulum-on-android" title="Permalink to this heading">#</a></h2> <h2>Reticulum on Android<a class="headerlink" href="#reticulum-on-android" title="Permalink to this heading">#</a></h2>
<p>Reticulum can be used on Android in different ways. The easiest way to get <p>Reticulum can be used on Android in different ways. The easiest way to get
@ -479,19 +502,36 @@ the <a class="reference external" href="https://termux.com/">Termux app</a>, at
<p>Termux is a terminal emulator and Linux environment for Android based devices, <p>Termux is a terminal emulator and Linux environment for Android based devices,
which includes the ability to use many different programs and libraries, which includes the ability to use many different programs and libraries,
including Reticulum.</p> including Reticulum.</p>
<p>Since the Python cryptography.io module does not offer pre-built wheels for <p>To use Reticulum within the Termux environment, you will need to install
Android, the standard one-line install of Reticulum does not work on Android, <code class="docutils literal notranslate"><span class="pre">python</span></code> and the <code class="docutils literal notranslate"><span class="pre">python-cryptography</span></code> library using <code class="docutils literal notranslate"><span class="pre">pkg</span></code>, the package-manager
and a few extra commands are required.</p> build into Termux. After that, you can use <code class="docutils literal notranslate"><span class="pre">pip</span></code> to install Reticulum.</p>
<p>From within Termux, execute the following:</p> <p>From within Termux, execute the following:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># First, make sure indexes and packages are up to date.</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># First, make sure indexes and packages are up to date.</span>
<span class="n">pkg</span> <span class="n">update</span> <span class="n">pkg</span> <span class="n">update</span>
<span class="n">pkg</span> <span class="n">upgrade</span> <span class="n">pkg</span> <span class="n">upgrade</span>
<span class="c1"># Then install python and the cryptography library.</span>
<span class="n">pkg</span> <span class="n">install</span> <span class="n">python</span> <span class="n">python</span><span class="o">-</span><span class="n">cryptography</span>
<span class="c1"># Make sure pip is up to date, and install the wheel module.</span>
<span class="n">pip</span> <span class="n">install</span> <span class="n">wheel</span> <span class="n">pip</span> <span class="o">--</span><span class="n">upgrade</span>
<span class="c1"># Install Reticulum</span>
<span class="n">pip</span> <span class="n">install</span> <span class="n">rns</span>
</pre></div>
</div>
<p>If for some reason the <code class="docutils literal notranslate"><span class="pre">python-cryptography</span></code> package is not available for
your platform via the Termux package manager, you can attempt to build it
locally on your device using the following command:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># First, make sure indexes and packages are up to date.</span>
<span class="n">pkg</span> <span class="n">update</span>
<span class="n">pkg</span> <span class="n">upgrade</span>
<span class="c1"># Then install dependencies for the cryptography library.</span> <span class="c1"># Then install dependencies for the cryptography library.</span>
<span class="n">pkg</span> <span class="n">install</span> <span class="n">python</span> <span class="n">build</span><span class="o">-</span><span class="n">essential</span> <span class="n">openssl</span> <span class="n">libffi</span> <span class="n">rust</span> <span class="n">pkg</span> <span class="n">install</span> <span class="n">python</span> <span class="n">build</span><span class="o">-</span><span class="n">essential</span> <span class="n">openssl</span> <span class="n">libffi</span> <span class="n">rust</span>
<span class="c1"># Make sure pip is up to date, and install the wheel module.</span> <span class="c1"># Make sure pip is up to date, and install the wheel module.</span>
<span class="n">pip3</span> <span class="n">install</span> <span class="n">wheel</span> <span class="n">pip</span> <span class="o">--</span><span class="n">upgrade</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">wheel</span> <span class="n">pip</span> <span class="o">--</span><span class="n">upgrade</span>
<span class="c1"># To allow the installer to build the cryptography module,</span> <span class="c1"># To allow the installer to build the cryptography module,</span>
<span class="c1"># we need to let it know what platform we are compiling for:</span> <span class="c1"># we need to let it know what platform we are compiling for:</span>
@ -500,11 +540,11 @@ and a few extra commands are required.</p>
<span class="c1"># Start the install process for the cryptography module.</span> <span class="c1"># Start the install process for the cryptography module.</span>
<span class="c1"># Depending on your device, this can take several minutes,</span> <span class="c1"># Depending on your device, this can take several minutes,</span>
<span class="c1"># since the module must be compiled locally on your device.</span> <span class="c1"># since the module must be compiled locally on your device.</span>
<span class="n">pip3</span> <span class="n">install</span> <span class="n">cryptography</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">cryptography</span>
<span class="c1"># If the above installation succeeds, you can now install</span> <span class="c1"># If the above installation succeeds, you can now install</span>
<span class="c1"># Reticulum and any related software</span> <span class="c1"># Reticulum and any related software</span>
<span class="n">pip3</span> <span class="n">install</span> <span class="n">rns</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">rns</span>
</pre></div> </pre></div>
</div> </div>
<p>It is also possible to include Reticulum in apps compiled and distributed as <p>It is also possible to include Reticulum in apps compiled and distributed as
@ -591,6 +631,7 @@ section of this manual.</p>
<div class="toc-tree"> <div class="toc-tree">
<ul> <ul>
<li><a class="reference internal" href="#">Getting Started Fast</a><ul> <li><a class="reference internal" href="#">Getting Started Fast</a><ul>
<li><a class="reference internal" href="#standalone-reticulum-installation">Standalone Reticulum Installation</a></li>
<li><a class="reference internal" href="#try-using-a-reticulum-based-program">Try Using a Reticulum-based Program</a><ul> <li><a class="reference internal" href="#try-using-a-reticulum-based-program">Try Using a Reticulum-based Program</a><ul>
<li><a class="reference internal" href="#nomad-network">Nomad Network</a></li> <li><a class="reference internal" href="#nomad-network">Nomad Network</a></li>
<li><a class="reference internal" href="#sideband">Sideband</a></li> <li><a class="reference internal" href="#sideband">Sideband</a></li>
@ -604,6 +645,7 @@ section of this manual.</p>
<li><a class="reference internal" href="#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li> <li><a class="reference internal" href="#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li>
<li><a class="reference internal" href="#participate-in-reticulum-development">Participate in Reticulum Development</a></li> <li><a class="reference internal" href="#participate-in-reticulum-development">Participate in Reticulum Development</a></li>
<li><a class="reference internal" href="#reticulum-on-arm64">Reticulum on ARM64</a></li> <li><a class="reference internal" href="#reticulum-on-arm64">Reticulum on ARM64</a></li>
<li><a class="reference internal" href="#reticulum-on-raspberry-pi">Reticulum on Raspberry Pi</a></li>
<li><a class="reference internal" href="#reticulum-on-android">Reticulum on Android</a></li> <li><a class="reference internal" href="#reticulum-on-android">Reticulum on Android</a></li>
<li><a class="reference internal" href="#pure-python-reticulum">Pure-Python Reticulum</a></li> <li><a class="reference internal" href="#pure-python-reticulum">Pure-Python Reticulum</a></li>
</ul> </ul>

View File

@ -352,7 +352,7 @@ using the <a class="reference external" href="https://github.com/markqvist/rnode
If you have installed Reticulum on your system, the <code class="docutils literal notranslate"><span class="pre">rnodeconf</span></code> program will already be If you have installed Reticulum on your system, the <code class="docutils literal notranslate"><span class="pre">rnodeconf</span></code> program will already be
available. If not, make sure that <code class="docutils literal notranslate"><span class="pre">Python3</span></code> and <code class="docutils literal notranslate"><span class="pre">pip</span></code> is installed on your system, and available. If not, make sure that <code class="docutils literal notranslate"><span class="pre">Python3</span></code> and <code class="docutils literal notranslate"><span class="pre">pip</span></code> is installed on your system, and
then install Reticulum with with <code class="docutils literal notranslate"><span class="pre">pip</span></code>:</p> then install Reticulum with with <code class="docutils literal notranslate"><span class="pre">pip</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip3</span> <span class="n">install</span> <span class="n">rns</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">rns</span>
</pre></div> </pre></div>
</div> </div>
<p>Once installation has completed, it is time to start installing the firmware on your <p>Once installation has completed, it is time to start installing the firmware on your

View File

@ -240,6 +240,7 @@ to participate in the development of Reticulum itself.</p>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="gettingstartedfast.html">Getting Started Fast</a><ul> <li class="toctree-l1"><a class="reference internal" href="gettingstartedfast.html">Getting Started Fast</a><ul>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#standalone-reticulum-installation">Standalone Reticulum Installation</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#try-using-a-reticulum-based-program">Try Using a Reticulum-based Program</a><ul> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#try-using-a-reticulum-based-program">Try Using a Reticulum-based Program</a><ul>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#nomad-network">Nomad Network</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#nomad-network">Nomad Network</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#sideband">Sideband</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#sideband">Sideband</a></li>
@ -253,6 +254,7 @@ to participate in the development of Reticulum itself.</p>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#participate-in-reticulum-development">Participate in Reticulum Development</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#participate-in-reticulum-development">Participate in Reticulum Development</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-arm64">Reticulum on ARM64</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-arm64">Reticulum on ARM64</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-raspberry-pi">Reticulum on Raspberry Pi</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-android">Reticulum on Android</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-android">Reticulum on Android</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#pure-python-reticulum">Pure-Python Reticulum</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#pure-python-reticulum">Pure-Python Reticulum</a></li>
</ul> </ul>
@ -266,6 +268,7 @@ to participate in the development of Reticulum itself.</p>
<li class="toctree-l3"><a class="reference internal" href="using.html#the-rnprobe-utility">The rnprobe Utility</a></li> <li class="toctree-l3"><a class="reference internal" href="using.html#the-rnprobe-utility">The rnprobe Utility</a></li>
<li class="toctree-l3"><a class="reference internal" href="using.html#the-rncp-utility">The rncp Utility</a></li> <li class="toctree-l3"><a class="reference internal" href="using.html#the-rncp-utility">The rncp Utility</a></li>
<li class="toctree-l3"><a class="reference internal" href="using.html#the-rnx-utility">The rnx Utility</a></li> <li class="toctree-l3"><a class="reference internal" href="using.html#the-rnx-utility">The rnx Utility</a></li>
<li class="toctree-l3"><a class="reference internal" href="using.html#the-rnodeconf-utility">The rnodeconf Utility</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l2"><a class="reference internal" href="using.html#improving-system-configuration">Improving System Configuration</a><ul> <li class="toctree-l2"><a class="reference internal" href="using.html#improving-system-configuration">Improving System Configuration</a><ul>

File diff suppressed because one or more lines are too long

View File

@ -224,8 +224,9 @@
<section id="using-reticulum-on-your-system"> <section id="using-reticulum-on-your-system">
<span id="using-main"></span><h1>Using Reticulum on Your System<a class="headerlink" href="#using-reticulum-on-your-system" title="Permalink to this heading">#</a></h1> <span id="using-main"></span><h1>Using Reticulum on Your System<a class="headerlink" href="#using-reticulum-on-your-system" title="Permalink to this heading">#</a></h1>
<p>Reticulum is not installed as a driver or kernel module, as one might expect <p>Reticulum is not installed as a driver or kernel module, as one might expect
of a networking stack. Instead, Reticulum is distributed as a Python module. of a networking stack. Instead, Reticulum is distributed as a Python module,
This means that no special privileges are required to install or use it. It containing the networking core, and a set of utility and daemon programs.</p>
<p>This means that no special privileges are required to install or use it. It
is also very light-weight, and easy to transfer to, and install on new systems.</p> is also very light-weight, and easy to transfer to, and install on new systems.</p>
<p>When you have Reticulum installed, any program or application that uses Reticulum <p>When you have Reticulum installed, any program or application that uses Reticulum
will automatically load and initialise Reticulum when it starts, if it is not will automatically load and initialise Reticulum when it starts, if it is not
@ -233,8 +234,8 @@ already running.</p>
<p>In many cases, this approach is sufficient. When any program needs to use <p>In many cases, this approach is sufficient. When any program needs to use
Reticulum, it is loaded, initialised, interfaces are brought up, and the Reticulum, it is loaded, initialised, interfaces are brought up, and the
program can now communicate over any Reticulum networks available. If another program can now communicate over any Reticulum networks available. If another
program starts up and also wants access to the same Reticulum network, the program starts up and also wants access to the same Reticulum network, the already
instance is simply shared. This works for any number of programs running running instance is simply shared. This works for any number of programs running
concurrently, and is very easy to use, but depending on your use case, there concurrently, and is very easy to use, but depending on your use case, there
are other options.</p> are other options.</p>
<section id="configuration-data"> <section id="configuration-data">
@ -605,6 +606,45 @@ optional arguments:
</pre></div> </pre></div>
</div> </div>
</section> </section>
<section id="the-rnodeconf-utility">
<h3>The rnodeconf Utility<a class="headerlink" href="#the-rnodeconf-utility" title="Permalink to this heading">#</a></h3>
<p>The <code class="docutils literal notranslate"><span class="pre">rnodeconf</span></code> utility allows you to inspect and configure existing <a class="reference internal" href="hardware.html#rnode-main"><span class="std std-ref">RNodes</span></a>, and
to create and provision new <a class="reference internal" href="hardware.html#rnode-main"><span class="std std-ref">RNodes</span></a> from any supported hardware devices.</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>usage: rnodeconf [-h] [-i] [-a] [-u] [-U] [--fw-version version] [--nocheck] [-C] [-N] [-T] [-b] [-B] [-p] [--freq Hz] [--bw Hz] [--txp dBm] [--sf factor] [--cr rate] [--eeprom-backup] [--eeprom-dump] [--eeprom-wipe] [--version] [port]
RNode Configuration and firmware utility. This program allows you to change various settings and startup modes of RNode. It can also install, flash and update the firmware on supported devices.
positional arguments:
port serial port where RNode is attached
options:
-h, --help show this help message and exit
-i, --info Show device info
-a, --autoinstall Automatic installation on various supported devices
-u, --update Update firmware to the latest version
-U, --force-update Update to specified firmware even if version matches or is older than installed version
--fw-version version Use a specific firmware version for update or autoinstall
--nocheck Don&#39;t check for firmware updates online
-C, --clear-cache Clear locally cached firmware files
-N, --normal Switch device to normal mode
-T, --tnc Switch device to TNC mode
-b, --bluetooth-on Turn device bluetooth on
-B, --bluetooth-off Turn device bluetooth off
-p, --bluetooth-pair Put device into bluetooth pairing mode
--freq Hz Frequency in Hz for TNC mode
--bw Hz Bandwidth in Hz for TNC mode
--txp dBm TX power in dBm for TNC mode
--sf factor Spreading factor for TNC mode (7 - 12)
--cr rate Coding rate for TNC mode (5 - 8)
--eeprom-backup Backup EEPROM to file
--eeprom-dump Dump EEPROM to console
--eeprom-wipe Unlock and wipe EEPROM
--version Print program version and exit
</pre></div>
</div>
<p>For more information on how to create your own RNodes, please read the <a class="reference internal" href="hardware.html#rnode-creating"><span class="std std-ref">Creating RNodes</span></a>
section of this manual.</p>
</section>
</section> </section>
<section id="improving-system-configuration"> <section id="improving-system-configuration">
<h2>Improving System Configuration<a class="headerlink" href="#improving-system-configuration" title="Permalink to this heading">#</a></h2> <h2>Improving System Configuration<a class="headerlink" href="#improving-system-configuration" title="Permalink to this heading">#</a></h2>
@ -751,6 +791,7 @@ WantedBy=multi-user.target
<li><a class="reference internal" href="#the-rnprobe-utility">The rnprobe Utility</a></li> <li><a class="reference internal" href="#the-rnprobe-utility">The rnprobe Utility</a></li>
<li><a class="reference internal" href="#the-rncp-utility">The rncp Utility</a></li> <li><a class="reference internal" href="#the-rncp-utility">The rncp Utility</a></li>
<li><a class="reference internal" href="#the-rnx-utility">The rnx Utility</a></li> <li><a class="reference internal" href="#the-rnx-utility">The rnx Utility</a></li>
<li><a class="reference internal" href="#the-rnodeconf-utility">The rnodeconf Utility</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#improving-system-configuration">Improving System Configuration</a><ul> <li><a class="reference internal" href="#improving-system-configuration">Improving System Configuration</a><ul>

View File

@ -7,16 +7,35 @@ you want to do. This guide will outline sensible starting paths for different
scenarios. scenarios.
Standalone Reticulum Installation
=============================================
If you simply want to install Reticulum and related utilities on a system,
the easiest way is via ``pip``:
.. code::
pip install rns
If you no not already have pip installed, you can install it using the package manager
of your system with a command like ``sudo apt install python3-pip``,
``sudo pamac install python-pip`` or similar. You can also dowload the Reticulum release
wheels from GitHub, or other release channels, and install them offline using ``pip``:
.. code::
pip install ./rns-0.4.6-py3-none-any.whl
Try Using a Reticulum-based Program Try Using a Reticulum-based Program
============================================= =============================================
If you simply want to try using a program built with Reticulum, a few different If you simply want to try using a program built with Reticulum, a few different
programs exist that allow basic communication and a range of other useful functions programs exist that allow basic communication and a range of other useful functions,
over even extremely low-bandwidth Reticulum networks. even over extremely low-bandwidth Reticulum networks.
These programs will let you get a feel for how Reticulum works. They have been designed These programs will let you get a feel for how Reticulum works. They have been designed
to run well over networks based on LoRa or packet radio, but can also be used completely to run well over networks based on LoRa or packet radio, but can also be used over fast
over local WiFi, wired Ethernet, the Internet, or any combination. links, such as local WiFi, wired Ethernet, the Internet, or any combination.
As such, it is easy to get started experimenting, without having to set up any radio As such, it is easy to get started experimenting, without having to set up any radio
transceivers or infrastructure just to try it out. Launching the programs on separate transceivers or infrastructure just to try it out. Launching the programs on separate
@ -44,7 +63,7 @@ You can install Nomad Network via pip:
.. code:: .. code::
# Install ... # Install ...
pip3 install nomadnet pip install nomadnet
# ... and run # ... and run
nomadnet nomadnet
@ -61,12 +80,14 @@ If you would rather use a program with a graphical user interface, you can take
a look at `Sideband <https://unsigned.io/sideband>`_, which is available for Android, a look at `Sideband <https://unsigned.io/sideband>`_, which is available for Android,
Linux and macOS. Linux and macOS.
.. image:: screenshots/sideband_1.png .. image:: screenshots/sideband_devices.webp
:align: center :align: center
:target: _images/sideband_1.png :target: _images/sideband_devices.webp
Sideband is currently in the early stages of development, but already provides basic Sideband allows you to communicate with other people or LXMF-compatible
communication features, and interoperates with Nomad Network, or any other LXMF client. systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, Encrypted QR
Paper Messages, or anything else Reticulum supports. It also interoperates with
the Nomad Network program.
Using the Included Utilities Using the Included Utilities
============================================= =============================================
@ -272,7 +293,7 @@ don't use pip, but try this recipe:
# Run the example in client mode to "ping" the server. # Run the example in client mode to "ping" the server.
# Replace the hash below with the actual destination hash of your server. # Replace the hash below with the actual destination hash of your server.
python3 Examples/Echo.py 3e12fc71692f8ec47bc5 python3 Examples/Echo.py 174a64852a75682259ad8b921b8bf416
# Have a look at another example # Have a look at another example
python3 Examples/Filetransfer.py -h python3 Examples/Filetransfer.py -h
@ -287,7 +308,7 @@ or ask one of the developers or maintainers for a good place to start.
Reticulum on ARM64 Reticulum on ARM64
============================================== ==============================================
On some architectures, including ARM64, not all dependencies have precompiled On some architectures, including ARM64, not all dependencies have precompiled
binaries. On such systems, you will need to install ``python3-dev`` before binaries. On such systems, you may need to install ``python3-dev`` before
installing Reticulum or programs that depend on Reticulum. installing Reticulum or programs that depend on Reticulum.
.. code:: .. code::
@ -300,6 +321,12 @@ installing Reticulum or programs that depend on Reticulum.
python3 -m pip install rns python3 -m pip install rns
Reticulum on Raspberry Pi
==============================================
It is currently recommended to use a 64-bit version of the Raspberry Pi OS
if you want to run Reticulum on Raspberry Pi computers, since 32-bit versions
don't always have packages available for some dependencies.
Reticulum on Android Reticulum on Android
============================================== ==============================================
Reticulum can be used on Android in different ways. The easiest way to get Reticulum can be used on Android in different ways. The easiest way to get
@ -313,12 +340,31 @@ Termux is a terminal emulator and Linux environment for Android based devices,
which includes the ability to use many different programs and libraries, which includes the ability to use many different programs and libraries,
including Reticulum. including Reticulum.
Since the Python cryptography.io module does not offer pre-built wheels for To use Reticulum within the Termux environment, you will need to install
Android, the standard one-line install of Reticulum does not work on Android, ``python`` and the ``python-cryptography`` library using ``pkg``, the package-manager
and a few extra commands are required. build into Termux. After that, you can use ``pip`` to install Reticulum.
From within Termux, execute the following: From within Termux, execute the following:
.. code::
# First, make sure indexes and packages are up to date.
pkg update
pkg upgrade
# Then install python and the cryptography library.
pkg install python python-cryptography
# Make sure pip is up to date, and install the wheel module.
pip install wheel pip --upgrade
# Install Reticulum
pip install rns
If for some reason the ``python-cryptography`` package is not available for
your platform via the Termux package manager, you can attempt to build it
locally on your device using the following command:
.. code:: .. code::
# First, make sure indexes and packages are up to date. # First, make sure indexes and packages are up to date.
@ -329,7 +375,7 @@ From within Termux, execute the following:
pkg install python build-essential openssl libffi rust pkg install python build-essential openssl libffi rust
# Make sure pip is up to date, and install the wheel module. # Make sure pip is up to date, and install the wheel module.
pip3 install wheel pip --upgrade pip install wheel pip --upgrade
# To allow the installer to build the cryptography module, # To allow the installer to build the cryptography module,
# we need to let it know what platform we are compiling for: # we need to let it know what platform we are compiling for:
@ -338,11 +384,11 @@ From within Termux, execute the following:
# Start the install process for the cryptography module. # Start the install process for the cryptography module.
# Depending on your device, this can take several minutes, # Depending on your device, this can take several minutes,
# since the module must be compiled locally on your device. # since the module must be compiled locally on your device.
pip3 install cryptography pip install cryptography
# If the above installation succeeds, you can now install # If the above installation succeeds, you can now install
# Reticulum and any related software # Reticulum and any related software
pip3 install rns pip install rns
It is also possible to include Reticulum in apps compiled and distributed as It is also possible to include Reticulum in apps compiled and distributed as
Android APKs. A detailed tutorial and example source code will be included Android APKs. A detailed tutorial and example source code will be included

View File

@ -166,7 +166,7 @@ then install Reticulum with with ``pip``:
.. code:: .. code::
pip3 install rns pip install rns
Once installation has completed, it is time to start installing the firmware on your Once installation has completed, it is time to start installing the firmware on your
devices. Run ``rnodeconf`` in auto-install mode like so: devices. Run ``rnodeconf`` in auto-install mode like so:

View File

@ -5,7 +5,9 @@ Using Reticulum on Your System
****************************** ******************************
Reticulum is not installed as a driver or kernel module, as one might expect Reticulum is not installed as a driver or kernel module, as one might expect
of a networking stack. Instead, Reticulum is distributed as a Python module. of a networking stack. Instead, Reticulum is distributed as a Python module,
containing the networking core, and a set of utility and daemon programs.
This means that no special privileges are required to install or use it. It This means that no special privileges are required to install or use it. It
is also very light-weight, and easy to transfer to, and install on new systems. is also very light-weight, and easy to transfer to, and install on new systems.
@ -16,8 +18,8 @@ already running.
In many cases, this approach is sufficient. When any program needs to use In many cases, this approach is sufficient. When any program needs to use
Reticulum, it is loaded, initialised, interfaces are brought up, and the Reticulum, it is loaded, initialised, interfaces are brought up, and the
program can now communicate over any Reticulum networks available. If another program can now communicate over any Reticulum networks available. If another
program starts up and also wants access to the same Reticulum network, the program starts up and also wants access to the same Reticulum network, the already
instance is simply shared. This works for any number of programs running running instance is simply shared. This works for any number of programs running
concurrently, and is very easy to use, but depending on your use case, there concurrently, and is very easy to use, but depending on your use case, there
are other options. are other options.
@ -425,6 +427,48 @@ You can specify as many allowed senders as needed, or completely disable authent
--version show program's version number and exit --version show program's version number and exit
The rnodeconf Utility
=====================
The ``rnodeconf`` utility allows you to inspect and configure existing :ref:`RNodes<rnode-main>`, and
to create and provision new :ref:`RNodes<rnode-main>` from any supported hardware devices.
.. code:: text
usage: rnodeconf [-h] [-i] [-a] [-u] [-U] [--fw-version version] [--nocheck] [-C] [-N] [-T] [-b] [-B] [-p] [--freq Hz] [--bw Hz] [--txp dBm] [--sf factor] [--cr rate] [--eeprom-backup] [--eeprom-dump] [--eeprom-wipe] [--version] [port]
RNode Configuration and firmware utility. This program allows you to change various settings and startup modes of RNode. It can also install, flash and update the firmware on supported devices.
positional arguments:
port serial port where RNode is attached
options:
-h, --help show this help message and exit
-i, --info Show device info
-a, --autoinstall Automatic installation on various supported devices
-u, --update Update firmware to the latest version
-U, --force-update Update to specified firmware even if version matches or is older than installed version
--fw-version version Use a specific firmware version for update or autoinstall
--nocheck Don't check for firmware updates online
-C, --clear-cache Clear locally cached firmware files
-N, --normal Switch device to normal mode
-T, --tnc Switch device to TNC mode
-b, --bluetooth-on Turn device bluetooth on
-B, --bluetooth-off Turn device bluetooth off
-p, --bluetooth-pair Put device into bluetooth pairing mode
--freq Hz Frequency in Hz for TNC mode
--bw Hz Bandwidth in Hz for TNC mode
--txp dBm TX power in dBm for TNC mode
--sf factor Spreading factor for TNC mode (7 - 12)
--cr rate Coding rate for TNC mode (5 - 8)
--eeprom-backup Backup EEPROM to file
--eeprom-dump Dump EEPROM to console
--eeprom-wipe Unlock and wipe EEPROM
--version Print program version and exit
For more information on how to create your own RNodes, please read the :ref:`Creating RNodes<rnode-creating>`
section of this manual.
Improving System Configuration Improving System Configuration
------------------------------ ------------------------------