The board's output co-processor is not working properly
What ArduPilot says:
- PreArm: IOMCU is unhealthy
Pixhawk and Cube type boards have a second processor, the IOMCU, which drives the MAIN outputs and reads the receiver and the safety button. ArduPilot found it faulty: its firmware does not match, messages to it failed, it restarted by itself, or more than about 1 status read in 128 went wrong. What it drives cannot be trusted, so arming is refused.
What to do, most likely first
The IOMCU restarted or lost contact after start-up; the fault is remembered until the next start.
CheckDid it appear after servos or other loads were plugged in, or after a dip in the supply?
FixPower the flight controller off and on. If it comes back, look at the 5 V supply and at anything that loads it.
New firmware was just loaded and the IOMCU still has the old one.
FixPower off and on and leave it alone for a minute: at start-up ArduPilot compares the IOMCU's firmware with its own and rewrites it when they differ.
The IOMCU or its link to the main processor is damaged.
FixIf a power cycle and a fresh firmware load do not clear it, the board needs repair. Do not fly it.
Parameters to look at
| Parameter | What it is |
|---|---|
BRD_IO_ENABLE | Enable IO co-processor |
BRD_IO_DSHOT | Load DShot FW on IO |
Where to do it:Firmware Inspector
The code that sends it
PreArm: IOMCU is unhealthy
libraries/AP_Arming/AP_Arming.cpp AP_Arming::servo_checks() · Open in ArduPilot Copter-4.7.1