Skip to content

Payload Control

Use Payload Control to switch payloads on and off from a mission plan (e.g. on arrival at a waypoint) or by hand. This feature can control the LOS radio, BLOS satellite link, or also an external payload connected to Horizon’s GPIO. Payload Control lets a mission plan or operator switch the aircraft’s You set it up in three stages: map each piece of equipment to an output index in Horizon UI, configure a matching relay on the autopilot, then actuate it from Mission Planner.

What you’ll need

  • Horizon UI 1.15.0 or later, with the Horizon unit connected over USB (see Configure Horizon).
  • Autopilot firmware — ArduPilot v4.5.0+ or PX4 v1.14.0+. Equipment-channel control does not work on older versions.
  • Mission Planner (or an equivalent ground control application, or “GCS”) connected to the flight controller.
  • The flight controller’s serial port already configured for the Horizon link (see Flight Controller Configuration).

Indexing

Each equipment channel is identified by a number in three places, and the number is not the same in all three. Get this wrong and the relay UI will appear to work while the payload never switches.

WhereWhat you enterValue to use
Horizon UI → Output IndexThe index you assign to a channelyour choice, 1–64
Autopilot → RELAYx parameterThe relay you configureOutput Index + 1
Mission plan → DO_SET_RELAYThe relay a plan actuatesthe Output Index
Direct actuation → Servo/Relay tabThe relay you toggle by handRELAYx = Output Index + 1

Map equipment to output indices in Horizon UI

The Advanced Settings modal in Connected Device holds both the serial-link settings and the equipment map. (This is separate from Preferences, which sets the GCS connection — see the Horizon UI Tour.)

  1. In Connected Device with the unit attached, select Advanced Settings.
  2. Turn on MAVLink Equipment Control. While it is off, no equipment mapping is written to the Horizon firmware during a settings sync.
  3. For each channel you want to control — BLOS (Iridium), LOS Radio (LoRa mesh), and IO Payload (GPIO) — set an Output Index and enable its toggle.
  4. Select Configure Aircraft to write the mapping to the unit.

Note the index you assign to each channel — you will use it, and its + 1 relay number, on the autopilot.

The Advanced Settings button sits at the top right of Connected Device.

The Advanced Settings button on the Connected Device screen

Each channel — BLOS, LOS Radio, and IO Payload — takes an Output Index and an Enabled toggle.

MAVLink Equipment Control with output indices assigned

The Serial Link section of the same Advanced Settings modal sets how the Horizon unit talks to the flight controller.

  • Baudrate — must match the autopilot telemetry port; see Flight Controller Configuration (SERIAL1_BAUD) for the value the standard Horizon link requires.
  • Hardware Flow Control — RTS/CTS on the flight-controller serial connection. This is the setting that matters for payload control — see below.

The Baudrate dropdown lists the standard rates; select the one that matches the autopilot telemetry port.

The Baudrate dropdown in Advanced Settings

With hardware flow control on, the IO Payload row is greyed out and its toggle is forced off.

IO Payload unavailable while hardware flow control is enabled

Configure the autopilot relay (ArduPilot)

For each equipment channel you mapped in Horizon UI, configure the matching relay on the autopilot. Remember the relay number is the Output Index + 1.

  1. Identify a physical output pin on the flight controller that is available for assignment (see the pin tables in C.5).

  2. In Mission Planner, open Config → Full Parameter List (or Full Parameter Tree).

  3. Set the chosen output’s SERVOn_FUNCTION parameter to -1 to put the channel in GPIO mode. Leave any TRIM, MIN, or MAX parameters for that channel unchanged.

  4. Configure the logical relay (x = Horizon UI Output Index + 1):

    ParameterValue
    RELAYx_FUNCTION1
    RELAYx_PIN(pin value from C.5)
    RELAYx_DEFAULT0
    RELAYx_INVERTED0
  5. Write the parameters to the flight controller and reboot the autopilot.

  6. Verify from Mission Planner before relying on it in a plan.

In the Full Parameter Tree, each RELAYx shows its _FUNCTION, _PIN, and _DEFAULT. The _PIN dropdown lists every selectable output — the numeric values in the next section correspond to these entries.

Mission Planner — RELAY parameters and the pin dropdown

Relay pin values by autopilot board

Use the numeric RELAYx_PIN value for the output pin you identified in C.4. The configuration is conceptually identical across boards, but the available pins differ — confirm the values for any board not listed here against its documentation.

Cube Orange / Pixhawk family

Prefer an AUX output when one is available; otherwise use an unused MAIN output.

OutputArduPilot channelRequired settingRELAYx_PIN
AUX OUT 1SERVO9SERVO9_FUNCTION = -150
AUX OUT 2SERVO10SERVO10_FUNCTION = -151
AUX OUT 3SERVO11SERVO11_FUNCTION = -152
AUX OUT 4SERVO12SERVO12_FUNCTION = -153
AUX OUT 5SERVO13SERVO13_FUNCTION = -154
AUX OUT 6SERVO14SERVO14_FUNCTION = -155
MAIN OUT 1SERVO1SERVO1_FUNCTION = -1101
MAIN OUT 2SERVO2SERVO2_FUNCTION = -1102
MAIN OUT 3SERVO3SERVO3_FUNCTION = -1103
MAIN OUT 4SERVO4SERVO4_FUNCTION = -1104
MAIN OUT 5SERVO5SERVO5_FUNCTION = -1105
MAIN OUT 6SERVO6SERVO6_FUNCTION = -1106
MAIN OUT 7SERVO7SERVO7_FUNCTION = -1107
MAIN OUT 8SERVO8SERVO8_FUNCTION = -1108

ARKV6X (no-IOMCU firmware — built without the separate I/O co-processor)

Mission Planner’s labels for 50–57 may be generic or incomplete — use the numeric values below.

OutputArduPilot channelRequired settingRELAYx_PIN
PWM 1SERVO1SERVO1_FUNCTION = -150
PWM 2SERVO2SERVO2_FUNCTION = -151
PWM 3SERVO3SERVO3_FUNCTION = -152
PWM 4SERVO4SERVO4_FUNCTION = -153
PWM 5SERVO5SERVO5_FUNCTION = -154
PWM 6SERVO6SERVO6_FUNCTION = -155
PWM 7SERVO7SERVO7_FUNCTION = -156
PWM 8SERVO8SERVO8_FUNCTION = -157

Verify the relay from Mission Planner

Before trusting a relay to a mission plan, confirm it actually switches the payload — from the Servo/Relay tab on Mission Planner’s Data screen, while connected to the flight controller.

Each configured relay appears here as Relay x — using the RELAYx value (Output Index + 1), not the Output Index itself.

Mission Planner — Servo/Relay tab

  • Low commands the relay low (the box turns red) — the payload’s On state.
  • High commands the relay high (the box turns green) — the payload’s Off state.
  • Toggle sends Low, High, Low in sequence; we do not recommend using this setting.

Actuate a payload from a mission plan (proximity trigger)

After confirming the configured relay switches the payload correctly, you can embed the actuation in a mission plan. This enables operations like disabling the LOS radio on entry to a defined area to reduce RF signature.

Relay state: 1 = Off, 0 = On. (Each equipment channel’s default output is treated as On.)

  1. In Mission Planner, plan the mission up to the waypoint N where the change should take effect. Set that waypoint’s lat / long / alt to the trigger location.
  2. Immediately after waypoint N, insert a new mission item and set its Command to DO_SET_RELAY.
  3. Set Relay No to the Horizon UI Output Index for the equipment — not the RELAYx value. Set the relay value to 1 to switch the payload off, or 0 to switch it on.

DO_SET_RELAY will fire only after the preceding waypoint is reached; this enables automatic change based on location or altitude.

Troubleshooting

The relay appears configured but the payload doesn’t respond:

  1. Confirm the output pin is a real, unoccupied output — not one already wired to a servo, ESC, or other actuator.
  2. Confirm the Output Index is unique per channel in Horizon UI — BLOS, LOS Radio, and IO Payload each need their own.
  3. Confirm Hardware Flow Control isn’t silently disabling the IO Payload channel.
  4. Confirm the autopilot parameters were written and the autopilot rebooted.
  5. Re-verify from the Servo/Relay tab before suspecting the mission plan itself.