Skip to main content
  1. Posts/

Advanced Lab: Bidirectional LoRa Communication for ARGOS/MARMOT Drones

Author
Virgola
AI & Cybersecurity Student @ University of Udine X University of Klagenfurt.
Go enthusiast & CTF player @ Madrhacks
Table of Contents

I am excited to present my MSc Advanced Lab project, where I extended the ARGOS/MARMOT drone platform with a bidirectional LoRa communication channel. This project built on my previous work in mesh-based drone coordination, now introducing a low-power, long-range out-of-band communication layer.

Project Overview
#

The Advanced Lab project focused on enhancing resilience and operational flexibility of the ARGOS/MARMOT system. Core components developed include:

  • LoRa Driver – Custom C driver for Raspberry Pi 3B+ with Dragino LoRa HAT, enabling bidirectional packet transmission over SPI.
  • Remote Control Client – CLI tool to issue commands such as shutdown and GPS queries to remote nodes.
  • Automated Deployment – Ansible workflow for provisioning, software deployment, and systemd service management across multiple nodes.

This architecture ensures control and monitoring capabilities even when Wi-Fi mesh connectivity is unavailable or unstable.


Technical Details
#

LoRa Driver
#

The driver bridges a TUN/TAP virtual interface with the LoRa module, exposing a standard network interface. Highlights:

  • Packet Headers & Fragmentation – Reliable reconstruction over half-duplex links
  • Checksum & Sequencing – Ensures data integrity
  • Remote Command Handling – CMD_SHUTDOWN, CMD_GPS_REQUEST, CMD_GPS_DATA
  • Logging & Telemetry – Systemd journal integration

It runs as a systemd service, with automatic startup and crash recovery.

Remote Control Client
#

The client communicates with the driver via a Unix datagram socket, supporting commands:

  • shutdown – Stop local service
  • remote_shutdown – Command remote nodes
  • gps_request / send_gps – Query or transmit GPS coordinates
  • status – Check node health

Designed for lightweight, scriptable control in controlled lab environments.

Deployment Automation
#

Automated deployment ensures repeatable, scalable setup:

  • Install dependencies (WiringPi, CMake, libcorrect)
  • Configure hardware and SPI interface
  • Compile and deploy driver and client binaries
  • Generate node-specific configurations
  • Manage systemd services for automatic startup

This reduces human error and downtime while supporting multi-node scalability.


Results
#

The system demonstrated functional bidirectional LoRa communication in real-world testing. Observed limitations include:

  • Packet loss due to half-duplex nature
  • Latency constraints for continuous BATMAN-adv integration
  • Opportunity to improve fragmentation and retransmission protocols

Despite these, the project created a robust out-of-band control channel to extend drone network resilience.


Future Directions
#

Potential enhancements:

  • Rust rewrite – safer memory handling and concurrency
  • Advanced packet protocol – adaptive fragmentation and loss mitigation
  • Enhanced logging and monitoring – real-time system health visibility

This MSc Advanced Lab project provided hands-on experience in embedded systems, networking, and distributed communications, building a foundation for scalable, fault-tolerant drone operations.

Related