Liberated Embedded Systems

Using RNodeMultiInterface

Author

Jacob “Fed Hunter” Eva, known for his excellent fedposting skills and hatred of socialists, is the head agilepilled scrumcell director of Liberated Embedded Systems. In his free time, he targets 5G TV licensing vans with high-energy EMF waves to disable their scanning functionality, preventing them from stealing peoples’ income for the BBC. Thank you, Jacob.

Introduction

So, you’ve either purchased my openCom XL device, another device, or made your own RNode which also supports multiple interfaces on the device, but you need to be able to address these within Reticulum in order to use all these interfaces at once.

Well, have no fear, you will soon be able to upload photos of Ted Kaczynski on multiple radio modems at once. Truly, the Feds are quaking in their boots as you even read this.

Installation

Firstly, you will need a version of Reticulum which has my implementation of the RNodeMultiInterface interface included. Currently, Mark Qvist’s RNS package on pip does not have this feature yet, but in the meantime you can get it by installing my forked version of Reticulum, the source code of which is available on GitHub. It can easily be installed through pip like so:

pip install rns-libsys

Usage

Once it is installed, you will need to add an extra interface config section to your Reticulum config file. For example, this one will work for a openCom XL device:

[[openCom XL]]
type = RNodeMultiInterface
# Enable interface if you want to use it!
interface_enabled = True

# Serial port for the device
port = /dev/ttyACM0

# You can configure the RNode to send
# out identification on the channel with
# a set interval by configuring the
# following two parameters.

# id_callsign = MYCALL-0
# id_interval = 600

# For certain homebrew RNode interfaces
# with low amounts of RAM, using packet
# flow control can be useful. By default
# it is disabled.

# flow_control = False

  # A subinterface
  [[[HIGHDATARATE]]]
  # The type of modem, generally this will be SX126X, SX127X or SX128X
  type = SX128X
  # Subinterfaces can be enabled and disabled in of themselves
  interface_enabled = True

  # Set frequency to 2.4GHz
  frequency = 2400000000

  # Set LoRa bandwidth to 1625 KHz
  bandwidth = 1625000

  # Set TX power to 0 dBm (0.12 mW)
  txpower = 0

  # The virtual port, only the manufacturer or the person who wrote the board
  # config can tell you what it will be for which interface
  vport = 1

  # Select spreading factor 5. Valid
  # range is 5 through 12, with 5 
  # being the fastest and 12 having
  # the longest range.
  spreadingfactor =        5

  # Select coding rate 5. Valid range
  # is 5 throough 8, with 5 being the
  # fastest, and 8 the longest range.
  codingrate = 5

  # It is possible to limit the airtime
  # utilisation of an RNode by using the
  # following two configuration options.
  # The short-term limit is applied in a
  # window of approximately 15 seconds,
  # and the long-term limit is enforced
  # over a rolling 60 minute window. Both
  # options are specified in percent.

  # airtime_limit_long = 100
  # airtime_limit_short = 100

  [[[LOWDATARATE]]]
  # The type of modem, generally this will be SX126X, SX127X or SX128X
  type = SX126X
  # Subinterfaces can be enabled and disabled in of themselves
  interface_enabled = True

  # Set frequency to 865.6 MHz
  frequency = 865600000

  # The virtual port, only the manufacturer or the person who wrote the board
  # config can tell you what it will be for which interface
  vport = 0

  # Set LoRa bandwidth to 125 KHz
  bandwidth = 125000

  # Set TX power to 0 dBm (0.12 mW)
  txpower = 0

  # Select spreading factor 5. Valid
  # range is 5 through 12, with 5 
  # being the fastest and 12 having
  # the longest range.
  spreadingfactor = 5

  # Select coding rate 5. Valid range
  # is 5 throough 8, with 5 being the
  # fastest, and 8 the longest range.
  codingrate = 5

  # It is possible to limit the airtime
  # utilisation of an RNode by using the
  # following two configuration options.
  # The short-term limit is applied in a
  # window of approximately 15 seconds,
  # and the long-term limit is enforced
  # over a rolling 60 minute window. Both
  # options are specified in percent.

  # airtime_limit_long = 100
  # airtime_limit_short = 100

You may need to adjust these configuration values according the capabilities of your device.

You may notice that RNS takes slightly longer to connect to your device. This is perfectly normal, and eventually it will discover all the available subinterfaces and connect to them according to your configuration file.

Closing

This guide will be updated in the future once the RNodeMultiInterface interface has been integrated into the upstream repo operated by Mark Qvist. But, in the meantime, TECHNOLOGY FOR FREEDOM.