Coding

Want to connect two ground control stations (GCS) to a single drone? Or trying to control multiple drones from a single GCS? The RFD900x enables this with a multipoint capability — but getting it set up and working is not straightforward. This post, we show you how to connect two Mission Planner nodes to a single MAVLink-based vehicle (in our case a PixHawk controller running ArduPlane).

The RFD900x is a 900MHz, ISM band radio modem covering the 902 – 928 MHz frequency band. It is designed for long-range serial communications applications. In particular, it popular for telemetry on MAVLink based drones. The most common application is connecting your drone to a ground control station (GCS).

Each radio mode is enabled by loading firmware on the box. Currently, there are three firmware types available: SiK compatible (Peer to peer), asynchronous mesh and multipoint.

Unfortunately, the mesh and multipoint modes are poorly documented and are unsupported by the RFDesigns Radio Tools. The predecessor radio the RFD900+ also supports multipoint mode. However, the two firmware (and radios) are similar but incompatible. This creates more confusion when forum posts or documentation generally refer to the RFD900. This article tries to clear up some confusion and serve as a guide to configure the RFD900x with multiple ground stations or multiple drones.

Peer-to-Peer (SiK)

The factory default is the SiK compatible firmware that enables peer-to-peer communication. This firmware is well supported and documented. Most MAVLink-based software packages (e.g. Mission Planner) offer in-application configuration support for SiK radios.

Asynchronous Mesh

The manual describes the asynchronous mesh mode as:

The asynchronous mesh firmware offers a straight forward communication option that allows the user to quickly transmit and receive data between two or more nodes. If all the nodes are within range and have compatible parameters, communication between them will succeed.

All nodes are equal with no master node to set timing. This means data collisions and retries with variable latency. For Mavlink telemetry this does not work well. In our tests, we had 20% of bad MAVLink packets.The burst timing causes some problems for our toolset. In particular, the Mission Planner tended to time out when downloading params. Mission Planner expects the latency between packets to be consistent and the nature of the asynchronous mode caused lots of problems.

The mesh firmware includes a store and forward capability to extend the range of radios, but with other limitations we did not explore this capability.

Multipoint Mode

In the multipoint mode, we successfully connected two GCS nodes to a single ArduPilot based drone.

Loading the RFD900x Multipoint Firmware

Download the firmware from RFDesigns. We used RFD900x-MultipointRelease_V2.75MP.bin.

Setting up your RFD900x Network

The radio network requires one master radio and the rest are nodes on the network. The remaining of the nodes are configured the same — except for the node id which is unique per radio.

For larger networks, it is easy to mess up one parameter while configuring the RFD900x. We created a python script to help speed up the process. It uses a config file to load all the radio parameters.

To load the parameters manually, use serial terminal application and connect to the radio. The default serial port settings are as follows:

57600 baud rate

No parity

8 data bits

1 stop bit

To enter command mode hit “+++” and wait. The radio should respond with “[1] OK”. The number inside the bracket is the node id of the radio. It will change as you configure each radio to be different.

Once in command mode, you are ready to set the radio parameters. The screenshot below shows how to verify the firmware version and view the other radio settings.

Frequency Range and Power Output

The legal frequency limits and power output vary by region. You are responsible to make sure you use the frequency and power limits for your locale. The settings in this document were used in the United States.

Setting up the Master

The master node is always 1.

We set “S22:MASTERBACKUP” to 1 for our radios to work. We did not find any documentation on this setting!

Finally, set the number of nodes in the network. AT&M0=0,3 where 3 is the number of radios you are using.

ATS18=1 [1] OKATS22=1[1] OKAT&M0=0,3[1] OK

Network Settings

We found this setup the most stable. We tried many other settings including a faster baud rate and with encryption enabled, but those settings resulted in a higher error rate at the MAVLink packet level.

Troubleshooting Tips

When upgrading from the RFD900+ to the RFD900x, we made the mistake of trying to integrate directly on the drone. This wasted lots of time changing settings while trying to debug with a PixHawk and ArduPilot in the loop.

Start simple

First, connect all the radios in your network to a single computer. We used a powered USB hub and several USB FTDI cables.Use a serial terminal application and setup the simplest case:

disable encryption: ATS15=0

no MAVLink encoding: ATS6=0

broadcast to everyone: ATS19=255

Once you can send text and see it on all the screens you have a multipoint network working!

Then enable MAVLink framing and other options as desired.

Happy telemetry trails!

Orange Robot is based in Austin, Texas. We are focused building new technologies to improve the world. We provide mobile app development and full-stack web application design and build services.