I recently purchased a selection of cheap LTE dongles that contain the MSM8916 chip (AKA Snapdragon 410). These are available from the usual east asian websites, or for slightly higher prices on local e commerce sites.
They provide a similar compute performance to a raspberry pi zero in a very similar form factor. the primary
Here is an overview of the specs:
I want the companion computer to achieve several things:
- Forward MavLink messages between the ground station and the Flight Controller (FC), securely, either via either wifi (direct) or via LTE.
- Serve as a platform for onboard logic to add higher level functionality to the drone.
- It may be possible to enable the GNSS (GPS) receiver onboard the modem. this could then be used as a backup location source for the FC
There are a couple options for connecting to the FC: directly over serial; if the serial port on the dongle can be used for a purpose other than the default serial console then this would be the most direct and easiest solution. As an alternative to this the dongle support both gadget and host USB modes which could be used to connect to the FC over USB. this would open up other options for USB devices to be used on the drone, such as a webcam.
I initially purchased a single stick which tunred out to be a UZ801 3.0 after flashing it with debian and running some benchmarks and failing to get the modem to connect to LTE I decided to purchase a few more to play with and hopefully find one that “Just Works ™”. I ordered a pair of dongles like the first, with one being the same revision as the first and the other a slighly later model 3.2 this is missing the eSIM chip that is present on th earlier version.
I also bought a version that includes a screen, I am hoping that this too may be possible to use in linux at some point. I am not entirely sure what the the model of display is.
Feature\Stick | Black-1 | Black-2 | White-1 | MF880s |
Model | UZ801 3.0 | UZ801 3.2 | UZ801 3.0 | MF880S |
Debian | Yes (buster & bookworm) | Yes (Bookworm) | still running stock firmware | Not tried |
WiFi | Yes | Yes | Yes | Yes |
LTE | No- Sim enabled, modem enabled, error on registration | Yes, fully functional | Yes (in stock firmware) | Yes (in stock firmware) |
eSIM | N/A | Not Tried | N/A | Not Tried |
GNSS | Not Tried | Not Tried | Not Tried | Not Tried |
USB HOST Mode | Not Tried | Not Tried | Not Tried | Not Tried |
USB Gadgets | Ethernet (default) | Ethernet (default) | ||
HW UART (other than serial console) | Yes, SystemD script to disable on successful boot | Yes, SystemD script to disable on successful boot | Yes | |
Security
Once I had the LTE modem working on the second stick I tried installing wireguard. I already have a wireguard network and I thought that adding the stick to this existing private network would be the simplest method to achieve some level of privacy.
Unfortunately although wireguard installs fine through sudo apt install wireguard
the required kernel module was not compiled in, more specifically it was compiled as a module and I was not able to enable it.
A (temporary) fix for this is to install wireguard-go, this is a userspace implementation of the wireguard protocol and plays nice with wg-quick
and wireguard
commands installed.
I also configured several WiFi networks so that regardless of which building I am in the stick connects to a known network if possible. it also automatically connects to the wireguard network and displays its status via the blue LED on the stick (rapid flashing for internet connected, slow flashing for wireguard connected). So now I know immediately whether the stick is available on a known private IP.
Update 25/12/24
I have been using some tools from the repo below to configure the system on boot, I have tweaked some values to better suit my needs.
https://github.com/hyx0329/openstick-failsafe-guard
I now have it reconfigure the serial port from a console to the MAVLink port once the succesfull boot has been confirmed.
Update 2025/01/19 (Getting into EDL mode)
There are two methods of getting into EDL mode once the stick as been flashed with debian:
1. Hold the button on the stick for 5 seconds while plugging in. This gets you to fastboot. Then on the host use the command fastboot oem reboot-edl
.
2. the other is to short two pads on the stick itself while plugging the device in. This method is fiddly but more reliable if you have really messed up
When trying to restore a backup using the EDL tool. I have encountered an issue where the tool gets stuck with the last message being main - Device detected :)
. Rebooting the device into EDL again fixed this issue for me.