Rnod Reticulum

Rnod Reticulum

RNode as LoRa TNC

If there is something that gives me a high amount of dopamine rush, then it is when I see someting exciting like RNode and the hardware ready on my bench and the installation, configuration and testing work flawlessly.

You don’t need to order new hardware. You don’t have to wait days for delivery. It just works!

This is what excatly happend. I setup in less then ten minutes two LilyGo TTGO T-Beam v1.1 with the RNode firmware and configured them to operate in TNC Mode. One TNC modem was connected to my test laptop (Side A) and the other one to my newly setup remote SDR server (Side B).7

Here is a list of other supported hardware:

My server has also a RTL-SDR USB dongle plugged in. rtl_tcp is running on port 1234. This makes connecting Gqrx remotely very easy. I can monitor the radio spectrum from far away.

Install RNode firmware

Installation RNode is very straight forward. All you need is python3 and python3-pip.

$ sudo apt install python3-pip -y  # install python-pip
$ pip install rns                  # install rnodeconf

After installing rns successfully, we can start the rnodeconf installer.

$ rnodeconf --autoinstall          # install firmware on supported device

The installer will ask you a couple of questions about your device. It will download and install the firmware automatically. Don’t forget to repeat the same process for the second device!

Assuming the device is named /dev/ttyUSB0, we can start configuring it into TNC Mode with -T. The frequency can be set with --freq and the bandwidth with --bw.

$ rnodeconf /dev/ttyUSB0 -T --freq 868000000 --bw 125000 --txp 2 --sf 7 --cr 5

We use the same command and settings on the second device.

RNode as TNC for Linux (Point-to-Point)

To bind the TNC to our linux system as a network interface tnc0, we need to download and compile tncattach. Remember we need to do that on both sides.

$ sudo apt install build-essential
$ git clone https://github.com/markqvist/tncattach.git
$ cd tncattach
$ make
$ sudo make install

On the Side A:

$ # first install tncattach
$ sudo tncattach /dev/ttyUSB0 115200 -d --noipv6 --noup --mtu 276
$ sudo ifconfig tnc0 10.0.0.1 pointopoint 10.0.0.2

On the Side B:

$ # first install tncattach
$ sudo tncattach /dev/ttyUSB0 115200 -d --noipv6 --noup --mtu 276
$ sudo ifconfig tnc0 10.0.0.2 pointopoint 10.0.0.1

If everything worked well you can check with ifconfig tnc0 if the network is up and running. Let’s make a test by pinging form Side A (10.0.0.1) to Side B (10.0.0.2):

$ ping -c 5 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=437 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=443 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=445 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=442 ms
64 bytes from 10.0.0.2: icmp_seq=5 ttl=64 time=451 ms

--- 10.0.0.2 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 436.584/443.679/451.235/4.738 ms

How about a nmap port scan?

$ nmap -sV -p22,80,1234 10.0.0.2
Starting Nmap 7.80 ( https://nmap.org ) at 2023-05-23 06:27 EDT
Nmap scan report for 10.0.0.2
Host is up (0.72s latency).

PORT     STATE  SERVICE VERSION
22/tcp   open   ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp   open   http    nginx 1.18.0 (Ubuntu)
1234/tcp open   tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 46.16 seconds

Port 80 is open. Let’s test curl.

$ curl http://10.0.0.2
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>