Link Search Menu Expand Document

Connecting to QGC


VOXL has the capability to connect to and send camera streams to QGC (QGroundControl).

Connecting to QGC

There are 2 main options: over WiFi, or over 4G/5G.

Connecting to QGC over WiFi

1) Ensure voxl-px4 is running.

Run voxl-inspect-services to confirm that voxl-px4 is running. If it’s not running, it can be enabled to run on boot using systemctl enable voxl-px4.

2) Network Layout

VOXL and the host computer running QGC must be on the same network for them to connect. Connect VOXL to this chosen network in station mode.

me@mylaptop:~/$ voxl-wifi station <SSID> <Password>

Make sure to reboot for this change to go into effect:

me@mylaptop:~/$ adb reboot && adb wait-for-device

If voxl-px4 is running and both devices are connected to the network, then the VOXL should automatically detect the host PC running QGC and connect.

Connecting to QGC over 4G or 5G

Note: this requires a Modem to be attached to your VOXL.

1) Connecting to a network

Follow the instructions for your specific Modem to connect VOXL to a 4G or 5G network.

2) Connect QGC to a 4G or 5G network

When both drone and GCS are connected to LTE networks, they will each be assigned IP addresses that are private to the carrier network. This prevents the drone from directly connecting to the GCS since their IP addresses are not visible to each other over the internet.

To get around this, we use a VPN. This diagram below shows how the VPN solution works. In this example a server is allocated with a static IP address, Once the drone has connected to the AT&T network, it obtains the IP address 10.47.x.y and the GCS, once connected, obtains the address 10.47.x.z. With the VPN server software running on the cloud server and VPN client software on both the drone and the GCS, the devices can now connect and get VPN IP address assignments. In this diagram, the drone is assigned and the GCS is assigned The drone can now communicate directly to the GCS using the IP address.

LTE data flow

We prefer to use Tailscale as our VPN provider. Tailscale is extremely simple, fast, and straight-forward to setup. It’s free tier is a solid choice for robotics use cases. But, if you prefer to host your own server, you can do so with Google Cloud Platform, Amazon Web Services, Microsoft Azure, etc. Ubuntu is our preferred OS for our servers. Our self-hosted VPN server is setup using the OpenVPN software package.

It is desirable for the drone and the GCS to always get the same IP address when connecting to the VPN. This is possible by assigning each separate network endpoint a unique security certificate. When each endpoint connects using it’s certificate it can be configured to receive the same address every time.

In order to install the Tailscale client on VOXL 2, follow these instructions: Installing Tailscale on Ubuntu 18.04.

If all goes well, you should get a connected status in QGC.

Streaming Video to QGC


Only follow this section if your VOXL has camera inputs. In addition, your VOXL must be connected to QGC as described above, or QGC will ignore any cameras attempting to connect.


mavlink-camera-manager advertises camera names and RTSP stream URIs using the Mavlink camera protocol for use in QGC. This allows you to, in QGC, use the camera selector dropdown in the camera controls to choose an RTSP stream by camera name.

1) Setup camera RTSP streams

Follow the “Configuration” section of the VOXL Streamer guide.

Simply run mavlink-camera-manager in the command line with the appropriate arguments.

These are all the allowed arguments:

voxl2:/$ mavlink-camera-manager -h

Usage: mavlink-camera-manager <options>
-h     print this help message
-d     Enable debug messages
-g     GCS IP address
-r     RTSP URI
-i     camera id (default is 0)
-n     camera name (default is "Camera X" where X is camera id)

The following is an example of advertising 3 camera names and video streams:

voxl2:/$ mavlink-camera-manager -g -r rtsp:// -n hires
voxl2:/$ mavlink-camera-manager -g -r rtsp:// -i 1 -n stereo
voxl2:/$ mavlink-camera-manager -g -r rtsp:// -i 2 -n tracking

After running these 3 commands, QGC’s camera selector dropdown in the camera controls should show “hires”, “stereo”, and “tracking” as options.


Next: Building Applications