<spanid="hardware-main"></span><h1>Communications Hardware<aclass="headerlink"href="#communications-hardware"title="Permalink to this heading">#</a></h1>
<p>One of the truly valuable aspects of Reticulum is the ability to use it over
almost any conceivable kind of communications medium. The <aclass="reference internal"href="interfaces.html#interfaces-main"><spanclass="std std-ref">interface types</span></a>
available for configuration in Reticulum are flexible enough to cover the use
of most wired and wireless communications hardware available, from decades-old
packet radio modems to modern millimeter-wave backhaul systems.</p>
<p>If you already have or operate some kind of communications hardware, there is a
very good chance that it will work with Reticulum out of the box. In case it does
not, it is possible to provide the necessary glue with very little effort using
for example the <aclass="reference internal"href="interfaces.html#interfaces-pipe"><spanclass="std std-ref">PipeInterface</span></a> or the <aclass="reference internal"href="interfaces.html#interfaces-tcpc"><spanclass="std std-ref">TCPClientInterface</span></a>
in combination with code like <aclass="reference external"href="https://github.com/simplyequipped/tcpkissserver">TCP KISS Server</a>
by <aclass="reference external"href="https://github.com/simplyequipped">simplyequipped</a>.</p>
<p>While this broad support and flexibility is very useful, an abundance of options
can sometimes make it difficult to know where to begin, especially when you are
starting from scratch.</p>
<p>This chapter will outline a few different sensible starting paths to get
real-world functional wireless communications up and running with minimal cost
and effort. Two fundamental devices categories will be covered, <em>RNodes</em> and
<spanid="rnode-main"></span><h2>RNode<aclass="headerlink"href="#rnode"title="Permalink to this heading">#</a></h2>
<p>Reliable and general-purpose long-range digital radio transceiver systems are
commonly either very expensive, difficult to set up and operate, hard to source,
power-hungry, or all of the above at the same time. In an attempt to alleviate
this situation, the transceiver system <em>RNode</em> was designed. It is important to
note that RNode is not one specific device, from one particular vendor, but
<em>an open plaform</em> that anyone can use to build interoperable digital transceivers
suited to their needs and particular situations.</p>
<p>An RNode is a general purpose, interoperable, low-power and long-range, reliable,
open and flexible radio communications device. Depending on its components, it can
operate on many different frequency bands, and use many different modulation
schemes, but most commonly, and for the purposes of this chapter, we will limit
the discussion to RNodes using <em>LoRa</em> modulation in common ISM bands.</p>
<p><strong>Avoid Confusion!</strong> RNodes can use LoRa as a <em>physical-layer modulation</em>, but it
does not use, and has nothing to do with the <em>LoRaWAN</em> protocol and standard, commonly
used for centrally controlled IoT devices. RNodes use <em>raw LoRa modulation</em>, without
any additional protocol overhead. All high-level protocol functionality is handled
directly by Reticulum.</p>
<sectionid="creating-rnodes">
<spanid="rnode-creating"></span><h3>Creating RNodes<aclass="headerlink"href="#creating-rnodes"title="Permalink to this heading">#</a></h3>
<p>RNode has been designed as a system that is easy to replicate across time and
space. You can put together a functioning transceiver using commonly available
components, and a few open source software tools. While you can design and build RNodes
completely from scratch, to your exact desired specifications, this chapter
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>
<olclass="arabic simple">
<li><p>Obtain one or more supported development boards</p></li>
<li><p>Install the RNode firmware with the automated installer</p></li>
</ol>
<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.
The device can be used with Reticulum by adding an <aclass="reference internal"href="interfaces.html#interfaces-rnode"><spanclass="std std-ref">RNodeInterface</span></a>
to the configuration.</p>
</section>
<sectionid="supported-boards">
<spanid="rnode-supported"></span><h3>Supported Boards<aclass="headerlink"href="#supported-boards"title="Permalink to this heading">#</a></h3>
<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>
<spanid="rnode-installation"></span><h3>Installation<aclass="headerlink"href="#installation"title="Permalink to this heading">#</a></h3>
<p>Once you have obtained compatible boards, you can install the <aclass="reference external"href="https://github.com/markqvist/RNode_Firmware">RNode Firmware</a>
using the <aclass="reference external"href="https://github.com/markqvist/rnodeconfigutil">RNode Configuration Utility</a>.
If you have installed Reticulum on your system, the <codeclass="docutils literal notranslate"><spanclass="pre">rnodeconf</span></code> program will already be
available. If not, make sure that <codeclass="docutils literal notranslate"><spanclass="pre">Python3</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">pip</span></code> is installed on your system, and
then install Reticulum with with <codeclass="docutils literal notranslate"><spanclass="pre">pip</span></code>:</p>
<p>The utility will guide you through the installation process by asking a series of
questions about your hardware. Simply follow the guide, and the utility will
auto-install and configure your devices.</p>
</section>
<sectionid="usage-with-reticulum">
<spanid="rnode-usage"></span><h3>Usage with Reticulum<aclass="headerlink"href="#usage-with-reticulum"title="Permalink to this heading">#</a></h3>
<p>When the devices have been installed and provisioned, you can use them with Reticulum
by adding the <aclass="reference internal"href="interfaces.html#interfaces-rnode"><spanclass="std std-ref">relevant interface section</span></a> to the configuration
<h2>WiFi-based Hardware<aclass="headerlink"href="#wifi-based-hardware"title="Permalink to this heading">#</a></h2>
<p>It is possible to use all kinds of both short- and long-range WiFi-based hardware
with Reticulum. Any kind of hardware that fully supports bridged Ethernet over the
WiFi interface will work with the <aclass="reference internal"href="interfaces.html#interfaces-auto"><spanclass="std std-ref">AutoInterface</span></a> in Reticulum.
Most devices will behave like this by default, or allow it via configuration options.</p>
<p>This means that you can simply configure the physical links of the WiFi based devices,
and start communicating over them using Reticulum. It is not necessary to enable any IP
infrastructure such as DHCP servers, DNS or similar, as long as at least Ethernet is
available, and packets are passed transparently over the physical WiFi-based devices.</p>
<h2>Ethernet-based Hardware<aclass="headerlink"href="#ethernet-based-hardware"title="Permalink to this heading">#</a></h2>
<p>Reticulum can run over any kind of hardware that can provide a switched Ethernet-based
medium. This means that anything from a plain Ethernet switch, to fiber-optic systems,
to data radios with Ethernet interfaces can be used by Reticulum.</p>
<p>The Ethernet medium does not need to have any IP infrastructure such as DHCP servers
or routing set up, but in case such infrastructure does exist, Reticulum will simply
co-exist with.</p>
<p>To use Reticulum over Ethernet-based mediums, it is generally enough to use the included
<aclass="reference internal"href="interfaces.html#interfaces-auto"><spanclass="std std-ref">AutoInterface</span></a>. This interface also works over any kind of
virtual networking adapter, such as <codeclass="docutils literal notranslate"><spanclass="pre">tun</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">tap</span></code> devices in Linux.</p>
</section>
<sectionid="serial-lines-devices">
<h2>Serial Lines & Devices<aclass="headerlink"href="#serial-lines-devices"title="Permalink to this heading">#</a></h2>
<p>Using Reticulum over any kind of raw serial line is also possible with the
<aclass="reference internal"href="interfaces.html#interfaces-serial"><spanclass="std std-ref">SerialInterface</span></a>. This interface type is also useful for
using Reticulum over communications hardware that provides a serial port interface.</p>
</section>
<sectionid="packet-radio-modems">
<h2>Packet Radio Modems<aclass="headerlink"href="#packet-radio-modems"title="Permalink to this heading">#</a></h2>
<p>Any packet radio modem that provides a standard KISS interface over USB, serial or TCP
can be used with Reticulum. This includes virtual software modems such as
<aclass="reference external"href="https://github.com/xssfox/freedv-tnc">FreeDV TNC</a> and <aclass="reference external"href="https://github.com/wb2osz/direwolf">Dire Wolf</a>.</p>