Warning! This method is now unsupported, and is kept here for historical reasons only! It may work on some systems, but in many new Linux distributions, it will fail slightly or spectacularly.

There is now a much better method described here, using the tncattach program.

The description about putting your RNodes into TNC mode is still valid, but everything else should be disregarded!

IP over LoRa? Absolutely!

While LoRa was not as such designed as an underlying physical layer for IP-based communications, it’s still possible to do exactly that.

A very handy feature of RNode is that you can attach it to your computer, Rasbperry Pi, or similar, as a generic network interface. It’s probably the easiest way to run IP, TCP, UDP and whatever you might fancy over LoRa. As such, you can run more or less any networked application over LoRa.

To do so, you will need a couple of packages, which don’t come standard on most systems, so use your package manager to install them:

sudo apt install ax25-apps ax25-tools

You should also use the RNode Config Utility to put your RNode into TNC mode. Here’s an example command:

./rnodeconf /dev/ttyUSB0 -T --freq 867000000 --bw 250000 --txp 14 --sf 7 --cr 5

The above setup yields an on-air bitrate of 10.9 kbps, and will prepare the device to be used as a generic network adapter.

After that, you’ll need to configure your RNode interface in /etc/ax25/axports. Add a line like the following. Replace MYCALL with the callsign of your station. If you’re using this over amateur radio frequencies, use your operator callsign. If you’re using private or unlicensed spectrum, use whatever makes sense to you.

The 1152000 is the serial baud rate, 484 is the MTU, and 5 is the packet window. You can experiment with different window sizes, but don’t change the MTU, it is intentionally set at that value (even though it might seem strange if you’re used to “normal” ethernet).

rnode	MYCALL	115200	484	5	RNode interface

After you’ve added the line to the configuration file, you’re ready to bring up the interface. Use a command like the following. Remember to change /dev/ttyUSB0 to whatever serial port the RNode is connected to. Also change the IP address to whatever you want it to be.

sudo kissattach /dev/ttyUSB0 rnode

If the kissattach command completes successfully, you should be able to see the configured interface with ifconfig.

$ ifconfig ax0
ax0: flags=67<up,broadcast,running>  mtu 484
        inet  netmask  broadcast
        ax25 OZ7TMD-4  txqueuelen 10  (AMPR AX.25)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

That’s it! You now have a wireless IP interface using LoRa modulation up and running!

9 thoughts on “IP over LoRa: Using RNode as a wireless NIC

  1. Is there an advantage to using ax.25 (kissatach) versus slip (slattach)? Does ax.25 provide some advantages over a high latency link?

    1. Yes, kissattach is for modems and devices that uses KISS framing over the serial line, as opposed to just pushing the ethernet packets down the line raw. So if the device uses KISS framing, you need to use kissattach instead of slattach. KISS framing has various advantages over using no framing, for example that packets can be properly delimited without resorting to inference of packet boundaries based on timing or other unreliable methods.

      1. Also, I will now highly recommend using the tncattach program instead of kissattach.

  2. Hey there namesake,

    I second Jon’s question above; for instance Reticulum Overview quotes 5.4 Kbps
    as default reference channel capacity. So if I have mild OC about 9.6 Kpbs bandwidths, how do I go about compiling needed parameters for rnodeconfigutil?
    Or does –bw Hz more or less equate for that? And how much do we, as users, need to understand (or concern ourselves with) –sf and/or –cf? Is there some table or example calculation with those parameters showing the channel capacity?

    (Btw, isn’t SLIP by its very name for IP packets, not Ethernet frames.)

Leave a Reply

Your email address will not be published. Required fields are marked *