Servos

The Servos tab assigns a function to each auxiliary output. It is a single page — the output map, then the metadata-backed output settings that extend it — with no sub-tabs.

Note

Relays, the notification LEDs and buzzer, the gimbal and the rangefinder/optical-flow surfaces used to be sub-tabs here. They are hardware wired to the board rather than servo setup, so they moved to Peripherals & Gimbal, and Servos lost its task strip along with them. Relays are documented below for reference; they are configured on the Peripherals tab.

Servo output functions

The servo mapping table shows a row for every output channel the flight controller reports, with columns Channel · Function · Min · Trim · Max · Live · Rev · Kind. The Function cell assigns SERVOn_FUNCTION — what that physical output drives. ArduPilot offers a long list; common choices include Disabled, RCPassThru, motor outputs (Motor 1Motor 12*+), control surfaces (*Aileron, Elevator, Rudder, Elevon Left/Right, VTail Left/Right), gimbal axes (Mount Pitch/Roll/Yaw), Camera Trigger, Gripper, the Script 1Script 16 outputs a Lua script drives, and the NeoPixel 1NeoPixel 4 LED-strip functions.

Each channel also exposes its PWM endpoints and direction:

  • SERVOn_MIN / SERVOn_TRIM / SERVOn_MAX — the output range and centre in microseconds (800–2200 µs).

  • SERVOn_REVERSED — a Rev checkbox that flips the output direction.

Live output values

The Live column shows what the flight controller is actually driving each output to, in microseconds, updated about ten times a second. A bar beside the number shows where that value sits between the channel’s own SERVOn_MIN and SERVOn_MAX, and turns amber when the output is at or past one of them.

This answers a question the rest of the table cannot. SERVOn_FUNCTION says what an output is for, and the range fields say what it is allowed to do; neither says what it is doing right now. When a surface will not move and the configuration looks correct, this is where the answer usually is — either the output is not being driven at all, or it is being driven hard into an endpoint.

An output reading idle is not a low PWM value: it means the firmware is not driving that channel at all. Outputs a board does not use report this rather than a number.

Note

The readout needs the vehicle to be streaming SERVO_OUTPUT_RAW. The app requests it on connect, so it appears on its own; a dash means nothing has arrived for that channel yet.

The Kind badge classifies each output (Motor, Control Surface, RC Pass-through, Peripheral, Disabled) so you can see at a glance what the frame is using. Edits stage as drafts; Apply servo mapping commits them and Revert discards them.

Warning

Reassigning SERVOn_FUNCTION on an output wired to an ESC can spin a motor. Keep the props off whenever you change output functions, and re-check the motor mapping on the Outputs & Motors tab afterwards.

Notify devices (LED and buzzer)

External LEDs and buzzers are driven by ArduPilot’s notify subsystem rather than by an output function, so they live in the LED & buzzer notifications card on the Outputs surface (not the servo table). The two driver parameters are bitmasks:

  • NTF_LED_TYPES — which LED drivers are active (Built-in LED, NeoPixel, ProfiLED, DShot, DroneCAN, Scripting, …).

  • NTF_BUZZ_TYPES — which buzzer drivers are active (Built-in Buzzer, DShot, DroneCAN).

You set these by clicking the driver chips — each chip toggles one bit and highlights when on; there is no separate checkbox. Supporting parameters include NTF_LED_BRIGHT (Off/Low/Medium/High), NTF_LED_LEN (number of LEDs in a strip), NTF_LED_OVERRIDE (the LED source), and NTF_BUZZ_VOLUME.

Note

For an addressable LED strip to light up, an output must also carry a NeoPixel function (SERVOn_FUNCTION 120–123). The notifications card on Peripherals & Gimbal detects and lists any such configured outputs and prompts you to assign one if none is set.

Relays

The Relays section (on Peripherals & Gimbal) configures up to six relay outputs as a grid of per-relay cards. Each relay has:

  • RELAYn_FUNCTION — what the relay is for: None, Relay (manual on/off), Ignition, Parachute, Camera, brushed-motor-reverse functions, ICE Starter, or a DroneCAN Hardpoint.

  • RELAYn_PIN — the autopilot GPIO pin the relay drives (set to -1 to disable).

  • RELAYn_DEFAULT — the power-on state (Off / On / NoChange), shown when the function is the plain Relay type.

  • RELAYn_INVERTEDNormal or Inverted pin polarity.

Note

RELAYn_FUNCTION, RELAYn_PIN, and RELAYn_DEFAULT are applied when the flight controller boots — the pin is configured and the default state set at start-up — so a change is reboot-required: the app prompts you to reboot before it takes effect. RELAYn_INVERTED applies live.

Enum fields render as selectable chips and the pin as a number field; the same staged Apply relay changes / Revert toolbar applies. Only relay instances the flight controller actually reports are shown.

Note

RELAYn_PIN must match a pin your autopilot exposes as a GPIO. The correct pin number depends on the board and which functions are enabled on the BRD_* GPIO/PWM parameters — consult your board’s documentation.

See also the ArduPilot wiki: Relay Switch and the Servo / Output function list.