MAVLINKHUD

ArduPilot Configuration

Executive Summary

Configuring Remote ID involves enabling the subsystem (DID_ENABLE), selecting the communication backend (Serial or CAN), and verifying the persistent "Tamper-Proof" ID parameters.

Unlike standard parameters, the UAS ID is often stored in a secure, persistent memory area that survives parameter resets.

Theory & Concepts

1. The Subsystem (AP_OpenDroneID)

Enabling DID_ENABLE allocates the AP_OpenDroneID singleton. This orchestrates the data flow:

  • Fetches GPS/Baro data.
  • Formats it into ODID packets.
  • Routes it to the selected output driver.

2. Persistent Parameters

To comply with "Tamper Resistance" requirements, the drone's unique ID (UAS_ID) is often stored in the bootloader's persistent storage, not the main EEPROM.

  • Implication: You might not see DID_UAS_ID in the full parameter list if it hasn't been set yet.
  • Mechanism: ArduPilot checks hal.util->get_persistent_param_by_name() on boot.

Codebase Investigation

1. Persistent Loading: load_UAS_ID_from_persistent_memory()

Located in libraries/AP_OpenDroneID/AP_OpenDroneID.cpp.

  • It looks for keys: "DID_UAS_ID", "DID_UAS_ID_TYPE", "DID_UA_TYPE".
  • If found, it populates the Basic ID message automatically.

2. Parameter Table

  • DID_ENABLE: Master switch.
  • DID_MAVPORT: Serial port selection (-1 to disable).
  • DID_CANDRIVER: DroneCAN driver index (0 to disable).
  • DID_OPTIONS: Bitmask for enforcement (e.g., prevent arming if ID fails).

Source Code Reference

How To: Configure Remote ID Parameters

1. Enable the System

  1. Set DID_ENABLE to 1.
  2. Reboot the Flight Controller.

2. Set the ID (The Tricky Part)

If your module is "Standard Remote ID" (integrated), you must provide the ID.

  • Option A (Mavlink): Use Mission Planner's "Remote ID" tab (if available).
  • Option B (Parameters):
    • Set DID_UA_TYPE: 1 (Aeroplane) or 2 (Copter).
    • Set DID_UAS_ID_TYPE: 1 (Serial Number) or 2 (CAA ID).
    • Set DID_UAS_ID: The actual string (e.g., 1596328479815).
    • Note: These might need to be set via the "Full Parameter Tree" or a script if they are hidden.

3. Operator ID

This is not persistent on the drone (usually). It is injected by the GCS (Ground Control Station) upon connection.

  • Mission Planner: Config/Tuning -> User Info -> Operator ID.
  • QGroundControl: Application Settings -> General -> Remote ID.
  • Without this step, you will likely get a "Remote ID: System not available" arming error.