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_IDin 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
- Parameter Definitions:
libraries/AP_OpenDroneID/AP_OpenDroneID.cpp
How To: Configure Remote ID Parameters
1. Enable the System
- Set DID_ENABLE to
1. - 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) or2(Copter). - Set DID_UAS_ID_TYPE:
1(Serial Number) or2(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.
- Set DID_UA_TYPE:
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.