Updated documentation

This commit is contained in:
Mark Qvist 2021-12-09 18:12:18 +01:00
parent 02945f960d
commit 006c70cd09
14 changed files with 97 additions and 8 deletions

View File

@ -86,17 +86,21 @@ Reticulum implements a range of generalised interface types that covers most of
## Dependencies: ## Dependencies:
- Python 3.6 - Python 3.6
- cryptography.io - cryptography.io
- netifaces
- pyserial
## How do I get started? ## How do I get started?
The best way to get started with the Reticulum Network Stack depends on what The best way to get started with the Reticulum Network Stack depends on what
you want to do. For full details and examples, have a look at the [Getting Started Fast](https://markqvist.github.io/Reticulum/manual/gettingstartedfast.html) section of the [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/). you want to do. For full details and examples, have a look at the [Getting Started Fast](https://markqvist.github.io/Reticulum/manual/gettingstartedfast.html) section of the [Reticulum Manual](https://markqvist.github.io/Reticulum/manual/).
If you just need Reticulum as a dependency for another application, the easiest way is via pip: To simply install Reticulum and related utilities on your system, the easiest way is via pip:
```bash ```bash
pip3 install rns pip3 install rns
``` ```
You can then start any program that uses Reticulum, or start Reticulum as a system daemon with [the rnsd utility](https://markqvist.github.io/Reticulum/manual/using.html#the-rnsd-utility).
The default config file contains examples for using Reticulum with LoRa transceivers (specifically [RNode](https://unsigned.io/projects/rnode/)), packet radio TNCs/modems and UDP. By default a UDP interface is already enabled in the default config, which will enable Reticulum communication in your local ethernet broadcast domain. The default config file contains examples for using Reticulum with LoRa transceivers (specifically [RNode](https://unsigned.io/projects/rnode/)), packet radio TNCs/modems and UDP. By default a UDP interface is already enabled in the default config, which will enable Reticulum communication in your local ethernet broadcast domain.
You can use the examples in the config file to expand communication over other mediums such as packet radio or LoRa, or over fast IP links using the UDP interface. I'll add in-depth tutorials and explanations on these topics later. For now, the included examples will hopefully be enough to get started. You can use the examples in the config file to expand communication over other mediums such as packet radio or LoRa, or over fast IP links using the UDP interface. I'll add in-depth tutorials and explanations on these topics later. For now, the included examples will hopefully be enough to get started.

View File

@ -280,8 +280,8 @@ class Reticulum:
discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None discovery_scope = c["discovery_scope"] if "discovery_scope" in c else None
discovery_port = int(c["discovery_port"]) if "discovery_port" in c else None discovery_port = int(c["discovery_port"]) if "discovery_port" in c else None
data_port = int(c["data_port"]) if "data_port" in c else None data_port = int(c["data_port"]) if "data_port" in c else None
allowed_interfaces = c.as_list("interfaces") if "interfaces" in c else None allowed_interfaces = c.as_list("devices") if "devices" in c else None
ignored_interfaces = c.as_list("ignored_interfaces") if "ignored_interfaces" in c else None ignored_interfaces = c.as_list("ignored_devices") if "ignored_devices" in c else None
interface = AutoInterface.AutoInterface( interface = AutoInterface.AutoInterface(
RNS.Transport, RNS.Transport,

View File

@ -131,6 +131,22 @@ When you have experimented with the basic examples, it's time to go read the
:ref:`Understanding Reticulum<understanding-main>` chapter. :ref:`Understanding Reticulum<understanding-main>` chapter.
Reticulum on ARM64
==============================================
On some architectures, including ARM64, not all dependencies have precompiled
binaries. On such systems, you will need to install ``python3-dev`` 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
Reticulum on Android Reticulum on Android
============================================== ==============================================
Reticulum can be used on Android in different ways. The easiest way to get Reticulum can be used on Android in different ways. The easiest way to get

View File

@ -26,7 +26,7 @@ Auto Interface
The Auto Interface enables communication with other discoverable Reticulum The Auto Interface enables communication with other discoverable Reticulum
nodes over UDP. It does not need any functional IP infrastructure like nodes over UDP. It does not need any functional IP infrastructure like
routers or DHCP servers, but will require at least some sort of switching routers or DHCP servers, but will require at least some sort of switching
medium between peers (a wired switch, a WiFi access point or similar), and medium between peers (a wired switch, a hub, a WiFi access point or similar), and
that link-local IPv6 is enabled in your operating system, which should be that link-local IPv6 is enabled in your operating system, which should be
enabled by default in almost all OSes. enabled by default in almost all OSes.
@ -47,6 +47,17 @@ enabled by default in almost all OSes.
group_id = reticulum group_id = reticulum
# You can also select specifically which
# kernel networking devices to use.
devices = wlan0,eth1
# Or let AutoInterface use all suitable
# devices except for a list of ignored ones.
ignored_devices = tun0,eth0
If you are connected to the Internet with IPv6, and your provider will route If you are connected to the Internet with IPv6, and your provider will route
IPv6 multicast, you can potentially configure the Auto Interface to globally IPv6 multicast, you can potentially configure the Auto Interface to globally
autodiscover other Reticulum nodes within your selected Group ID. You can specify autodiscover other Reticulum nodes within your selected Group ID. You can specify

View File

@ -57,6 +57,7 @@ the same system.
-q, --quiet -q, --quiet
--version show program's version number and exit --version show program's version number and exit
You can easily add ``rnsd`` as an always-on service by :ref:`configuring a service<using-systemd>`.
The rnstatus Utility The rnstatus Utility
==================== ====================
@ -205,6 +206,7 @@ Using this methodology avoids potential naming mix-ups where physical devices
might be plugged and unplugged in different orders, or when node name might be plugged and unplugged in different orders, or when node name
assignment varies from one boot to another. assignment varies from one boot to another.
.. _using-systemd:
Reticulum as a System Service Reticulum as a System Service
============================= =============================

View File

@ -148,6 +148,20 @@ dont use pip, but try this recipe:</p>
<p>When you have experimented with the basic examples, its time to go read the <p>When you have experimented with the basic examples, its time to go read the
<a class="reference internal" href="understanding.html#understanding-main"><span class="std std-ref">Understanding Reticulum</span></a> chapter.</p> <a class="reference internal" href="understanding.html#understanding-main"><span class="std std-ref">Understanding Reticulum</span></a> chapter.</p>
</div> </div>
<div class="section" id="reticulum-on-arm64">
<h2>Reticulum on ARM64<a class="headerlink" href="#reticulum-on-arm64" title="Permalink to this headline"></a></h2>
<p>On some architectures, including ARM64, not all dependencies have precompiled
binaries. On such systems, you will need to install <code class="docutils literal notranslate"><span class="pre">python3-dev</span></code> before
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>
</div>
<div class="section" id="reticulum-on-android"> <div class="section" id="reticulum-on-android">
<h2>Reticulum on Android<a class="headerlink" href="#reticulum-on-android" title="Permalink to this headline"></a></h2> <h2>Reticulum on Android<a class="headerlink" href="#reticulum-on-android" title="Permalink to this headline"></a></h2>
<p>Reticulum can be used on Android in different ways. The easiest way to get <p>Reticulum can be used on Android in different ways. The easiest way to get
@ -201,6 +215,7 @@ here at a later point.</p>
<li><a class="reference internal" href="#creating-a-network-with-reticulum">Creating a Network With Reticulum</a></li> <li><a class="reference internal" href="#creating-a-network-with-reticulum">Creating a Network With Reticulum</a></li>
<li><a class="reference internal" href="#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li> <li><a class="reference internal" href="#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li>
<li><a class="reference internal" href="#participate-in-reticulum-development">Participate in Reticulum Development</a></li> <li><a class="reference internal" href="#participate-in-reticulum-development">Participate in Reticulum Development</a></li>
<li><a class="reference internal" href="#reticulum-on-arm64">Reticulum on ARM64</a></li>
<li><a class="reference internal" href="#reticulum-on-android">Reticulum on Android</a></li> <li><a class="reference internal" href="#reticulum-on-android">Reticulum on Android</a></li>
</ul> </ul>
</li> </li>

View File

@ -58,6 +58,7 @@ to participate in the development of Reticulum itself.</p>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#creating-a-network-with-reticulum">Creating a Network With Reticulum</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#creating-a-network-with-reticulum">Creating a Network With Reticulum</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#develop-a-program-with-reticulum">Develop a Program with Reticulum</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#participate-in-reticulum-development">Participate in Reticulum Development</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#participate-in-reticulum-development">Participate in Reticulum Development</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-arm64">Reticulum on ARM64</a></li>
<li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-android">Reticulum on Android</a></li> <li class="toctree-l2"><a class="reference internal" href="gettingstartedfast.html#reticulum-on-android">Reticulum on Android</a></li>
</ul> </ul>
</li> </li>

View File

@ -58,7 +58,7 @@ manual.</p>
<p>The Auto Interface enables communication with other discoverable Reticulum <p>The Auto Interface enables communication with other discoverable Reticulum
nodes over UDP. It does not need any functional IP infrastructure like nodes over UDP. It does not need any functional IP infrastructure like
routers or DHCP servers, but will require at least some sort of switching routers or DHCP servers, but will require at least some sort of switching
medium between peers (a wired switch, a WiFi access point or similar), and medium between peers (a wired switch, a hub, a WiFi access point or similar), and
that link-local IPv6 is enabled in your operating system, which should be that link-local IPv6 is enabled in your operating system, which should be
enabled by default in almost all OSes.</p> enabled by default in almost all OSes.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># This example demonstrates a TCP server interface.</span> <div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># This example demonstrates a TCP server interface.</span>
@ -75,6 +75,16 @@ enabled by default in almost all OSes.</p>
<span class="c1"># specifying different Group IDs.</span> <span class="c1"># specifying different Group IDs.</span>
<span class="n">group_id</span> <span class="o">=</span> <span class="n">reticulum</span> <span class="n">group_id</span> <span class="o">=</span> <span class="n">reticulum</span>
<span class="c1"># You can also select specifically which</span>
<span class="c1"># kernel networking devices to use.</span>
<span class="n">devices</span> <span class="o">=</span> <span class="n">wlan0</span><span class="p">,</span><span class="n">eth1</span>
<span class="c1"># Or let AutoInterface use all suitable</span>
<span class="c1"># devices except for a list of ignored ones.</span>
<span class="n">ignored_devices</span> <span class="o">=</span> <span class="n">tun0</span><span class="p">,</span><span class="n">eth0</span>
</pre></div> </pre></div>
</div> </div>
<p>If you are connected to the Internet with IPv6, and your provider will route <p>If you are connected to the Internet with IPv6, and your provider will route

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -87,6 +87,7 @@ optional arguments:
--version show program&#39;s version number and exit --version show program&#39;s version number and exit
</pre></div> </pre></div>
</div> </div>
<p>You can easily add <code class="docutils literal notranslate"><span class="pre">rnsd</span></code> as an always-on service by <a class="reference internal" href="#using-systemd"><span class="std std-ref">configuring a service</span></a>.</p>
</div> </div>
<div class="section" id="the-rnstatus-utility"> <div class="section" id="the-rnstatus-utility">
<h3>The rnstatus Utility<a class="headerlink" href="#the-rnstatus-utility" title="Permalink to this headline"></a></h3> <h3>The rnstatus Utility<a class="headerlink" href="#the-rnstatus-utility" title="Permalink to this headline"></a></h3>
@ -218,7 +219,7 @@ might be plugged and unplugged in different orders, or when node name
assignment varies from one boot to another.</p> assignment varies from one boot to another.</p>
</div> </div>
<div class="section" id="reticulum-as-a-system-service"> <div class="section" id="reticulum-as-a-system-service">
<h3>Reticulum as a System Service<a class="headerlink" href="#reticulum-as-a-system-service" title="Permalink to this headline"></a></h3> <span id="using-systemd"></span><h3>Reticulum as a System Service<a class="headerlink" href="#reticulum-as-a-system-service" title="Permalink to this headline"></a></h3>
<p>Instead of starting Reticulum manually, you can install <code class="docutils literal notranslate"><span class="pre">rnsd</span></code> as a system <p>Instead of starting Reticulum manually, you can install <code class="docutils literal notranslate"><span class="pre">rnsd</span></code> as a system
service and have it start automatically at boot.</p> service and have it start automatically at boot.</p>
<p>If you installed Reticulum with <code class="docutils literal notranslate"><span class="pre">pip</span></code>, the <code class="docutils literal notranslate"><span class="pre">rnsd</span></code> program will most likely <p>If you installed Reticulum with <code class="docutils literal notranslate"><span class="pre">pip</span></code>, the <code class="docutils literal notranslate"><span class="pre">rnsd</span></code> program will most likely

View File

@ -131,6 +131,22 @@ When you have experimented with the basic examples, it's time to go read the
:ref:`Understanding Reticulum<understanding-main>` chapter. :ref:`Understanding Reticulum<understanding-main>` chapter.
Reticulum on ARM64
==============================================
On some architectures, including ARM64, not all dependencies have precompiled
binaries. On such systems, you will need to install ``python3-dev`` 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
Reticulum on Android Reticulum on Android
============================================== ==============================================
Reticulum can be used on Android in different ways. The easiest way to get Reticulum can be used on Android in different ways. The easiest way to get

View File

@ -26,7 +26,7 @@ Auto Interface
The Auto Interface enables communication with other discoverable Reticulum The Auto Interface enables communication with other discoverable Reticulum
nodes over UDP. It does not need any functional IP infrastructure like nodes over UDP. It does not need any functional IP infrastructure like
routers or DHCP servers, but will require at least some sort of switching routers or DHCP servers, but will require at least some sort of switching
medium between peers (a wired switch, a WiFi access point or similar), and medium between peers (a wired switch, a hub, a WiFi access point or similar), and
that link-local IPv6 is enabled in your operating system, which should be that link-local IPv6 is enabled in your operating system, which should be
enabled by default in almost all OSes. enabled by default in almost all OSes.
@ -47,6 +47,17 @@ enabled by default in almost all OSes.
group_id = reticulum group_id = reticulum
# You can also select specifically which
# kernel networking devices to use.
devices = wlan0,eth1
# Or let AutoInterface use all suitable
# devices except for a list of ignored ones.
ignored_devices = tun0,eth0
If you are connected to the Internet with IPv6, and your provider will route If you are connected to the Internet with IPv6, and your provider will route
IPv6 multicast, you can potentially configure the Auto Interface to globally IPv6 multicast, you can potentially configure the Auto Interface to globally
autodiscover other Reticulum nodes within your selected Group ID. You can specify autodiscover other Reticulum nodes within your selected Group ID. You can specify

View File

@ -57,6 +57,7 @@ the same system.
-q, --quiet -q, --quiet
--version show program's version number and exit --version show program's version number and exit
You can easily add ``rnsd`` as an always-on service by :ref:`configuring a service<using-systemd>`.
The rnstatus Utility The rnstatus Utility
==================== ====================
@ -205,6 +206,7 @@ Using this methodology avoids potential naming mix-ups where physical devices
might be plugged and unplugged in different orders, or when node name might be plugged and unplugged in different orders, or when node name
assignment varies from one boot to another. assignment varies from one boot to another.
.. _using-systemd:
Reticulum as a System Service Reticulum as a System Service
============================= =============================