Updated documentation

This commit is contained in:
Mark Qvist 2024-11-29 15:10:35 +01:00
parent 0354b5969d
commit 463dfa6fb4
22 changed files with 493 additions and 147 deletions

Binary file not shown.

Binary file not shown.

View File

@ -27,14 +27,14 @@ and install them offline using ``pip``:
pip install ./rns-0.5.1-py3-none-any.whl pip install ./rns-0.5.1-py3-none-any.whl
For more detailed instructions tailored to specific platforms, please see the For more detailed installation instructions, please see the
:ref:`Platform-Specific Install Notes<install-guides>` section. :ref:`Platform-Specific Install Notes<install-guides>` section.
After installation is complete, it might be helpful to refer to the After installation is complete, it might be helpful to refer to the
:ref:`Using Reticulum on Your System<using-main>` chapter. :ref:`Using Reticulum on Your System<using-main>` chapter.
Resolving Dependency & Installation Issues Resolving Dependency & Installation Issues
============================================= ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
On some platforms, there may not be binary packages available for all dependencies, and On some platforms, there may not be binary packages available for all dependencies, and
``pip`` installation may fail with an error message. In these cases, the issue can usually ``pip`` installation may fail with an error message. In these cases, the issue can usually
be resolved by installing the development essentials packages for your platform: be resolved by installing the development essentials packages for your platform:
@ -105,10 +105,12 @@ You can install Nomad Network via pip:
# ... and run # ... and run
nomadnet nomadnet
**Please Note**: If this is the very first time you use pip to install a program .. note::
on your system, you might need to reboot your system for your program to become If this is the very first time you use ``pip`` to install a program
available. If you get a "command not found" error or similar when running the on your system, you might need to reboot your system for your program to become
program, reboot your system and try again. available. If you get a "command not found" error or similar when running the
program, reboot your system and try again. In some cases, you may even need to
manually add the ``pip`` install path to your ``PATH`` environment variable.
Sideband Sideband
^^^^^^^^ ^^^^^^^^
@ -337,14 +339,8 @@ The above command will install Reticulum and dependencies, and you will be
ready to import and use RNS in your own programs. The next step will most ready to import and use RNS in your own programs. The next step will most
likely be to look at some :ref:`Example Programs<examples-main>`. likely be to look at some :ref:`Example Programs<examples-main>`.
For extended functionality, you can install optional dependencies: The entire Reticulum API is documented in the :ref:`API Reference<api-main>`
chapter of this manual.
.. code::
pip install pyserial
Further information can be found in the :ref:`API Reference<api-main>`.
Participate in Reticulum Development Participate in Reticulum Development
@ -471,7 +467,7 @@ here at a later point. Until then you can use the `Sideband source code <https:/
ARM64 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 may need to install ``python3-dev`` before binaries. On such systems, you may need to install ``python3-dev`` (or similar) before
installing Reticulum or programs that depend on Reticulum. installing Reticulum or programs that depend on Reticulum.
.. code:: .. code::
@ -522,10 +518,53 @@ option, you can use the following command:
pip install rns --break-system-packages pip install rns --break-system-packages
Please note that the "break-system-packages" directive is a somewhat misleading choice .. note::
of words. Setting it will of course not break any system packages, but will simply The ``--break-system-packages`` directive is a somewhat misleading choice
allow installing ``pip`` packages user- and system-wide. While this *could* in rare of words. Setting it will of course not break any system packages, but will simply
cases lead to version conflicts, it does not generally pose any problems. allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
MacOS
^^^^^^^^^^^^^^^^^^^^^^^^^
To install Reticulum on macOS, you will need to have Python and the ``pip`` package
manager installed.
Systems running macOS can vary quite widely in whether or not Python is pre-installed,
and if it is, which version is installed, and whether the ``pip`` package manager is
also installed and set up. If in doubt, you can `download and install <https://www.python.org/downloads/>`_
Python manually.
When Python and ``pip`` is available on your system, simply open a terminal window
and use one of the following commands:
.. code::
# Install Reticulum and utilities with pip:
pip3 install rns
# On some versions, you may need to use the
# flag --break-system-packages to install:
pip3 install rns --break-system-packages
.. note::
The ``--break-system-packages`` directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply
allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
Additionally, some version combinations of macOS and Python require you to
manually add your installed ``pip`` packages directory to your `PATH` environment
variable, before you can use installed commands in your terminal. Usually, adding
the following line to your shell init script (for example ``~/.zshrc``) will be enough:
.. code::
export PATH=$PATH:
Adjust Python version and shell init script location according to your system.
OpenWRT OpenWRT
@ -541,6 +580,23 @@ Reticulum and related utilities using the `opkg` package manager and `pip`.
# Install Reticulum # Install Reticulum
pip install rns pip install rns
# Start rnsd with debug logging enabled
rnsd -vvv
.. note::
The above instructions have been verified and tested on OpenWRT 21.02 only.
It is likely that other versions may require slightly altered installation
commands or package names. You will also need enough free space in your
overlay FS, and enough free RAM to actually run Reticulum and any related
programs and utilities.
Depending on your device configuration, you may need to adjust firewall rules
for Reticulum connectivity to and from your device to work. Please also note
that the `AutoInterface` requires link-local IPv6 addresses to be enabled for
any Ethernet and WiFi devices you intend to use. If ``ip a`` shows an address
starting with ``fe80::`` for the device in question, ``AutoInterface`` should
work for that device.
Raspberry Pi Raspberry Pi
^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
@ -558,14 +614,35 @@ install Reticulum using `pip`.
# Install Reticulum # Install Reticulum
pip install rns --break-system-packages pip install rns --break-system-packages
.. note::
The ``--break-system-packages`` directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply
allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
While it is possible to install and run Reticulum on 32-bit Rasperry Pi OSes, While it is possible to install and run Reticulum on 32-bit Rasperry Pi OSes,
it will require manually configuring and installing required build dependencies, it will require manually configuring and installing required build dependencies,
and is not detailed in this manual. and is not detailed in this manual.
Please note that the "break-system-packages" directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply RISC-V
allow installing ``pip`` packages user- and system-wide. While this *could* in rare ^^^^^^^^^^^^^^^^^^^^^^^^
cases lead to version conflicts, it does not generally pose any problems. On some architectures, including RISC-V, not all dependencies have precompiled
binaries. On such systems, you may need to install ``python3-dev`` (or similar) before
installing Reticulum or programs that depend on Reticulum.
.. code::
# Install Python and development packages
sudo apt update
sudo apt install python3 python3-pip python3-dev
# Install Reticulum
python3 -m pip install rns
With these packages installed, ``pip`` will be able to build any missing dependencies
on your system locally.
Ubuntu Lunar Ubuntu Lunar
@ -603,10 +680,12 @@ option, you can use the following command:
pip install rns --break-system-packages pip install rns --break-system-packages
Please note that the "break-system-packages" directive is a somewhat misleading choice .. note::
of words. Setting it will of course not break any system packages, but will simply The ``--break-system-packages`` directive is a somewhat misleading choice
allow installing ``pip`` packages user- and system-wide. While this _could_ in rare of words. Setting it will of course not break any system packages, but will simply
cases lead to version conflicts, it does not generally pose any problems. allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
Windows Windows
^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
@ -615,7 +694,7 @@ On Windows operating systems, the easiest way to install Reticulum is by using t
Powershell). Powershell).
If you don't already have Python installed, `download and install Python <https://www.python.org/downloads/>`_. If you don't already have Python installed, `download and install Python <https://www.python.org/downloads/>`_.
At the time of writing this manual, the recommended version is `Python 3.12.7 <https://www.python.org/downloads/release/python-3127>`_. At the time of publication of this manual, the recommended version is `Python 3.12.7 <https://www.python.org/downloads/release/python-3127>`_.
**Important!** When asked by the installer, make sure to add the Python program to **Important!** When asked by the installer, make sure to add the Python program to
your PATH environment variables. If you don't do this, you will not be able to your PATH environment variables. If you don't do this, you will not be able to
@ -648,7 +727,8 @@ on a system that cannot support ``pyserial``, it is perfectly possible to do so
the `rnspure` package, but Reticulum will not be able to use serial-based interfaces. the `rnspure` package, but Reticulum will not be able to use serial-based interfaces.
All other available modules will still be loaded when needed. All other available modules will still be loaded when needed.
**Please Note!** If you use the `rnspure` package to run Reticulum on systems that .. warning::
do not support `PyCA/cryptography <https://github.com/pyca/cryptography>`_, it is If you use the ``rnspure`` package to run Reticulum on systems that
important that you read and understand the :ref:`Cryptographic Primitives <understanding-primitives>` do not support `PyCA/cryptography <https://github.com/pyca/cryptography>`_, it is
section of this manual. important that you read and understand the :ref:`Cryptographic Primitives <understanding-primitives>`
section of this manual.

View File

@ -75,8 +75,8 @@ completely from scratch, to your exact desired specifications, this chapter
will explain the easiest possible approach to creating RNodes: Using common will explain the easiest possible approach to creating RNodes: Using common
LoRa development boards. This approach can be boiled down to two simple steps: LoRa development boards. This approach can be boiled down to two simple steps:
1. Obtain one or more supported development boards 1. Obtain one or more :ref:`supported development boards<rnode-supported>`
2. Install the RNode firmware with the automated installer 2. Install the RNode firmware with the :ref:`automated installer<rnode-installation>`
Once the firmware has been installed and provisioned by the install script, it Once the firmware has been installed and provisioned by the install script, it
is ready to use with any software that supports RNodes, including Reticulum. is ready to use with any software that supports RNodes, including Reticulum.
@ -85,8 +85,8 @@ to the configuration.
.. _rnode-supported: .. _rnode-supported:
Supported Boards Supported Boards and Devices
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To create one or more RNodes, you will need to obtain supported development To create one or more RNodes, you will need to obtain supported development
boards. The following boards are supported by the auto-installer. boards. The following boards are supported by the auto-installer.

View File

@ -162,11 +162,12 @@ It can take anywhere from a few seconds to a few minutes to establish
I2P connections to the desired peers, so Reticulum handles the process I2P connections to the desired peers, so Reticulum handles the process
in the background, and will output relevant events to the log. in the background, and will output relevant events to the log.
**Please Note!** While the I2P interface is the simplest way to use .. note::
Reticulum over I2P, it is also possible to tunnel the TCP server and While the I2P interface is the simplest way to use
client interfaces over I2P manually. This can be useful in situations Reticulum over I2P, it is also possible to tunnel the TCP server and
where more control is needed, but requires manual tunnel setup through client interfaces over I2P manually. This can be useful in situations
the I2P daemon configuration. where more control is needed, but requires manual tunnel setup through
the I2P daemon configuration.
It is important to note that the two methods are *interchangably compatible*. It is important to note that the two methods are *interchangably compatible*.
You can use the I2PInterface to connect to a TCPServerInterface that You can use the I2PInterface to connect to a TCPServerInterface that
@ -238,8 +239,9 @@ can simply specify the Yggdrasil ``tun`` device and a listening port, like so:
device = tun0 device = tun0
listen_port = 4343 listen_port = 4343
**Please Note!** The TCP interfaces support tunneling over I2P, but to do so reliably, .. note::
you must use the i2p_tunneled option: The TCP interfaces support tunneling over I2P, but to do so reliably,
you must use the i2p_tunneled option:
.. code:: .. code::
@ -311,8 +313,9 @@ never enable ``kiss_framing``, since this will disable internal reliability and
recovery mechanisms that greatly improves performance over unreliable and recovery mechanisms that greatly improves performance over unreliable and
intermittent TCP links. intermittent TCP links.
**Please Note!** The TCP interfaces support tunneling over I2P, but to do so reliably, .. note::
you must use the i2p_tunneled option: The TCP interfaces support tunneling over I2P, but to do so reliably,
you must use the i2p_tunneled option:
.. code:: .. code::
@ -334,11 +337,12 @@ private and the internet. It can also allow broadcast communication
over IP networks, so it can provide an easy way to enable connectivity over IP networks, so it can provide an easy way to enable connectivity
with all other peers on a local area network. with all other peers on a local area network.
*Please Note!* Using broadcast UDP traffic has performance implications, .. warning::
especially on WiFi. If your goal is simply to enable easy communication Using broadcast UDP traffic has performance implications,
with all peers in your local Ethernet broadcast domain, the especially on WiFi. If your goal is simply to enable easy communication
:ref:`Auto Interface<interfaces-auto>` performs better, and is even with all peers in your local Ethernet broadcast domain, the
easier to use. :ref:`Auto Interface<interfaces-auto>` performs better, and is even
easier to use.
.. code:: .. code::
@ -393,6 +397,11 @@ RNode LoRa Interface
To use Reticulum over LoRa, the `RNode <https://unsigned.io/rnode/>`_ interface To use Reticulum over LoRa, the `RNode <https://unsigned.io/rnode/>`_ interface
can be used, and offers full control over LoRa parameters. can be used, and offers full control over LoRa parameters.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
# Here's an example of how to add a LoRa interface # Here's an example of how to add a LoRa interface
@ -480,6 +489,11 @@ RNode Multi Interface
For RNodes that support multiple LoRa transceivers, the RNode For RNodes that support multiple LoRa transceivers, the RNode
Multi interface can be used to configure sub-interfaces individually. Multi interface can be used to configure sub-interfaces individually.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
# Here's an example of how to add an RNode Multi interface # Here's an example of how to add an RNode Multi interface
@ -647,6 +661,11 @@ radio modems and TNCs, including `OpenModem <https://unsigned.io/openmodem/>`_.
KISS interfaces can also be configured to periodically send out beacons KISS interfaces can also be configured to periodically send out beacons
for station identification purposes. for station identification purposes.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
[[Packet Radio KISS Interface]] [[Packet Radio KISS Interface]]
@ -710,6 +729,11 @@ encapsulate in AX.25.
A more efficient way is to use the plain KISS interface with the A more efficient way is to use the plain KISS interface with the
beaconing functionality described above. beaconing functionality described above.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
[[Packet Radio AX.25 KISS Interface]] [[Packet Radio AX.25 KISS Interface]]

View File

@ -32,7 +32,9 @@ Provide Feedback
================ ================
All feedback on the usage, functioning and potential dysfunctioning of any and All feedback on the usage, functioning and potential dysfunctioning of any and
all components of the system is very valuable to the continued development and all components of the system is very valuable to the continued development and
improvement of Reticulum. Absolutely no automated analytics, telemetry, error improvement of Reticulum.
Absolutely no automated analytics, telemetry, error
reporting or statistics is collected and reported by Reticulum under any reporting or statistics is collected and reported by Reticulum under any
circumstances, so we rely on old-fashioned human feedback. circumstances, so we rely on old-fashioned human feedback.

View File

@ -904,6 +904,7 @@ with the OpenSSL backend being *much* faster. The most important consequence how
potential loss of security by using primitives that has not seen the same amount of scrutiny, potential loss of security by using primitives that has not seen the same amount of scrutiny,
testing and review as those from OpenSSL. testing and review as those from OpenSSL.
If you want to use the internal pure-python primitives, it is **highly advisable** that you .. warning::
have a good understanding of the risks that this pose, and make an informed decision on whether If you want to use the internal pure-python primitives, it is **highly advisable** that you
those risks are acceptable to you. have a good understanding of the risks that this pose, and make an informed decision on whether
those risks are acceptable to you.

View File

@ -189,4 +189,4 @@ such. While it has been built with cryptography best-practices very foremost in
mind, it has not yet been externally security audited, and there could very well be mind, it has not yet been externally security audited, and there could very well be
privacy-breaking bugs. To be considered secure, Reticulum needs a thorough privacy-breaking bugs. To be considered secure, Reticulum needs a thorough
security review by independent cryptographers and security researchers. If you security review by independent cryptographers and security researchers. If you
want to help out with this, or can help sponsor an audit, please do get in touch. want to help out with this, or can help sponsor an audit, please do get in touch.

View File

@ -241,13 +241,12 @@ and install them offline using <code class="docutils literal notranslate"><span
<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.5.1</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> <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.5.1</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> </pre></div>
</div> </div>
<p>For more detailed instructions tailored to specific platforms, please see the <p>For more detailed installation instructions, please see the
<a class="reference internal" href="#install-guides"><span class="std std-ref">Platform-Specific Install Notes</span></a> section.</p> <a class="reference internal" href="#install-guides"><span class="std std-ref">Platform-Specific Install Notes</span></a> section.</p>
<p>After installation is complete, it might be helpful to refer to the <p>After installation is complete, it might be helpful to refer to the
<a class="reference internal" href="using.html#using-main"><span class="std std-ref">Using Reticulum on Your System</span></a> chapter.</p> <a class="reference internal" href="using.html#using-main"><span class="std std-ref">Using Reticulum on Your System</span></a> chapter.</p>
</section>
<section id="resolving-dependency-installation-issues"> <section id="resolving-dependency-installation-issues">
<h2>Resolving Dependency &amp; Installation Issues<a class="headerlink" href="#resolving-dependency-installation-issues" title="Permalink to this heading">#</a></h2> <h3>Resolving Dependency &amp; Installation Issues<a class="headerlink" href="#resolving-dependency-installation-issues" title="Permalink to this heading">#</a></h3>
<p>On some platforms, there may not be binary packages available for all dependencies, and <p>On some platforms, there may not be binary packages available for all dependencies, and
<code class="docutils literal notranslate"><span class="pre">pip</span></code> installation may fail with an error message. In these cases, the issue can usually <code class="docutils literal notranslate"><span class="pre">pip</span></code> installation may fail with an error message. In these cases, the issue can usually
be resolved by installing the development essentials packages for your platform:</p> be resolved by installing the development essentials packages for your platform:</p>
@ -265,6 +264,7 @@ be resolved by installing the development essentials packages for your platform:
dependencies from source, and complete installation even on platforms that dont have pre- dependencies from source, and complete installation even on platforms that dont have pre-
compiled packages available.</p> compiled packages available.</p>
</section> </section>
</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
@ -304,10 +304,14 @@ for the messaging and information-sharing protocol
<span class="n">nomadnet</span> <span class="n">nomadnet</span>
</pre></div> </pre></div>
</div> </div>
<p><strong>Please Note</strong>: If this is the very first time you use pip to install a program <div class="admonition note">
<p class="admonition-title">Note</p>
<p>If this is the very first time you use <code class="docutils literal notranslate"><span class="pre">pip</span></code> to install a program
on your system, you might need to reboot your system for your program to become on your system, you might need to reboot your system for your program to become
available. If you get a “command not found” error or similar when running the available. If you get a “command not found” error or similar when running the
program, reboot your system and try again.</p> program, reboot your system and try again. In some cases, you may even need to
manually add the <code class="docutils literal notranslate"><span class="pre">pip</span></code> install path to your <code class="docutils literal notranslate"><span class="pre">PATH</span></code> environment variable.</p>
</div>
</section> </section>
<section id="sideband"> <section id="sideband">
<h3>Sideband<a class="headerlink" href="#sideband" title="Permalink to this heading">#</a></h3> <h3>Sideband<a class="headerlink" href="#sideband" title="Permalink to this heading">#</a></h3>
@ -480,11 +484,8 @@ started is to install the latest release of Reticulum via pip:</p>
<p>The above command will install Reticulum and dependencies, and you will be <p>The above command will install Reticulum and dependencies, and you will be
ready to import and use RNS in your own programs. The next step will most ready to import and use RNS in your own programs. The next step will most
likely be to look at some <a class="reference internal" href="examples.html#examples-main"><span class="std std-ref">Example Programs</span></a>.</p> likely be to look at some <a class="reference internal" href="examples.html#examples-main"><span class="std std-ref">Example Programs</span></a>.</p>
<p>For extended functionality, you can install optional dependencies:</p> <p>The entire Reticulum API is documented in the <a class="reference internal" href="reference.html#api-main"><span class="std std-ref">API Reference</span></a>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="n">pyserial</span> chapter of this manual.</p>
</pre></div>
</div>
<p>Further information can be found in the <a class="reference internal" href="reference.html#api-main"><span class="std std-ref">API Reference</span></a>.</p>
</section> </section>
<section id="participate-in-reticulum-development"> <section id="participate-in-reticulum-development">
<h2>Participate in Reticulum Development<a class="headerlink" href="#participate-in-reticulum-development" title="Permalink to this heading">#</a></h2> <h2>Participate in Reticulum Development<a class="headerlink" href="#participate-in-reticulum-development" title="Permalink to this heading">#</a></h2>
@ -595,7 +596,7 @@ here at a later point. Until then you can use the <a class="reference external"
<section id="arm64"> <section id="arm64">
<h3>ARM64<a class="headerlink" href="#arm64" title="Permalink to this heading">#</a></h3> <h3>ARM64<a class="headerlink" href="#arm64" title="Permalink to this heading">#</a></h3>
<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 may 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> (or similar) 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>
@ -637,10 +638,49 @@ option, you can use the following command:</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pip install rns --break-system-packages <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pip install rns --break-system-packages
</pre></div> </pre></div>
</div> </div>
<p>Please note that the “break-system-packages” directive is a somewhat misleading choice <div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">--break-system-packages</span></code> directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply of words. Setting it will of course not break any system packages, but will simply
allow installing <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages user- and system-wide. While this <em>could</em> in rare allow installing <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages user- and system-wide. While this <em>could</em> in rare
cases lead to version conflicts, it does not generally pose any problems.</p> cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.</p>
</div>
</section>
<section id="macos">
<h3>MacOS<a class="headerlink" href="#macos" title="Permalink to this heading">#</a></h3>
<p>To install Reticulum on macOS, you will need to have Python and the <code class="docutils literal notranslate"><span class="pre">pip</span></code> package
manager installed.</p>
<p>Systems running macOS can vary quite widely in whether or not Python is pre-installed,
and if it is, which version is installed, and whether the <code class="docutils literal notranslate"><span class="pre">pip</span></code> package manager is
also installed and set up. If in doubt, you can <a class="reference external" href="https://www.python.org/downloads/">download and install</a>
Python manually.</p>
<p>When Python and <code class="docutils literal notranslate"><span class="pre">pip</span></code> is available on your system, simply open a terminal window
and use one of the following commands:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Install Reticulum and utilities with pip:</span>
<span class="n">pip3</span> <span class="n">install</span> <span class="n">rns</span>
<span class="c1"># On some versions, you may need to use the</span>
<span class="c1"># flag --break-system-packages to install:</span>
<span class="n">pip3</span> <span class="n">install</span> <span class="n">rns</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">--break-system-packages</span></code> directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply
allow installing <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages user- and system-wide. While this <em>could</em> in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.</p>
</div>
<p>Additionally, some version combinations of macOS and Python require you to
manually add your installed <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages directory to your <cite>PATH</cite> environment
variable, before you can use installed commands in your terminal. Usually, adding
the following line to your shell init script (for example <code class="docutils literal notranslate"><span class="pre">~/.zshrc</span></code>) will be enough:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>export PATH=$PATH:
</pre></div>
</div>
<p>Adjust Python version and shell init script location according to your system.</p>
</section> </section>
<section id="openwrt"> <section id="openwrt">
<h3>OpenWRT<a class="headerlink" href="#openwrt" title="Permalink to this heading">#</a></h3> <h3>OpenWRT<a class="headerlink" href="#openwrt" title="Permalink to this heading">#</a></h3>
@ -651,8 +691,25 @@ Reticulum and related utilities using the <cite>opkg</cite> package manager and
<span class="c1"># Install Reticulum</span> <span class="c1"># Install Reticulum</span>
<span class="n">pip</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>
<span class="c1"># Start rnsd with debug logging enabled</span>
<span class="n">rnsd</span> <span class="o">-</span><span class="n">vvv</span>
</pre></div> </pre></div>
</div> </div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The above instructions have been verified and tested on OpenWRT 21.02 only.
It is likely that other versions may require slightly altered installation
commands or package names. You will also need enough free space in your
overlay FS, and enough free RAM to actually run Reticulum and any related
programs and utilities.</p>
</div>
<p>Depending on your device configuration, you may need to adjust firewall rules
for Reticulum connectivity to and from your device to work. Please also note
that the <cite>AutoInterface</cite> requires link-local IPv6 addresses to be enabled for
any Ethernet and WiFi devices you intend to use. If <code class="docutils literal notranslate"><span class="pre">ip</span> <span class="pre">a</span></code> shows an address
starting with <code class="docutils literal notranslate"><span class="pre">fe80::</span></code> for the device in question, <code class="docutils literal notranslate"><span class="pre">AutoInterface</span></code> should
work for that device.</p>
</section> </section>
<section id="raspberry-pi"> <section id="raspberry-pi">
<h3>Raspberry Pi<a class="headerlink" href="#raspberry-pi" title="Permalink to this heading">#</a></h3> <h3>Raspberry Pi<a class="headerlink" href="#raspberry-pi" title="Permalink to this heading">#</a></h3>
@ -668,13 +725,33 @@ install Reticulum using <cite>pip</cite>.</p>
<span class="n">pip</span> <span class="n">install</span> <span class="n">rns</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">rns</span> <span class="o">--</span><span class="k">break</span><span class="o">-</span><span class="n">system</span><span class="o">-</span><span class="n">packages</span>
</pre></div> </pre></div>
</div> </div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">--break-system-packages</span></code> directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply
allow installing <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages user- and system-wide. While this <em>could</em> in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.</p>
</div>
<p>While it is possible to install and run Reticulum on 32-bit Rasperry Pi OSes, <p>While it is possible to install and run Reticulum on 32-bit Rasperry Pi OSes,
it will require manually configuring and installing required build dependencies, it will require manually configuring and installing required build dependencies,
and is not detailed in this manual.</p> and is not detailed in this manual.</p>
<p>Please note that the “break-system-packages” directive is a somewhat misleading choice </section>
of words. Setting it will of course not break any system packages, but will simply <section id="risc-v">
allow installing <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages user- and system-wide. While this <em>could</em> in rare <h3>RISC-V<a class="headerlink" href="#risc-v" title="Permalink to this heading">#</a></h3>
cases lead to version conflicts, it does not generally pose any problems.</p> <p>On some architectures, including RISC-V, not all dependencies have precompiled
binaries. On such systems, you may need to install <code class="docutils literal notranslate"><span class="pre">python3-dev</span></code> (or similar) before
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>
<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">install</span> <span class="n">python3</span> <span class="n">python3</span><span class="o">-</span><span class="n">pip</span> <span class="n">python3</span><span class="o">-</span><span class="n">dev</span>
<span class="c1"># Install Reticulum</span>
<span class="n">python3</span> <span class="o">-</span><span class="n">m</span> <span class="n">pip</span> <span class="n">install</span> <span class="n">rns</span>
</pre></div>
</div>
<p>With these packages installed, <code class="docutils literal notranslate"><span class="pre">pip</span></code> will be able to build any missing dependencies
on your system locally.</p>
</section> </section>
<section id="ubuntu-lunar"> <section id="ubuntu-lunar">
<h3>Ubuntu Lunar<a class="headerlink" href="#ubuntu-lunar" title="Permalink to this heading">#</a></h3> <h3>Ubuntu Lunar<a class="headerlink" href="#ubuntu-lunar" title="Permalink to this heading">#</a></h3>
@ -705,10 +782,14 @@ option, you can use the following command:</p>
<div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pip install rns --break-system-packages <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>pip install rns --break-system-packages
</pre></div> </pre></div>
</div> </div>
<p>Please note that the “break-system-packages” directive is a somewhat misleading choice <div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <code class="docutils literal notranslate"><span class="pre">--break-system-packages</span></code> directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply of words. Setting it will of course not break any system packages, but will simply
allow installing <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages user- and system-wide. While this _could_ in rare allow installing <code class="docutils literal notranslate"><span class="pre">pip</span></code> packages user- and system-wide. While this <em>could</em> in rare
cases lead to version conflicts, it does not generally pose any problems.</p> cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.</p>
</div>
</section> </section>
<section id="windows"> <section id="windows">
<h3>Windows<a class="headerlink" href="#windows" title="Permalink to this heading">#</a></h3> <h3>Windows<a class="headerlink" href="#windows" title="Permalink to this heading">#</a></h3>
@ -716,7 +797,7 @@ cases lead to version conflicts, it does not generally pose any problems.</p>
<code class="docutils literal notranslate"><span class="pre">pip</span></code> package manager from the command line (either the command prompt or Windows <code class="docutils literal notranslate"><span class="pre">pip</span></code> package manager from the command line (either the command prompt or Windows
Powershell).</p> Powershell).</p>
<p>If you dont already have Python installed, <a class="reference external" href="https://www.python.org/downloads/">download and install Python</a>. <p>If you dont already have Python installed, <a class="reference external" href="https://www.python.org/downloads/">download and install Python</a>.
At the time of writing this manual, the recommended version is <a class="reference external" href="https://www.python.org/downloads/release/python-3127">Python 3.12.7</a>.</p> At the time of publication of this manual, the recommended version is <a class="reference external" href="https://www.python.org/downloads/release/python-3127">Python 3.12.7</a>.</p>
<p><strong>Important!</strong> When asked by the installer, make sure to add the Python program to <p><strong>Important!</strong> When asked by the installer, make sure to add the Python program to
your PATH environment variables. If you dont do this, you will not be able to your PATH environment variables. If you dont do this, you will not be able to
use the <code class="docutils literal notranslate"><span class="pre">pip</span></code> installer, or run the included Reticulum utility programs (such as use the <code class="docutils literal notranslate"><span class="pre">pip</span></code> installer, or run the included Reticulum utility programs (such as
@ -744,10 +825,13 @@ only if they are <em>needed</em> and <em>available</em>. If for example you want
on a system that cannot support <code class="docutils literal notranslate"><span class="pre">pyserial</span></code>, it is perfectly possible to do so using on a system that cannot support <code class="docutils literal notranslate"><span class="pre">pyserial</span></code>, it is perfectly possible to do so using
the <cite>rnspure</cite> package, but Reticulum will not be able to use serial-based interfaces. the <cite>rnspure</cite> package, but Reticulum will not be able to use serial-based interfaces.
All other available modules will still be loaded when needed.</p> All other available modules will still be loaded when needed.</p>
<p><strong>Please Note!</strong> If you use the <cite>rnspure</cite> package to run Reticulum on systems that <div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>If you use the <code class="docutils literal notranslate"><span class="pre">rnspure</span></code> package to run Reticulum on systems that
do not support <a class="reference external" href="https://github.com/pyca/cryptography">PyCA/cryptography</a>, it is do not support <a class="reference external" href="https://github.com/pyca/cryptography">PyCA/cryptography</a>, it is
important that you read and understand the <a class="reference internal" href="understanding.html#understanding-primitives"><span class="std std-ref">Cryptographic Primitives</span></a> important that you read and understand the <a class="reference internal" href="understanding.html#understanding-primitives"><span class="std std-ref">Cryptographic Primitives</span></a>
section of this manual.</p> section of this manual.</p>
</div>
</section> </section>
</section> </section>
@ -808,8 +892,10 @@ 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="#standalone-reticulum-installation">Standalone Reticulum Installation</a><ul>
<li><a class="reference internal" href="#resolving-dependency-installation-issues">Resolving Dependency &amp; Installation Issues</a></li> <li><a class="reference internal" href="#resolving-dependency-installation-issues">Resolving Dependency &amp; Installation Issues</a></li>
</ul>
</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="#remote-shell">Remote Shell</a></li> <li><a class="reference internal" href="#remote-shell">Remote Shell</a></li>
<li><a class="reference internal" href="#nomad-network">Nomad Network</a></li> <li><a class="reference internal" href="#nomad-network">Nomad Network</a></li>
@ -829,8 +915,10 @@ section of this manual.</p>
<li><a class="reference internal" href="#android">Android</a></li> <li><a class="reference internal" href="#android">Android</a></li>
<li><a class="reference internal" href="#arm64">ARM64</a></li> <li><a class="reference internal" href="#arm64">ARM64</a></li>
<li><a class="reference internal" href="#debian-bookworm">Debian Bookworm</a></li> <li><a class="reference internal" href="#debian-bookworm">Debian Bookworm</a></li>
<li><a class="reference internal" href="#macos">MacOS</a></li>
<li><a class="reference internal" href="#openwrt">OpenWRT</a></li> <li><a class="reference internal" href="#openwrt">OpenWRT</a></li>
<li><a class="reference internal" href="#raspberry-pi">Raspberry Pi</a></li> <li><a class="reference internal" href="#raspberry-pi">Raspberry Pi</a></li>
<li><a class="reference internal" href="#risc-v">RISC-V</a></li>
<li><a class="reference internal" href="#ubuntu-lunar">Ubuntu Lunar</a></li> <li><a class="reference internal" href="#ubuntu-lunar">Ubuntu Lunar</a></li>
<li><a class="reference internal" href="#windows">Windows</a></li> <li><a class="reference internal" href="#windows">Windows</a></li>
</ul> </ul>

View File

@ -279,16 +279,16 @@ completely from scratch, to your exact desired specifications, this chapter
will explain the easiest possible approach to creating RNodes: Using common will explain the easiest possible approach to creating RNodes: Using common
LoRa development boards. This approach can be boiled down to two simple steps:</p> LoRa development boards. This approach can be boiled down to two simple steps:</p>
<ol class="arabic simple"> <ol class="arabic simple">
<li><p>Obtain one or more supported development boards</p></li> <li><p>Obtain one or more <a class="reference internal" href="#rnode-supported"><span class="std std-ref">supported development boards</span></a></p></li>
<li><p>Install the RNode firmware with the automated installer</p></li> <li><p>Install the RNode firmware with the <a class="reference internal" href="#rnode-installation"><span class="std std-ref">automated installer</span></a></p></li>
</ol> </ol>
<p>Once the firmware has been installed and provisioned by the install script, it <p>Once the firmware has been installed and provisioned by the install script, it
is ready to use with any software that supports RNodes, including Reticulum. is ready to use with any software that supports RNodes, including Reticulum.
The device can be used with Reticulum by adding an <a class="reference internal" href="interfaces.html#interfaces-rnode"><span class="std std-ref">RNodeInterface</span></a> The device can be used with Reticulum by adding an <a class="reference internal" href="interfaces.html#interfaces-rnode"><span class="std std-ref">RNodeInterface</span></a>
to the configuration.</p> to the configuration.</p>
</section> </section>
<section id="supported-boards"> <section id="supported-boards-and-devices">
<span id="rnode-supported"></span><h3>Supported Boards<a class="headerlink" href="#supported-boards" title="Permalink to this heading">#</a></h3> <span id="rnode-supported"></span><h3>Supported Boards and Devices<a class="headerlink" href="#supported-boards-and-devices" title="Permalink to this heading">#</a></h3>
<p>To create one or more RNodes, you will need to obtain supported development <p>To create one or more RNodes, you will need to obtain supported development
boards. The following boards are supported by the auto-installer.</p> boards. The following boards are supported by the auto-installer.</p>
<hr class="docutils" /> <hr class="docutils" />
@ -550,7 +550,7 @@ can be used with Reticulum. This includes virtual software modems such as
<li><a class="reference internal" href="#combining-hardware-types">Combining Hardware Types</a></li> <li><a class="reference internal" href="#combining-hardware-types">Combining Hardware Types</a></li>
<li><a class="reference internal" href="#rnode">RNode</a><ul> <li><a class="reference internal" href="#rnode">RNode</a><ul>
<li><a class="reference internal" href="#creating-rnodes">Creating RNodes</a></li> <li><a class="reference internal" href="#creating-rnodes">Creating RNodes</a></li>
<li><a class="reference internal" href="#supported-boards">Supported Boards</a><ul> <li><a class="reference internal" href="#supported-boards-and-devices">Supported Boards and Devices</a><ul>
<li><a class="reference internal" href="#lilygo-t-beam-supreme">LilyGO T-Beam Supreme</a></li> <li><a class="reference internal" href="#lilygo-t-beam-supreme">LilyGO T-Beam Supreme</a></li>
<li><a class="reference internal" href="#lilygo-t-beam">LilyGO T-Beam</a></li> <li><a class="reference internal" href="#lilygo-t-beam">LilyGO T-Beam</a></li>
<li><a class="reference internal" href="#lilygo-t3s3">LilyGO T3S3</a></li> <li><a class="reference internal" href="#lilygo-t3s3">LilyGO T3S3</a></li>

View File

@ -241,8 +241,10 @@ 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#standalone-reticulum-installation">Standalone Reticulum Installation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#resolving-dependency-installation-issues">Resolving Dependency &amp; Installation Issues</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#resolving-dependency-installation-issues">Resolving Dependency &amp; Installation Issues</a></li>
</ul>
</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#remote-shell">Remote Shell</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#remote-shell">Remote Shell</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#nomad-network">Nomad Network</a></li>
@ -262,8 +264,10 @@ to participate in the development of Reticulum itself.</p>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#android">Android</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#android">Android</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#arm64">ARM64</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#arm64">ARM64</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#debian-bookworm">Debian Bookworm</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#debian-bookworm">Debian Bookworm</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#macos">MacOS</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#openwrt">OpenWRT</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#openwrt">OpenWRT</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#raspberry-pi">Raspberry Pi</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#raspberry-pi">Raspberry Pi</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#risc-v">RISC-V</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#ubuntu-lunar">Ubuntu Lunar</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#ubuntu-lunar">Ubuntu Lunar</a></li>
<li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#windows">Windows</a></li> <li class="toctree-l3"><a class="reference internal" href="gettingstartedfast.html#windows">Windows</a></li>
</ul> </ul>
@ -324,7 +328,7 @@ to participate in the development of Reticulum itself.</p>
<li class="toctree-l2"><a class="reference internal" href="hardware.html#combining-hardware-types">Combining Hardware Types</a></li> <li class="toctree-l2"><a class="reference internal" href="hardware.html#combining-hardware-types">Combining Hardware Types</a></li>
<li class="toctree-l2"><a class="reference internal" href="hardware.html#rnode">RNode</a><ul> <li class="toctree-l2"><a class="reference internal" href="hardware.html#rnode">RNode</a><ul>
<li class="toctree-l3"><a class="reference internal" href="hardware.html#creating-rnodes">Creating RNodes</a></li> <li class="toctree-l3"><a class="reference internal" href="hardware.html#creating-rnodes">Creating RNodes</a></li>
<li class="toctree-l3"><a class="reference internal" href="hardware.html#supported-boards">Supported Boards</a></li> <li class="toctree-l3"><a class="reference internal" href="hardware.html#supported-boards-and-devices">Supported Boards and Devices</a></li>
<li class="toctree-l3"><a class="reference internal" href="hardware.html#installation">Installation</a></li> <li class="toctree-l3"><a class="reference internal" href="hardware.html#installation">Installation</a></li>
<li class="toctree-l3"><a class="reference internal" href="hardware.html#usage-with-reticulum">Usage with Reticulum</a></li> <li class="toctree-l3"><a class="reference internal" href="hardware.html#usage-with-reticulum">Usage with Reticulum</a></li>
</ul> </ul>

View File

@ -353,11 +353,14 @@ list of I2P base32 addresses to the <code class="docutils literal notranslate"><
<p>It can take anywhere from a few seconds to a few minutes to establish <p>It can take anywhere from a few seconds to a few minutes to establish
I2P connections to the desired peers, so Reticulum handles the process I2P connections to the desired peers, so Reticulum handles the process
in the background, and will output relevant events to the log.</p> in the background, and will output relevant events to the log.</p>
<p><strong>Please Note!</strong> While the I2P interface is the simplest way to use <div class="admonition note">
<p class="admonition-title">Note</p>
<p>While the I2P interface is the simplest way to use
Reticulum over I2P, it is also possible to tunnel the TCP server and Reticulum over I2P, it is also possible to tunnel the TCP server and
client interfaces over I2P manually. This can be useful in situations client interfaces over I2P manually. This can be useful in situations
where more control is needed, but requires manual tunnel setup through where more control is needed, but requires manual tunnel setup through
the I2P daemon configuration.</p> the I2P daemon configuration.</p>
</div>
<p>It is important to note that the two methods are <em>interchangably compatible</em>. <p>It is important to note that the two methods are <em>interchangably compatible</em>.
You can use the I2PInterface to connect to a TCPServerInterface that You can use the I2PInterface to connect to a TCPServerInterface that
was manually tunneled over I2P, for example. This offers a high degree was manually tunneled over I2P, for example. This offers a high degree
@ -418,8 +421,11 @@ can simply specify the Yggdrasil <code class="docutils literal notranslate"><spa
<span class="n">listen_port</span> <span class="o">=</span> <span class="mi">4343</span> <span class="n">listen_port</span> <span class="o">=</span> <span class="mi">4343</span>
</pre></div> </pre></div>
</div> </div>
<p><strong>Please Note!</strong> The TCP interfaces support tunneling over I2P, but to do so reliably, <div class="admonition note">
<p class="admonition-title">Note</p>
<p>The TCP interfaces support tunneling over I2P, but to do so reliably,
you must use the i2p_tunneled option:</p> you must use the i2p_tunneled option:</p>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">TCP</span> <span class="n">Server</span> <span class="n">on</span> <span class="n">I2P</span><span class="p">]]</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">TCP</span> <span class="n">Server</span> <span class="n">on</span> <span class="n">I2P</span><span class="p">]]</span>
<span class="nb">type</span> <span class="o">=</span> <span class="n">TCPServerInterface</span> <span class="nb">type</span> <span class="o">=</span> <span class="n">TCPServerInterface</span>
<span class="n">interface_enabled</span> <span class="o">=</span> <span class="n">yes</span> <span class="n">interface_enabled</span> <span class="o">=</span> <span class="n">yes</span>
@ -478,8 +484,11 @@ and programs like soundmodems and similar over TCP. When using the
never enable <code class="docutils literal notranslate"><span class="pre">kiss_framing</span></code>, since this will disable internal reliability and never enable <code class="docutils literal notranslate"><span class="pre">kiss_framing</span></code>, since this will disable internal reliability and
recovery mechanisms that greatly improves performance over unreliable and recovery mechanisms that greatly improves performance over unreliable and
intermittent TCP links.</p> intermittent TCP links.</p>
<p><strong>Please Note!</strong> The TCP interfaces support tunneling over I2P, but to do so reliably, <div class="admonition note">
<p class="admonition-title">Note</p>
<p>The TCP interfaces support tunneling over I2P, but to do so reliably,
you must use the i2p_tunneled option:</p> you must use the i2p_tunneled option:</p>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">TCP</span> <span class="n">Client</span> <span class="n">over</span> <span class="n">I2P</span><span class="p">]]</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">TCP</span> <span class="n">Client</span> <span class="n">over</span> <span class="n">I2P</span><span class="p">]]</span>
<span class="nb">type</span> <span class="o">=</span> <span class="n">TCPClientInterface</span> <span class="nb">type</span> <span class="o">=</span> <span class="n">TCPClientInterface</span>
<span class="n">interface_enabled</span> <span class="o">=</span> <span class="n">yes</span> <span class="n">interface_enabled</span> <span class="o">=</span> <span class="n">yes</span>
@ -495,11 +504,14 @@ you must use the i2p_tunneled option:</p>
private and the internet. It can also allow broadcast communication private and the internet. It can also allow broadcast communication
over IP networks, so it can provide an easy way to enable connectivity over IP networks, so it can provide an easy way to enable connectivity
with all other peers on a local area network.</p> with all other peers on a local area network.</p>
<p><em>Please Note!</em> Using broadcast UDP traffic has performance implications, <div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Using broadcast UDP traffic has performance implications,
especially on WiFi. If your goal is simply to enable easy communication especially on WiFi. If your goal is simply to enable easy communication
with all peers in your local Ethernet broadcast domain, the with all peers in your local Ethernet broadcast domain, the
<a class="reference internal" href="#interfaces-auto"><span class="std std-ref">Auto Interface</span></a> performs better, and is even <a class="reference internal" href="#interfaces-auto"><span class="std std-ref">Auto Interface</span></a> performs better, and is even
easier to use.</p> easier to use.</p>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># This example enables communication with other</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># This example enables communication with other</span>
<span class="c1"># local Reticulum peers over UDP.</span> <span class="c1"># local Reticulum peers over UDP.</span>
@ -548,6 +560,12 @@ easier to use.</p>
<span id="interfaces-rnode"></span><h2>RNode LoRa Interface<a class="headerlink" href="#rnode-lora-interface" title="Permalink to this heading">#</a></h2> <span id="interfaces-rnode"></span><h2>RNode LoRa Interface<a class="headerlink" href="#rnode-lora-interface" title="Permalink to this heading">#</a></h2>
<p>To use Reticulum over LoRa, the <a class="reference external" href="https://unsigned.io/rnode/">RNode</a> interface <p>To use Reticulum over LoRa, the <a class="reference external" href="https://unsigned.io/rnode/">RNode</a> interface
can be used, and offers full control over LoRa parameters.</p> can be used, and offers full control over LoRa parameters.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.</p>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Here&#39;s an example of how to add a LoRa interface</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Here&#39;s an example of how to add a LoRa interface</span>
<span class="c1"># using the RNode LoRa transceiver.</span> <span class="c1"># using the RNode LoRa transceiver.</span>
@ -630,6 +648,12 @@ can be used, and offers full control over LoRa parameters.</p>
<span id="interfaces-rnode-multi"></span><h2>RNode Multi Interface<a class="headerlink" href="#rnode-multi-interface" title="Permalink to this heading">#</a></h2> <span id="interfaces-rnode-multi"></span><h2>RNode Multi Interface<a class="headerlink" href="#rnode-multi-interface" title="Permalink to this heading">#</a></h2>
<p>For RNodes that support multiple LoRa transceivers, the RNode <p>For RNodes that support multiple LoRa transceivers, the RNode
Multi interface can be used to configure sub-interfaces individually.</p> Multi interface can be used to configure sub-interfaces individually.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.</p>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Here&#39;s an example of how to add an RNode Multi interface</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Here&#39;s an example of how to add an RNode Multi interface</span>
<span class="c1"># using the RNode LoRa transceiver.</span> <span class="c1"># using the RNode LoRa transceiver.</span>
@ -784,6 +808,12 @@ Reticulum will try to respawn the program after waiting for <code class="docutil
radio modems and TNCs, including <a class="reference external" href="https://unsigned.io/openmodem/">OpenModem</a>. radio modems and TNCs, including <a class="reference external" href="https://unsigned.io/openmodem/">OpenModem</a>.
KISS interfaces can also be configured to periodically send out beacons KISS interfaces can also be configured to periodically send out beacons
for station identification purposes.</p> for station identification purposes.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.</p>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">Packet</span> <span class="n">Radio</span> <span class="n">KISS</span> <span class="n">Interface</span><span class="p">]]</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">Packet</span> <span class="n">Radio</span> <span class="n">KISS</span> <span class="n">Interface</span><span class="p">]]</span>
<span class="nb">type</span> <span class="o">=</span> <span class="n">KISSInterface</span> <span class="nb">type</span> <span class="o">=</span> <span class="n">KISSInterface</span>
<span class="n">interface_enabled</span> <span class="o">=</span> <span class="kc">True</span> <span class="n">interface_enabled</span> <span class="o">=</span> <span class="kc">True</span>
@ -841,6 +871,12 @@ layer for anything, and it incurs extra overhead on every packet to
encapsulate in AX.25.</p> encapsulate in AX.25.</p>
<p>A more efficient way is to use the plain KISS interface with the <p>A more efficient way is to use the plain KISS interface with the
beaconing functionality described above.</p> beaconing functionality described above.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.</p>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">Packet</span> <span class="n">Radio</span> <span class="n">AX</span><span class="mf">.25</span> <span class="n">KISS</span> <span class="n">Interface</span><span class="p">]]</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[[</span><span class="n">Packet</span> <span class="n">Radio</span> <span class="n">AX</span><span class="mf">.25</span> <span class="n">KISS</span> <span class="n">Interface</span><span class="p">]]</span>
<span class="nb">type</span> <span class="o">=</span> <span class="n">AX25KISSInterface</span> <span class="nb">type</span> <span class="o">=</span> <span class="n">AX25KISSInterface</span>

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -248,7 +248,8 @@ organisation? Make them a reality quickly by sponsoring their implementation.</p
<h2>Provide Feedback<a class="headerlink" href="#provide-feedback" title="Permalink to this heading">#</a></h2> <h2>Provide Feedback<a class="headerlink" href="#provide-feedback" title="Permalink to this heading">#</a></h2>
<p>All feedback on the usage, functioning and potential dysfunctioning of any and <p>All feedback on the usage, functioning and potential dysfunctioning of any and
all components of the system is very valuable to the continued development and all components of the system is very valuable to the continued development and
improvement of Reticulum. Absolutely no automated analytics, telemetry, error improvement of Reticulum.</p>
<p>Absolutely no automated analytics, telemetry, error
reporting or statistics is collected and reported by Reticulum under any reporting or statistics is collected and reported by Reticulum under any
circumstances, so we rely on old-fashioned human feedback.</p> circumstances, so we rely on old-fashioned human feedback.</p>
</section> </section>

View File

@ -1099,9 +1099,12 @@ instead use the internal pure-python primitives. A trivial consequence of this i
with the OpenSSL backend being <em>much</em> faster. The most important consequence however, is the with the OpenSSL backend being <em>much</em> faster. The most important consequence however, is the
potential loss of security by using primitives that has not seen the same amount of scrutiny, potential loss of security by using primitives that has not seen the same amount of scrutiny,
testing and review as those from OpenSSL.</p> testing and review as those from OpenSSL.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>If you want to use the internal pure-python primitives, it is <strong>highly advisable</strong> that you <p>If you want to use the internal pure-python primitives, it is <strong>highly advisable</strong> that you
have a good understanding of the risks that this pose, and make an informed decision on whether have a good understanding of the risks that this pose, and make an informed decision on whether
those risks are acceptable to you.</p> those risks are acceptable to you.</p>
</div>
</section> </section>
</section> </section>
</section> </section>

View File

@ -27,14 +27,14 @@ and install them offline using ``pip``:
pip install ./rns-0.5.1-py3-none-any.whl pip install ./rns-0.5.1-py3-none-any.whl
For more detailed instructions tailored to specific platforms, please see the For more detailed installation instructions, please see the
:ref:`Platform-Specific Install Notes<install-guides>` section. :ref:`Platform-Specific Install Notes<install-guides>` section.
After installation is complete, it might be helpful to refer to the After installation is complete, it might be helpful to refer to the
:ref:`Using Reticulum on Your System<using-main>` chapter. :ref:`Using Reticulum on Your System<using-main>` chapter.
Resolving Dependency & Installation Issues Resolving Dependency & Installation Issues
============================================= ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
On some platforms, there may not be binary packages available for all dependencies, and On some platforms, there may not be binary packages available for all dependencies, and
``pip`` installation may fail with an error message. In these cases, the issue can usually ``pip`` installation may fail with an error message. In these cases, the issue can usually
be resolved by installing the development essentials packages for your platform: be resolved by installing the development essentials packages for your platform:
@ -105,10 +105,12 @@ You can install Nomad Network via pip:
# ... and run # ... and run
nomadnet nomadnet
**Please Note**: If this is the very first time you use pip to install a program .. note::
on your system, you might need to reboot your system for your program to become If this is the very first time you use ``pip`` to install a program
available. If you get a "command not found" error or similar when running the on your system, you might need to reboot your system for your program to become
program, reboot your system and try again. available. If you get a "command not found" error or similar when running the
program, reboot your system and try again. In some cases, you may even need to
manually add the ``pip`` install path to your ``PATH`` environment variable.
Sideband Sideband
^^^^^^^^ ^^^^^^^^
@ -337,14 +339,8 @@ The above command will install Reticulum and dependencies, and you will be
ready to import and use RNS in your own programs. The next step will most ready to import and use RNS in your own programs. The next step will most
likely be to look at some :ref:`Example Programs<examples-main>`. likely be to look at some :ref:`Example Programs<examples-main>`.
For extended functionality, you can install optional dependencies: The entire Reticulum API is documented in the :ref:`API Reference<api-main>`
chapter of this manual.
.. code::
pip install pyserial
Further information can be found in the :ref:`API Reference<api-main>`.
Participate in Reticulum Development Participate in Reticulum Development
@ -471,7 +467,7 @@ here at a later point. Until then you can use the `Sideband source code <https:/
ARM64 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 may need to install ``python3-dev`` before binaries. On such systems, you may need to install ``python3-dev`` (or similar) before
installing Reticulum or programs that depend on Reticulum. installing Reticulum or programs that depend on Reticulum.
.. code:: .. code::
@ -522,10 +518,53 @@ option, you can use the following command:
pip install rns --break-system-packages pip install rns --break-system-packages
Please note that the "break-system-packages" directive is a somewhat misleading choice .. note::
of words. Setting it will of course not break any system packages, but will simply The ``--break-system-packages`` directive is a somewhat misleading choice
allow installing ``pip`` packages user- and system-wide. While this *could* in rare of words. Setting it will of course not break any system packages, but will simply
cases lead to version conflicts, it does not generally pose any problems. allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
MacOS
^^^^^^^^^^^^^^^^^^^^^^^^^
To install Reticulum on macOS, you will need to have Python and the ``pip`` package
manager installed.
Systems running macOS can vary quite widely in whether or not Python is pre-installed,
and if it is, which version is installed, and whether the ``pip`` package manager is
also installed and set up. If in doubt, you can `download and install <https://www.python.org/downloads/>`_
Python manually.
When Python and ``pip`` is available on your system, simply open a terminal window
and use one of the following commands:
.. code::
# Install Reticulum and utilities with pip:
pip3 install rns
# On some versions, you may need to use the
# flag --break-system-packages to install:
pip3 install rns --break-system-packages
.. note::
The ``--break-system-packages`` directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply
allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
Additionally, some version combinations of macOS and Python require you to
manually add your installed ``pip`` packages directory to your `PATH` environment
variable, before you can use installed commands in your terminal. Usually, adding
the following line to your shell init script (for example ``~/.zshrc``) will be enough:
.. code::
export PATH=$PATH:
Adjust Python version and shell init script location according to your system.
OpenWRT OpenWRT
@ -541,6 +580,23 @@ Reticulum and related utilities using the `opkg` package manager and `pip`.
# Install Reticulum # Install Reticulum
pip install rns pip install rns
# Start rnsd with debug logging enabled
rnsd -vvv
.. note::
The above instructions have been verified and tested on OpenWRT 21.02 only.
It is likely that other versions may require slightly altered installation
commands or package names. You will also need enough free space in your
overlay FS, and enough free RAM to actually run Reticulum and any related
programs and utilities.
Depending on your device configuration, you may need to adjust firewall rules
for Reticulum connectivity to and from your device to work. Please also note
that the `AutoInterface` requires link-local IPv6 addresses to be enabled for
any Ethernet and WiFi devices you intend to use. If ``ip a`` shows an address
starting with ``fe80::`` for the device in question, ``AutoInterface`` should
work for that device.
Raspberry Pi Raspberry Pi
^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
@ -558,14 +614,35 @@ install Reticulum using `pip`.
# Install Reticulum # Install Reticulum
pip install rns --break-system-packages pip install rns --break-system-packages
.. note::
The ``--break-system-packages`` directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply
allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
While it is possible to install and run Reticulum on 32-bit Rasperry Pi OSes, While it is possible to install and run Reticulum on 32-bit Rasperry Pi OSes,
it will require manually configuring and installing required build dependencies, it will require manually configuring and installing required build dependencies,
and is not detailed in this manual. and is not detailed in this manual.
Please note that the "break-system-packages" directive is a somewhat misleading choice
of words. Setting it will of course not break any system packages, but will simply RISC-V
allow installing ``pip`` packages user- and system-wide. While this *could* in rare ^^^^^^^^^^^^^^^^^^^^^^^^
cases lead to version conflicts, it does not generally pose any problems. On some architectures, including RISC-V, not all dependencies have precompiled
binaries. On such systems, you may need to install ``python3-dev`` (or similar) before
installing Reticulum or programs that depend on Reticulum.
.. code::
# Install Python and development packages
sudo apt update
sudo apt install python3 python3-pip python3-dev
# Install Reticulum
python3 -m pip install rns
With these packages installed, ``pip`` will be able to build any missing dependencies
on your system locally.
Ubuntu Lunar Ubuntu Lunar
@ -603,10 +680,12 @@ option, you can use the following command:
pip install rns --break-system-packages pip install rns --break-system-packages
Please note that the "break-system-packages" directive is a somewhat misleading choice .. note::
of words. Setting it will of course not break any system packages, but will simply The ``--break-system-packages`` directive is a somewhat misleading choice
allow installing ``pip`` packages user- and system-wide. While this _could_ in rare of words. Setting it will of course not break any system packages, but will simply
cases lead to version conflicts, it does not generally pose any problems. allow installing ``pip`` packages user- and system-wide. While this *could* in rare
cases lead to version conflicts, it does not generally pose any problems, especially
not in the case of installing Reticulum.
Windows Windows
^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
@ -615,7 +694,7 @@ On Windows operating systems, the easiest way to install Reticulum is by using t
Powershell). Powershell).
If you don't already have Python installed, `download and install Python <https://www.python.org/downloads/>`_. If you don't already have Python installed, `download and install Python <https://www.python.org/downloads/>`_.
At the time of writing this manual, the recommended version is `Python 3.12.7 <https://www.python.org/downloads/release/python-3127>`_. At the time of publication of this manual, the recommended version is `Python 3.12.7 <https://www.python.org/downloads/release/python-3127>`_.
**Important!** When asked by the installer, make sure to add the Python program to **Important!** When asked by the installer, make sure to add the Python program to
your PATH environment variables. If you don't do this, you will not be able to your PATH environment variables. If you don't do this, you will not be able to
@ -648,7 +727,8 @@ on a system that cannot support ``pyserial``, it is perfectly possible to do so
the `rnspure` package, but Reticulum will not be able to use serial-based interfaces. the `rnspure` package, but Reticulum will not be able to use serial-based interfaces.
All other available modules will still be loaded when needed. All other available modules will still be loaded when needed.
**Please Note!** If you use the `rnspure` package to run Reticulum on systems that .. warning::
do not support `PyCA/cryptography <https://github.com/pyca/cryptography>`_, it is If you use the ``rnspure`` package to run Reticulum on systems that
important that you read and understand the :ref:`Cryptographic Primitives <understanding-primitives>` do not support `PyCA/cryptography <https://github.com/pyca/cryptography>`_, it is
section of this manual. important that you read and understand the :ref:`Cryptographic Primitives <understanding-primitives>`
section of this manual.

View File

@ -75,8 +75,8 @@ completely from scratch, to your exact desired specifications, this chapter
will explain the easiest possible approach to creating RNodes: Using common will explain the easiest possible approach to creating RNodes: Using common
LoRa development boards. This approach can be boiled down to two simple steps: LoRa development boards. This approach can be boiled down to two simple steps:
1. Obtain one or more supported development boards 1. Obtain one or more :ref:`supported development boards<rnode-supported>`
2. Install the RNode firmware with the automated installer 2. Install the RNode firmware with the :ref:`automated installer<rnode-installation>`
Once the firmware has been installed and provisioned by the install script, it Once the firmware has been installed and provisioned by the install script, it
is ready to use with any software that supports RNodes, including Reticulum. is ready to use with any software that supports RNodes, including Reticulum.
@ -85,8 +85,8 @@ to the configuration.
.. _rnode-supported: .. _rnode-supported:
Supported Boards Supported Boards and Devices
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To create one or more RNodes, you will need to obtain supported development To create one or more RNodes, you will need to obtain supported development
boards. The following boards are supported by the auto-installer. boards. The following boards are supported by the auto-installer.

View File

@ -162,11 +162,12 @@ It can take anywhere from a few seconds to a few minutes to establish
I2P connections to the desired peers, so Reticulum handles the process I2P connections to the desired peers, so Reticulum handles the process
in the background, and will output relevant events to the log. in the background, and will output relevant events to the log.
**Please Note!** While the I2P interface is the simplest way to use .. note::
Reticulum over I2P, it is also possible to tunnel the TCP server and While the I2P interface is the simplest way to use
client interfaces over I2P manually. This can be useful in situations Reticulum over I2P, it is also possible to tunnel the TCP server and
where more control is needed, but requires manual tunnel setup through client interfaces over I2P manually. This can be useful in situations
the I2P daemon configuration. where more control is needed, but requires manual tunnel setup through
the I2P daemon configuration.
It is important to note that the two methods are *interchangably compatible*. It is important to note that the two methods are *interchangably compatible*.
You can use the I2PInterface to connect to a TCPServerInterface that You can use the I2PInterface to connect to a TCPServerInterface that
@ -238,8 +239,9 @@ can simply specify the Yggdrasil ``tun`` device and a listening port, like so:
device = tun0 device = tun0
listen_port = 4343 listen_port = 4343
**Please Note!** The TCP interfaces support tunneling over I2P, but to do so reliably, .. note::
you must use the i2p_tunneled option: The TCP interfaces support tunneling over I2P, but to do so reliably,
you must use the i2p_tunneled option:
.. code:: .. code::
@ -311,8 +313,9 @@ never enable ``kiss_framing``, since this will disable internal reliability and
recovery mechanisms that greatly improves performance over unreliable and recovery mechanisms that greatly improves performance over unreliable and
intermittent TCP links. intermittent TCP links.
**Please Note!** The TCP interfaces support tunneling over I2P, but to do so reliably, .. note::
you must use the i2p_tunneled option: The TCP interfaces support tunneling over I2P, but to do so reliably,
you must use the i2p_tunneled option:
.. code:: .. code::
@ -334,11 +337,12 @@ private and the internet. It can also allow broadcast communication
over IP networks, so it can provide an easy way to enable connectivity over IP networks, so it can provide an easy way to enable connectivity
with all other peers on a local area network. with all other peers on a local area network.
*Please Note!* Using broadcast UDP traffic has performance implications, .. warning::
especially on WiFi. If your goal is simply to enable easy communication Using broadcast UDP traffic has performance implications,
with all peers in your local Ethernet broadcast domain, the especially on WiFi. If your goal is simply to enable easy communication
:ref:`Auto Interface<interfaces-auto>` performs better, and is even with all peers in your local Ethernet broadcast domain, the
easier to use. :ref:`Auto Interface<interfaces-auto>` performs better, and is even
easier to use.
.. code:: .. code::
@ -393,6 +397,11 @@ RNode LoRa Interface
To use Reticulum over LoRa, the `RNode <https://unsigned.io/rnode/>`_ interface To use Reticulum over LoRa, the `RNode <https://unsigned.io/rnode/>`_ interface
can be used, and offers full control over LoRa parameters. can be used, and offers full control over LoRa parameters.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
# Here's an example of how to add a LoRa interface # Here's an example of how to add a LoRa interface
@ -480,6 +489,11 @@ RNode Multi Interface
For RNodes that support multiple LoRa transceivers, the RNode For RNodes that support multiple LoRa transceivers, the RNode
Multi interface can be used to configure sub-interfaces individually. Multi interface can be used to configure sub-interfaces individually.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
# Here's an example of how to add an RNode Multi interface # Here's an example of how to add an RNode Multi interface
@ -647,6 +661,11 @@ radio modems and TNCs, including `OpenModem <https://unsigned.io/openmodem/>`_.
KISS interfaces can also be configured to periodically send out beacons KISS interfaces can also be configured to periodically send out beacons
for station identification purposes. for station identification purposes.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
[[Packet Radio KISS Interface]] [[Packet Radio KISS Interface]]
@ -710,6 +729,11 @@ encapsulate in AX.25.
A more efficient way is to use the plain KISS interface with the A more efficient way is to use the plain KISS interface with the
beaconing functionality described above. beaconing functionality described above.
.. warning::
Radio frequency spectrum is a legally controlled resource, and legislation
varies widely around the world. It is your responsibility to be aware of any
relevant regulation for your location, and to make decisions accordingly.
.. code:: .. code::
[[Packet Radio AX.25 KISS Interface]] [[Packet Radio AX.25 KISS Interface]]

View File

@ -32,7 +32,9 @@ Provide Feedback
================ ================
All feedback on the usage, functioning and potential dysfunctioning of any and All feedback on the usage, functioning and potential dysfunctioning of any and
all components of the system is very valuable to the continued development and all components of the system is very valuable to the continued development and
improvement of Reticulum. Absolutely no automated analytics, telemetry, error improvement of Reticulum.
Absolutely no automated analytics, telemetry, error
reporting or statistics is collected and reported by Reticulum under any reporting or statistics is collected and reported by Reticulum under any
circumstances, so we rely on old-fashioned human feedback. circumstances, so we rely on old-fashioned human feedback.

View File

@ -904,6 +904,7 @@ with the OpenSSL backend being *much* faster. The most important consequence how
potential loss of security by using primitives that has not seen the same amount of scrutiny, potential loss of security by using primitives that has not seen the same amount of scrutiny,
testing and review as those from OpenSSL. testing and review as those from OpenSSL.
If you want to use the internal pure-python primitives, it is **highly advisable** that you .. warning::
have a good understanding of the risks that this pose, and make an informed decision on whether If you want to use the internal pure-python primitives, it is **highly advisable** that you
those risks are acceptable to you. have a good understanding of the risks that this pose, and make an informed decision on whether
those risks are acceptable to you.

View File

@ -189,4 +189,4 @@ such. While it has been built with cryptography best-practices very foremost in
mind, it has not yet been externally security audited, and there could very well be mind, it has not yet been externally security audited, and there could very well be
privacy-breaking bugs. To be considered secure, Reticulum needs a thorough privacy-breaking bugs. To be considered secure, Reticulum needs a thorough
security review by independent cryptographers and security researchers. If you security review by independent cryptographers and security researchers. If you
want to help out with this, or can help sponsor an audit, please do get in touch. want to help out with this, or can help sponsor an audit, please do get in touch.