<aside>

This is the long version.

The assembly manual's Configure ArduPilot step gives you the values on their own. This page is the fresh-configuration walkthrough: every parameter set by hand, with the reasoning.

Use it if you want to understand the setup, or if something is not behaving.

It covers the airframe setup only. About 30 minutes.

</aside>

<aside>

What you are building here

A 4+1 quadplane: four lift motors for vertical take-off and landing, one pusher motor for forward flight, two elevons for control. ArduPilot calls this a QuadPlane.

</aside>

<aside>

Propellers OFF for every step on this page.

You will be arming motors and running output tests on the bench. An 8" prop at hover throttle will take a finger off. Put them back on outdoors, after the checks pass.

</aside>

Step 1 - Flash ArduPilot onto your board

Almost every F405 and H7 wing board ships with Betaflight or INAV. You need to replace both the firmware and the bootloader.

<aside>

This is a one-way trip.

Once the ArduPilot bootloader is on the board, you cannot go back to Betaflight without a full DFU erase. Be sure before you flash.

</aside>

  1. Find your exact board on firmware.ardupilot.org . "F405" is a chip, not a board. MatekF405-Wing and SpeedyBeeF405WING are different targets.
  2. Download two files from that folder: arduplane_with_bl.hex (first flash) and arduplane.apj (every flash after).
  3. Put the board in DFU mode. Hold the BOOT button while you plug in USB, or short the BOOT pads.
  4. Open Betaflight Configurator → Firmware Flasher. Select DFU in the top right. Use Load Firmware [Local] and pick the _with_bl.hex file. Flash it.
  5. Unplug, plug back in. The board now enumerates as an ArduPilot device.
  6. Open Mission Planner → SETUP → Install Firmware, and from here on load the .apj file for updates.

<aside>

F405 boards have 1MB of flash, and that is tight.

Some ArduPilot features are trimmed out on F405 targets to make the build fit. Everything in this guide fits. H7 boards have more room and are not affected. If a parameter you expect is missing, check your board's page on the ArduPilot wiki before assuming something went wrong.

</aside>

Step 2 - Tell ArduPilot it is a QuadPlane

Go to CONFIG → Full Parameter List. Set Q_ENABLE to 1, click Write Params, then reboot.

<aside>

Reboot before you carry on.

The rest of the Q_ parameters do not exist until Q_ENABLE is written and the board has restarted. Write, reboot, then hit Refresh Params. If you cannot find Q_FRAME_CLASS, this is why.

</aside>

Now set the frame:

Parameter Value What it does
Q_FRAME_CLASS 1 Quad. Four lift motors.
Q_FRAME_TYPE 1 X layout. TerraHawk's lift motors sit at four corners, so this is X.
Q_M_PWM_TYPE 5 (DShot300) Digital ESC protocol. No throttle calibration needed, and it survives the long signal runs out to the VTOL spars. Use 6 (DShot600) only if your ESC sits close to the board. Use 0 (Normal) for old analog ESCs, and calibrate them by hand.

<aside>

Pick this one from the dropdown, not by typing a number.

Mission Planner shows the protocol names. Choose the name and let it fill in the value. That way you cannot get bitten if the numbering shifts between firmware versions.

</aside>

Step 3 - Assign the outputs