FoundryNet / Error codes / MAVLink MAV_RESULT 2
MAVLink error code

MAV_RESULT 2 (2) — DENIED — command permanently denied

The command was understood and is supported, but the vehicle refuses it in its current state. Retrying without changing state will not help.

Start free All protocols

Diagnosis

When you hit this


Resolution

How to fix it

  1. Read the STATUSTEXT messages
    The vehicle almost always explains a denial in STATUSTEXT. That message names the failing pre-arm check; the MAV_RESULT alone does not.
  2. Fix the state, do not retry
    DENIED is deterministic. Resolve the pre-arm condition first.
  3. Check mode prerequisites
    Position-holding modes need a position estimate. Without one, the mode change is denied rather than failed.

Normalization

What Forge does about it

This code is reported by the device itself, so it survives normalization as data. Forge maps the vendor's fault register into the canonical fields alarm_code and alarm_description (and alarm_severity where the vendor supplies one), so an agent reads the same three fields whether the fault came from a Haas, a SINUMERIK, or a Cat engine. Forge does not clear the fault — that is the controller's job.


Connect

Normalize MAVLink telemetry

One MCP endpoint serves every protocol adapter. 16,908 curated mappings, 366 canonical fields.

# normalize telemetry from MAVLink — and 13 other protocols
claude mcp add --transport http forge https://mcp.foundrynet.io/mcp \
  --header 'Authorization: Bearer YOUR_FORGE_KEY'
✓ forge connected — 32 tools available

Related

Keep reading

Other MAVLink codes: MAV_RESULT 3 MAV_RESULT 4 Heartbeat timeout

Other protocols: Modbus OPC UA MQTT / Sparkplug B FANUC FOCAS EtherNet/IP PROFINET / S7 BACnet/IP J1939 (CAN) MTConnect ROS 2 (DDS) SNMP HTTP / REST CSV ingest

All error codes · All OEMs · All protocols

Industrial AI fails at the data layer. The Machine Agent explains why, weekly. Read it →
Get the thesis behind this infrastructure — The Machine Agent, weekly.