Custom Flight Controller Guide
This page is intended for developers building custom firmware for flight controllers that integrate the Dronetag DRI module.
It explains what must be respected, implemented, and tested to achieve Remote ID compliance in both the USA (FAA Part 89) and the EU (Regulation 2019/945).
Purpose
- Define the MAVLink messages required for DRI integration.
- Show how to use the MAVLink Transport Sender as a reference generator.
- Clarify which parameters must be hardcoded in firmware and which can remain configurable.
- Provide guidance on testing and verification using available tools.
Minimal Setup
To begin development with the Custom Firmware Guide, you only need the following:
-
Dronetag DRI module
(recommended: U.FL antenna variant) -
Compatible antenna for the U.FL variant
A small testing antenna is included with the Dronetag DRI.
We recommend choosing a pre‑approved antenna from our approved list. -
Smartphone supporting BLE 5.0
Used for broadcast verification. -
USB to Serial Adapter with compatible cable
Dronetag DRI and a pixhawk compatible flight controller motherboard telemetry/serial port usually uses a JST‑GH connector (Pixhawk standard, typically 6‑pin).
Minimal Setup Diagrams
The following diagrams illustrate two typical ways to start development with the minimal setup:
-
Simulated Flight Controller on PC
Example connection using a USB–Serial adapter. This setup allows you to simulate the Flight Controller directly from your computer using MAVLink Transport Sender and verify communication with the Dronetag DRI.
-
Real Flight Controller
Example connection where the Dronetag DRI is connected to the Flight Controller’s serial interface (UART). This setup closely resembles the final deployment scenario.
This minimal setup is a good starting point for development and testing, as it already mirrors the final use case where the DRI communicates with the Flight Controller over a serial link.
Required MAVLink Messages
The flight controller must publish the following messages to the DRI:
- MAVLINK_MSG_ID_HEARTBEAT – system status.
- MAVLINK_MSG_ID_GPS_RAW_INT / MAVLINK_MSG_ID_GLOBAL_POSITION_INT – GNSS position.
- MAVLINK_MSG_ID_SCALED_PRESSURE / MAVLINK_MSG_ID_ALTITUDE – barometric altitude.
- MAVLINK_MSG_ID_SYSTEM_TIME – time reference.
- OpenDroneID set:
- OPEN_DRONE_ID_BASIC_ID,
- OPEN_DRONE_ID_LOCATION,
- OPEN_DRONE_ID_SYSTEM,
- OPEN_DRONE_ID_OPERATOR_ID,
- OPEN_DRONE_ID_ARM_STATUS.
These messages form the minimum set for Remote ID compliance.
Reference Implementation
We provide MAVLink Transport Sender as a reference generator:
- Publishes all required MAVLink and OpenDroneID messages.
- Demonstrates how values change with flight state (GNSS fix, operator ID, arming).
- Can be used as a functional example to replicate message generation in firmware.
- Developers may re‑implement the same logic using the official MAVLink library or custom serialization.
Hardcoded vs. Configurable Parameters
USA (FAA Part 89, ANSI/CTA‑2063‑A, ASTM F3411)
- Hardcoded in firmware:
- Remote ID serial number (OPEN_DRONE_ID_BASIC_ID).
- Must follow ICAO/ANSI/CTA‑2063‑A format.
- Each unit has a unique serial, registered in FAA DroneZone.
- Configurable:
- Operator location (OPEN_DRONE_ID_SYSTEM), sent from GCS with GNSS.
- Flight controller relays last known operator location if GCS link is lost.
EU (Regulation 2019/945, EN 4709‑002)
- Hardcoded in firmware:
- UAS serial number (OPEN_DRONE_ID_BASIC_ID).
- Must follow ICAO/ANSI/CTA‑2063‑A format.
- Stored in tamper‑resistant memory, not editable by user.
- Configurable:
- Operator ID (OPEN_DRONE_ID_OPERATOR_ID).
- Must be user‑settable via GCS or configuration interface.
- Failsafe:
- Drone must refuse takeoff if DRI or GNSS is not functional.
- Broadcast must continue even if GCS link is lost.
Testing and Verification
To confirm correct implementation:
- Use the Dronetag DroneScanner app on a BLE 5.0-capable device:
- Check that:
- Serial number is present and matches firmware.
- Operator ID is correctly transmitted (EU).
- Operator location is correctly relayed (USA).
- Location and altitude update smoothly.
- ARM_STATUS prevents takeoff if DRI or GNSS is missing.
- Optionally use BLE sniffing tools (e.g. nRF Sniffer) for deeper analysis.
Summary
By respecting the required MAVLink messages, hardcoding mandatory serial numbers, and exposing Operator ID or operator location as configurable where required, integrators can ensure their custom firmware works seamlessly with Dronetag DRI and meets Remote ID compliance requirements in both the USA and EU.
For legal references, see:
- FAA 14 CFR Part 89 and FAA AC 89‑2
- EU Regulation 2019/945 and harmonized standard EN 4709‑002