MAVLINKHUD

Troubleshooting & Compliance

Executive Summary

Remote ID adds a layer of complexity to the arming process. Because it is a legal requirement in many jurisdictions, ArduPilot treats it as a critical safety system by default. Most issues stem from Hardware Connection or Operator Location data.

Theory & Concepts

1. The Arming Check

When DID_ENABLE is true and DID_OPTIONS (bit 0) is set to EnforceArming, ArduPilot will prevent arming if the Remote ID system is unhealthy.

  • Health Criteria:
    • Hardware connected and talking.
    • Drone GPS Location valid (3D Fix).
    • Operator Location valid (received from GCS).
    • Basic ID configured (UA Type, ID Type, Serial Number).

Codebase Investigation

1. Arming Checks: AP_Arming::opendroneid_checks()

Located in libraries/AP_Arming/AP_Arming.cpp.

  • Calls AP_OpenDroneID::pre_arm_check.
  • Common Error: "RemoteID: System not available".
    • Cause: The GCS hasn't sent the Operator Location packet (OPEN_DRONE_ID_SYSTEM_UPDATE).
    • Fix: Ensure your phone/tablet has GPS enabled and is connected to the drone.

2. Hardware Monitoring

Located in libraries/AP_OpenDroneID/AP_OpenDroneID.cpp.

  • Error: "ODID: lost transmitter".
    • Cause: No heartbeat from the RID module for > 5 seconds.
    • Fix: Check wiring (RX/TX swapped?), Baud rate (SERIALx_BAUD), or CAN termination.

How To: Troubleshoot Common Errors

1. "RemoteID: System not available"

  • Meaning: ArduPilot doesn't know where you (the pilot) are.
  • Fix: Connect Mission Planner or QGC. Wait for the GCS to get a GPS lock on your computer/phone. The GCS automatically sends this to the drone.

2. "UA_TYPE required in BasicID"

  • Meaning: You haven't told ArduPilot what kind of drone this is.
  • Fix: Set DID_UA_TYPE to 2 (Multicopter) or 1 (Aeroplane).

3. "RemoteID: Arm Status Failure"

  • Meaning: The Remote ID hardware itself is reporting an internal error (e.g., its own GPS is bad, or internal self-test failed).
  • Fix: Check the module's LEDs/documentation.

Compliance Checklist

  1. Hardware: Module installed and powered.
  2. Config: DID_ENABLE=1, DID_CANDRIVER or DID_MAVPORT set.
  3. Identity: DID_UAS_ID matches your label.
  4. GCS: Connected and providing Operator Location.
  5. Test: Use the OpenDroneID Android app to verify you are broadcasting before takeoff.