MAVLINKHUD

Overview

The OSD parameter group configures the On-Screen Display subsystem. This library is responsible for rendering real-time flight data (HUD) onto the video feed, whether using an analog overlay chip (MAX7456) or digital telemetry (MSP).

ArduPilot supports up to 6 custom OSD screens, allowing the pilot to toggle between different layouts (e.g., a "Minimal" screen for racing and a "Full" screen for long-range).

Key Concepts

1. OSD Hardware (OSD_TYPE)

Defines the rendering method.

  • 1 (MAX7456): Standard analog OSD chip found on most classic flight controllers.
  • 3 (MSP): Digital OSD for DJI, HDZero, and Avatar systems.
  • 5 (SITL): Graphical OSD overlay in the simulator.

2. Screen Management

  • OSDn_ENABLE: Toggles screens 1 through 6.
  • OSD_SW_METHOD: Defines how to switch between screens (RC channel, push-button, or automatic based on flight stage).

3. Widget Placement (OSD_W_...)

Every element (Battery, Altitude, Speed) is a "Widget" that can be moved anywhere on the screen grid.

  • OSD_W_X / Y: Coordinates (typically 0-29 columns, 0-15 rows).
  • OSD_W_EN: Enables/Disables that specific element.

4. In-Flight Parameter Tuning

The OSD can display a "Tuning Menu" (Screen 5), allowing the pilot to change PID gains, rates, and limits using the RC sticks without needing a laptop.

Parameter Breakdown

  • OSD_UNITS: Selects Metric, Imperial, or Aviation units.
  • OSD_FONT: Selects the character set (Regular, Bold, Large).
  • OSD_MSG_TIME: Duration of pop-up alerts.

Integration Guide

Setting up MSP (Digital) OSD

  1. Hardware: Connect VTX to a UART.
  2. Serial: Set SERIALx_PROTOCOL = 33 (MSP).
  3. Config: Set OSD_TYPE = 3.
  4. Reboot: You should see the ArduPilot logo in your goggles.
  5. Layout: Use the "OSD" tab in Mission Planner to drag-and-drop elements to your preferred positions.

Developer Notes

  • Library: libraries/AP_OSD.
  • Extensibility: New widgets can be added to the library to support specialized sensors (e.g., LiDAR distance, EFI status, or RPM).

OSD1_CHAN_MAX

PWM
Default 2100
Range 900 2100

OSD Screen Switch PWM Max (OSD1_CHAN_MAX)

Description

Defines the upper PWM limit for selecting this OSD screen.

OSD1_CHAN_MIN

PWM
Default 900
Range 900 2100

OSD Screen Switch PWM Min (OSD1_CHAN_MIN)

Description

OSD1_CHAN_MIN (and OSD1_CHAN_MAX) defines the PWM "Window" that activates this specific OSD screen.

If OSD_SW_METHOD is set to 1 (PWM_RANGE), the autopilot looks at the current value of the OSD_CHAN. If the value is between MIN and MAX for a screen, that screen is shown.

OSD1_ENABLE

Default 1
Range 0 1

OSD Screen Enable (OSD1_ENABLE)

Description

OSD1_ENABLE (and its siblings OSD2..OSD6) determines if a specific "Screen Layout" is active.

ArduPilot supports up to 6 different OSD screens. You can switch between them using an RC channel (OSD_CHAN). This allows you to have one screen for takeoff (with flight timers and battery), another for long-range cruising (with GPS and efficiency stats), and a third "Minimalist" screen for unobstructed cinematic flight.

  • 1: Enabled. The screen is available and can be displayed.
  • 0: Disabled. The screen is ignored.

Tuning & Behavior

  • Default: 1 for Screen 1, 0 for others.
  • Switching: If you enable multiple screens, you must configure OSD_CHAN to toggle between them.

OSD1_ESC_IDX

Default 0
Range 0 32

OSD ESC Instance Selection (OSD1_ESC_IDX)

Description

OSD1_ESC_IDX determines which motor's data is shown if you have the ESCTEMP or ESCRPM widgets active.

  • 0: Auto. Shows the ESC with the highest value (e.g. the hottest motor or the fastest spin).
  • 1-32: Fixes the display to a specific motor index.

OSD1_FONT

Default 0
Range 0 21

Sets the font index for this screen (MSP DisplayPort only)

Note: This parameter functions identically to OSD_FONT.

OSD1_TXT_RES

Default 0
Range 0 2

OSD Screen Resolution (OSD1_TXT_RES)

Description

OSD1_TXT_RES defines the pixel/character density of the display.

While analog OSDs are fixed in resolution, digital systems like DJI or Avatar can support higher densities. This parameter allows you to choose between standard and high-definition layouts.

  • 0: 30x16. Standard Definition (Analog compatibility).
  • 1: 50x18. High Definition.
  • 2: 60x22. Ultra-High Definition.

Tuning & Behavior

  • Significance: Only applicable to digital OSD backends (MSP DisplayPort). Changing this will rearrange your widgets because the coordinate system (X/Y) depends on the grid size.

OSD2_CHAN_MAX

Default 2100
Range 900 2100

Transmitter switch screen maximum pwm

Note: This parameter functions identically to OSD1_CHAN_MAX.

OSD2_CHAN_MIN

Default 900
Range 900 2100

Transmitter switch screen minimum pwm

Note: This parameter functions identically to OSD1_CHAN_MIN.

Default 0
Range null

Note: This parameter functions identically to OSD1_ENABLE.

OSD2_ESC_IDX

Default 0
Range 0 32

ESC_IDX

Note: This parameter functions identically to OSD1_ESC_IDX.

OSD2_FONT

Default 0
Range 0 21

Sets the font index for this screen (MSP DisplayPort only)

Note: This parameter functions identically to OSD_FONT.

OSD2_TXT_RES

Default 0
Range null

Sets the overlay text resolution (MSP DisplayPort only)

Note: This parameter functions identically to OSD1_TXT_RES.

OSD3_CHAN_MAX

Default 2100
Range 900 2100

Transmitter switch screen maximum pwm

Note: This parameter functions identically to OSD1_CHAN_MAX.

OSD3_CHAN_MIN

Default 900
Range 900 2100

Transmitter switch screen minimum pwm

Note: This parameter functions identically to OSD1_CHAN_MIN.

Default 0
Range null

Note: This parameter functions identically to OSD1_ENABLE.

OSD3_ESC_IDX

Default 0
Range 0 32

ESC_IDX

Note: This parameter functions identically to OSD1_ESC_IDX.

OSD3_FONT

Default 0
Range 0 21

Sets the font index for this screen (MSP DisplayPort only)

Note: This parameter functions identically to OSD_FONT.

OSD3_TXT_RES

Default 0
Range null

Sets the overlay text resolution (MSP DisplayPort only)

Note: This parameter functions identically to OSD1_TXT_RES.

OSD4_CHAN_MAX

Default 2100
Range 900 2100

Transmitter switch screen maximum pwm

Note: This parameter functions identically to OSD1_CHAN_MAX.

OSD4_CHAN_MIN

Default 900
Range 900 2100

Transmitter switch screen minimum pwm

Note: This parameter functions identically to OSD1_CHAN_MIN.

Default 0
Range null

Note: This parameter functions identically to OSD1_ENABLE.

OSD4_ESC_IDX

Default 0
Range 0 32

ESC_IDX

Note: This parameter functions identically to OSD1_ESC_IDX.

OSD4_FONT

Default 0
Range 0 21

Sets the font index for this screen (MSP DisplayPort only)

Note: This parameter functions identically to OSD_FONT.

OSD4_TXT_RES

Default 0
Range null

Sets the overlay text resolution (MSP DisplayPort only)

Note: This parameter functions identically to OSD1_TXT_RES.

OSD5_CHAN_MAX

Default 2100
Range 900 2100

Transmitter switch screen maximum pwm

Note: This parameter functions identically to OSD1_CHAN_MAX.

OSD5_CHAN_MIN

Default 900
Range 900 2100

Transmitter switch screen minimum pwm

Note: This parameter functions identically to OSD1_CHAN_MIN.

Default 0
Range null

Note: This parameter functions identically to OSD1_ENABLE.

OSD5_SAVE_X

Default 23
Range 0 25

SAVE_X (OSD5_SAVE_X)

Description

This parameter defines the column number (X-coordinate) for the "SAVE" button on the OSD Parameter Tuning page (Screen 5).

The Mathematics

Grid coordinates (0-29 columns typically).

The Engineer's View

Defined in libraries/AP_OSD/AP_OSD_ParamScreen.cpp.

Tuning & Behavior

  • Default Value: 23

OSD5_SAVE_Y

Default 11
Range 0 15

SAVE_Y (OSD5_SAVE_Y)

Description

This parameter defines the row number (Y-coordinate) for the "SAVE" button on the OSD Parameter Tuning page (Screen 5).

The Mathematics

Grid coordinates (0-15 rows).

The Engineer's View

Defined in libraries/AP_OSD/AP_OSD_ParamScreen.cpp.

Tuning & Behavior

  • Default Value: 11
  • Usage: Move the button if it overlaps with other OSD elements.

OSD6_CHAN_MAX

Default 2100
Range 900 2100

Transmitter switch screen maximum pwm

Note: This parameter functions identically to OSD1_CHAN_MAX.

OSD6_CHAN_MIN

Default 900
Range 900 2100

Transmitter switch screen minimum pwm

Note: This parameter functions identically to OSD1_CHAN_MIN.

Default 0
Range null

Note: This parameter functions identically to OSD1_ENABLE.

OSD_ARM_SCR

Default 0
Range 0 4

OSD Arm Screen (OSD_ARM_SCR)

Description

OSD_ARM_SCR automatically switches your OSD view when you arm the drone.

Many pilots like to have a clean screen for setup but want full telemetry (Home distance, speed, time) as soon as they start flying.

  • 0: No change (Stay on current screen).
  • 1-4: Switch to Screen 1, 2, 3, or 4.

OSD_BTN_DELAY

ms
Default 300
Range 0 3000

OSD Menu Button Delay (OSD_BTN_DELAY)

Description

OSD_BTN_DELAY determines the "Key Repeat" speed when navigating ArduPilot's On-Screen Display menus using your transmitter sticks.

If this value is too short, the menu might "skip" entries or move too fast to control. If it is too long, the menu will feel sluggish and unresponsive.

Tuning & Behavior

  • Default: 300 ms.
  • Recommendation: Leave at 300ms. If you find it difficult to select specific items in the OSD setup menu, increase to 500ms.

OSD_CELL_COUNT

Default -1
Range -1 14

OSD Battery Cell Count (OSD_CELL_COUNT)

Description

OSD_CELL_COUNT tells the OSD how many cells are in your battery.

This is critical for the "Average Cell Voltage" display and warning. If you set this incorrectly, the OSD will report the wrong voltage per cell and might flash "Low Battery" warnings when the battery is actually full.

  • -1 (Default): Auto-detect based on voltage at boot. (Assumes you plug in a fully charged battery).
  • 1-14: Manually specify the cell count (e.g. 4 for a 4S pack).

Tuning & Behavior

  • Recommendation: If you sometimes fly with partially discharged batteries, manually set this value to your battery's cell count to avoid detection errors.

OSD_CHAN

Default 0
Range 0 16

OSD Screen Switch Channel (OSD_CHAN)

Description

OSD_CHAN allows you to change what information you see on your goggles using a switch on your transmitter.

ArduPilot supports up to 4 different "Screens" (e.g., Screen 1 for takeoff, Screen 2 for cruising, Screen 3 for racing). By assigning a switch to this channel, you can cycle through them while flying.

  • 0: Disabled. Only Screen 1 is shown.
  • 1-16: RC Channel number.

OSD_DSARM_SCR

Default 0
Range 0 4

OSD Disarm Screen (OSD_DSARM_SCR)

Description

OSD_DSARM_SCR switches the OSD view when you land and disarm. This is often used to show a "Flight Summary" screen with max speed, total distance, and battery used.

OSD_FONT

Default 0
Range 0 5

OSD Font (OSD_FONT)

Description

OSD_FONT allows you to change the visual style of the text and icons on your video feed.

Most flight controllers store multiple font sheets in their flash memory.

  • 0: Default (Clarity / Betaflight style).
  • 1: Bold.
  • 2: Digital.
  • 3: Mavlink (Data heavy).

Tuning & Behavior

  • Default Value: 0.
  • Note: If you see garbled characters or Chinese symbols instead of battery icons, your font sheet might be corrupted or incompatible with the firmware version. Upload a new font via the GCS.

OSD_FS_SCR

Default 0
Range 0 4

OSD Failsafe Screen (OSD_FS_SCR)

Description

OSD_FS_SCR switches the OSD view when an emergency (Failsafe) occurs. This allows you to have a dedicated "Emergency" screen that only shows critical info like GPS home direction and battery voltage in a high-visibility layout.

OSD_H_OFFSET

Default 32
Range 0 63

OSD Horizontal Offset (OSD_H_OFFSET)

Description

OSD_H_OFFSET centers the OSD horizontally.

  • Adjustment: Increase the value to shift the OSD Right. Decrease to shift it Left.

OSD_MSG_TIME

s
Default 10
Range 0 60

OSD Message Duration (OSD_MSG_TIME)

Description

OSD_MSG_TIME controls how long text notifications (like "Flight Mode: Loiter" or "Bad Compass Health") stay on screen.

  • 10 (Default): 10 seconds. Good for ensuring you see the message.
  • 3: Short duration. Good for experts who want a clean feed.

Tuning & Behavior

  • Default Value: 10s.
  • Recommendation: Reduce to 5 if you find the text covers up important video details for too long.

OSD_OPTIONS

Default 0
Range 0 1024

OSD Options (OSD_OPTIONS)

Description

OSD_OPTIONS toggles advanced display features.

Tuning & Behavior

  • Bit 0: Decimal pack voltage (Show 12.6V instead of 12V).
  • Bit 1: Invert pitch ladder.
  • Bit 2: Use alternative crosshair.

OSD_PARAM_EN

Default 0
Range 0 1

OSD Parameter Entry Enable (OSD_PARAM_EN)

Description

OSD_PARAM_EN toggles the visibility of a specific parameter on the OSD's in-flight tuning menu.

ArduPilot supports special "Parameter Screens" where you can adjust PIDs or other settings while flying using your transmitter sticks. This parameter determines if a specific slot in that menu is active.

  • 0: Disabled.
  • 1: Enabled.

OSD_PARAM_GRP

Default -1
Range -1 1000

OSD Parameter Group (OSD_PARAM_GRP)

Description

OSD_PARAM_GRP is a technical identifier that helps the OSD system locate the correct group of parameters (e.g. all ATC_ parameters) to which the tuned setting belongs.

OSD_PARAM_IDX

Default -1
Range -1 255

OSD Parameter Index (OSD_PARAM_IDX)

Description

OSD_PARAM_IDX is a technical identifier used by the OSD system to find the correct parameter in the flight controller's memory. It is usually set automatically when you configure the OSD using a tool like Mission Planner.

OSD_PARAM_KEY

Default -1
Range -1 65535

OSD Parameter Key (OSD_PARAM_KEY)

Description

OSD_PARAM_KEY is the unique database identifier for a parameter. This key ensures that even if parameters are added or removed in future firmware versions, the OSD tuning menu continues to point at the correct setting.

OSD_PARAM_MAX

Default 100
Range -10000 10000

OSD Parameter Maximum Value (OSD_PARAM_MAX)

Description

OSD_PARAM_MAX sets a safety ceiling for in-flight tuning. It prevents you from accidentally increasing a gain to a level that causes violent oscillations or mechanical failure.

OSD_PARAM_MIN

Default 0
Range -10000 10000

OSD Parameter Minimum Value (OSD_PARAM_MIN)

Description

OSD_PARAM_MIN sets a safety floor for in-flight tuning.

When you are adjusting a parameter (like a PID gain) using your transmitter sticks and the OSD menu, this value prevents you from accidentally setting the parameter too low, which could make the drone unstable or unable to fly.

OSD_PARAM_TYPE

Default 0
Range 0 7

OSD Parameter Type (OSD_PARAM_TYPE)

Description

OSD_PARAM_TYPE tells the OSD how to format the value of a tuned parameter.

Normally, parameters are just numbers. However, some parameters (like SERIAL_PROTOCOL) are easier to understand if shown as text (e.g., "MAV" instead of "1").

  • 0: None. Show the raw numerical value.
  • 1: Serial Protocol. Show names of serial protocols.
  • 2: Servo Function. Show servo function names.
  • 4: Flight Mode. Show flight mode names.

OSD_PARAM_X

Default 0
Range 0 59

OSD Parameter X Position (OSD_PARAM_X)

Description

OSD_PARAM_X sets the horizontal coordinate for a parameter editing element on the OSD display.

This is part of the in-flight parameter tuning system, allowing you to move where specific PID gains or settings appear when you enter the OSD menu.

Tuning & Behavior

  • 0: Left edge.
  • High Value: Right edge.

OSD_PARAM_Y

Default 0
Range 0 31

OSD Parameter Y Position (OSD_PARAM_Y)

Description

OSD_PARAM_Y sets the vertical coordinate for a parameter editing element on the OSD display.

OSD_P_EN

Default 0
Range 0 1

OSD Parameter Slot Enable (OSD_P_EN)

Description

OSD_P_EN (usually appearing in groups like OSD5_PARAM1_EN) enables a specific slot in the in-flight tuning menu.

ArduPilot allows you to configure special OSD screens where you can adjust PIDs, rates, or other parameters while flying using your transmitter sticks. Each screen has multiple slots (typically 9). This parameter controls if a particular slot is active and visible.

  • 0: Disabled. The slot is empty.
  • 1: Enabled. The slot displays the configured parameter for adjustment.

Tuning & Behavior

  • Setup: Once enabled, you must also set the parameter group (OSD_P_GRP) and index (OSD_P_IDX) to tell the autopilot which parameter you want to tune in this slot.
  • Safety: Only enable the parameters you actually intend to tune during the flight to avoid accidental changes to critical settings.

OSD_P_GRP

Default 0
Range 0 32767

OSD Parameter Slot Group (OSD_P_GRP)

Description

OSD_P_GRP identifies the "Class" or "Category" of the parameter you want to tune in an in-flight menu.

Every parameter in ArduPilot has a group ID. This is typically configured using a GCS (like Mission Planner's OSD setup screen) rather than entered manually, but this parameter stores that selection.

  • 0: Root/Global parameters.
  • Other Values: Internal IDs for specific libraries (e.g. 1 for Attitude Control).

Tuning & Behavior

  • Setup: This should be used in combination with OSD_P_IDX to target a specific parameter.
  • Ease of Use: It is highly recommended to use the graphical OSD editor in your GCS to set these values.

OSD_P_IDX

Default 0
Range 0 127

OSD Parameter Slot Index (OSD_P_IDX)

Description

OSD_P_IDX specifies which individual parameter inside a group (set by OSD_P_GRP) is being controlled.

For example, if the group is "Attitude Control," the index determines if you are adjusting the Roll P, Pitch I, or Yaw D term.

Tuning & Behavior

  • Setup: Use the graphical OSD editor in your GCS to find the correct index for the parameter you wish to tune.

OSD_P_INCR

Default 0.001
Range 0 100

OSD Parameter Slot Increment (OSD_P_INCR)

Description

OSD_P_INCR defines the "Sensitivity" of the in-flight tuning.

When you push the transmitter stick to change a parameter, this is the amount added to or subtracted from the current value.

  • Small Value (e.g. 0.001): Precision tuning for delicate PIDs.
  • Large Value (e.g. 1.0): Quick adjustments for broad settings like MAVLink stream rates.

Tuning & Behavior

  • Recommendation: Match the increment to the scale of the parameter. For a P-gain that is usually around 0.1, an increment of 0.005 is appropriate. For an altitude limit of 100m, an increment of 5.0 is better.

OSD_P_KEY

Default 0
Range 0 32767

OSD Parameter Slot Key (OSD_P_KEY)

Description

OSD_P_KEY is a unique identifier used by ArduPilot to locate a parameter in its non-volatile memory (EEPROM).

This is part of the triple-identifier system (Group, Key, Index) used by the OSD tuning menu to ensure that when you change a value while flying, it is saved to the correct location and persists even after the drone is powered off.

Tuning & Behavior

  • Setup: This value is usually calculated and set automatically by your Ground Control Station when you choose a parameter for the OSD. You should not need to edit it manually.

OSD_P_MAX

Default 0
Range -1000000 1000000

OSD Parameter Slot Maximum (OSD_P_MAX)

Description

OSD_P_MAX defines the upper safety limit for in-flight tuning.

This prevents you from increasing a parameter (like a P-gain) to a point where the drone becomes unstable or the servos oscillate to the point of failure.

Tuning & Behavior

  • Recommendation: Set this to a value that is slightly above your target but still within the known safe operating limits for your specific vehicle.
  • Safety: Always test your tuning limits in an open area with plenty of altitude.

OSD_P_MIN

Default 0
Range -1000000 1000000

OSD Parameter Slot Minimum (OSD_P_MIN)

Description

OSD_P_MIN defines the lower safety limit for in-flight tuning.

When you use your sticks to decrease a parameter value on the OSD, the autopilot will stop at this value. This is critical for safety to ensure you don't accidentally set a PID to zero or a negative value that could crash the vehicle.

Tuning & Behavior

  • Recommendation: Set this to the lowest "Safe" value for the parameter you are tuning. For PIDs, this is usually a small positive number.

OSD_P_TYPE

Default 0
Range 0 7

OSD Parameter Tuning Type (OSD_P_TYPE)

Description

OSD_P_TYPE tells the OSD how to format and display the parameter assigned to this tuning slot.

This is used to provide user-friendly names for certain common settings.

  • 0: None. Uses the raw parameter value.
  • 1: Serial Protocol. Displays protocol names (MAVLink, GPS, etc.).
  • 2: Servo Function. Displays function names (Motor 1, Aileron, etc.).
  • 4: Flight Mode.

Tuning & Behavior

  • Recommendation: Set this to match the category of the parameter you are tuning to make the OSD menu easier to read while in flight.

OSD_P_X

Default 2
Range 0 59

OSD Parameter Slot X Position (OSD_P_X)

Description

OSD_P_X defines the horizontal position of an in-flight tuning slot.

By default, these slots are aligned on the left side of the screen (X=2) to allow space for the parameter name and its current value to be displayed.

Tuning & Behavior

  • PAL/NTSC Width: ~30 columns.
  • Digital Width: ~60 columns.
  • Recommendation: Keep these aligned in a column for readability.

OSD_P_Y

Default 0
Range 0 21

OSD Parameter Slot Y Position (OSD_P_Y)

Description

OSD_P_Y defines the vertical position of an in-flight tuning slot.

Since each tuning screen typically displays a list of parameters, these values are usually staggered (e.g., Slot 1 at Y=2, Slot 2 at Y=4) to create a clear vertical menu.

Tuning & Behavior

  • Analog Height: ~16 rows.
  • Digital Height: ~22 rows.
  • Note: Ensure you don't overlap your parameter slots with permanent flight widgets like the Artificial Horizon or Battery voltage.

OSD_SB_H_OFS

Default 0
Range -10 10

OSD Sidebar Horizontal Offset (OSD_SB_H_OFS)

Description

OSD_SB_H_OFS moves the airspeed and altitude "Ladders" closer together or further apart.

This is useful for optimizing the center of your screen for the camera view while keeping vital data visible in your peripheral vision.

OSD_SB_V_EXT

Default 0
Range 0 5

OSD Sidebar Vertical Extension (OSD_SB_V_EXT)

Description

OSD_SB_V_EXT makes the OSD sidebars (the tapes on the left and right) taller.

A higher value increases the number of tick marks visible above and below the center, helping you see upcoming altitude or speed changes.

OSD_SW_METHOD

Default 0
Range 0 2

OSD Switch Method (OSD_SW_METHOD)

Description

OSD_SW_METHOD controls how you cycle through the 4 available OSD screens using your RC transmitter.

You can set up different layouts (e.g., one for flight, one for landing, one blank) and switch between them in flight.

  • 0: Toggle (Default). Assign a switch to RCx_OPTION = 224 (OSD Toggle). Each toggle moves to the next screen (1 -> 2 -> 3 -> 4 -> 1).
  • 1: PWM Range. Assign an RC channel to OSD_CHAN. The position of the switch/knob determines the screen (Low=1, Mid-Low=2, Mid-High=3, High=4).
  • 2: Auto Switch. The OSD automatically switches screens based on flight mode or events (requires Lua scripting or specific backend support).

Tuning & Behavior

  • Default Value: 0 (Toggle).
  • Recommendation: Use 0 if you have a momentary switch. Use 1 if you have a multi-position switch or a knob.

OSD_TYPE

Default 0
Range 0 5

OSD Type (OSD_TYPE)

Description

OSD_TYPE tells the flight controller what kind of "Video Overlay" chip is being used.

The OSD chip is what draws the text (Altitude, Speed, Battery) over your camera's video feed.

  • 0: None. OSD is disabled.
  • 1: MAX7456. The standard analog OSD chip used on most flight controllers (e.g., Matek, Holybro).
  • 3: MSP. For digital video systems like DJI, FatShark Avatar, or HDZero.
  • 5: Screen. Integrated graphics for specialized boards.

Tuning & Behavior

  • Reboot Required: Yes.
  • Note: If using a digital system (DJI/Avatar), you must also set a Serial port to SERIALx_PROTOCOL = 33 (MSP).

OSD_TYPE2

null
Default 0
Range null

OSD type 2

Note: This parameter functions identically to OSD_TYPE.

OSD_UNITS

Default 0
Range 0 3

OSD Display Units (OSD_UNITS)

Description

OSD_UNITS sets the measurement system for your HUD.

  • 0: Metric (Default). Meters (m), Kilometers per hour (km/h).
  • 1: Imperial. Feet (ft), Miles per hour (mph).
  • 2: SI. Meters (m), Meters per second (m/s).
  • 3: Aviation. Feet (ft), Knots (kn).

Tuning & Behavior

  • Default Value: 0.
  • Recommendation:
    • Science/Engineering: Use 2 (SI).
    • General Aviation: Use 3 (Aviation).

OSD_V_OFFSET

Default 16
Range 0 31

OSD Vertical Offset (OSD_V_OFFSET)

Description

OSD_V_OFFSET centers the OSD on your screen.

Due to differences in analog video formats (PAL vs NTSC) and camera processing, the OSD might appear too high or too low, cutting off text at the edges. This parameter shifts the entire layout vertically.

Tuning & Behavior

  • Adjustment: Increase the value to shift the OSD Down. Decrease to shift it Up.

OSD_W_ACRVOLT

V
Default 3.6
Range 0 100

OSD Avg Cell Resting Voltage Warning (OSD_W_ACRVOLT)

Description

OSD_W_ACRVOLT combines two of ArduPilot's smartest battery monitoring features: Average Cell Voltage and Resting Voltage Estimation.

It monitors the estimated resting voltage divided by the number of cells. This is the ultimate "True Energy" gauge. It tells you the state of the battery without the confusion of voltage sag or varying cell counts. When this value drops below the threshold, the cell voltage element on your OSD will flash.

Tuning & Behavior

  • Default: 3.6V.
  • Recommendation: Set to 3.5V or 3.6V for LiPo. This provides a very consistent warning regardless of whether you are hovering or performing a full-throttle climb.
  • Prerequisite: Requires OSD_CELL_COUNT to be set correctly.

OSD_W_AVGCELLV

V
Default 3.6
Range 2.5 4.2

OSD Average Cell Warning (OSD_W_AVGCELLV)

Description

OSD_W_AVGCELLV is a much better way to monitor battery life than total voltage.

Different drones use different batteries (4S, 6S, etc.). Total voltage changes, but cell voltage is universal.

  • 3.6V (Default): The voltage element will flash if any individual cell drops below 3.6V. This is a very safe "Land Now" voltage for LiPo batteries.

Tuning & Behavior

  • LiPo: Set to 3.5V or 3.6V.
  • Li-Ion: Set to 3.0V or 3.1V (they can handle lower voltages safely).
  • Requirement: Requires OSD_CELL_COUNT to be set correctly.

OSD_W_BATVOLT

V
Default 10.0
Range 0 100

OSD Battery Voltage Warning (OSD_W_BATVOLT)

Description

OSD_W_BATVOLT is your "Fuel Low" light.

When your battery drops to this voltage, the battery readout on your screen will flash to tell you it's time to land.

Tuning & Behavior

  • Recommendation: Set this to roughly 3.4V or 3.5V per cell for LiPo batteries. For a 4S battery, you would set this to 14.0.

OSD_W_EN

Default 0
Range 0 1

OSD Element Enable (OSD_W_EN)

Description

OSD_W_EN (usually appearing as OSDx_WIDGET_EN) is the master toggle for showing or hiding information on your video feed.

Each piece of data (Altitude, Voltage, Sats) has its own enable parameter. If set to 1, the element is drawn on the screen at its configured X and Y coordinates. If set to 0, that space on the screen remains clear.

  • 0: Disabled.
  • 1: Enabled.

Tuning & Behavior

  • Recommendation: Enable only the parameters you need for your current mission to keep the video feed uncluttered.
  • Instant Update: Changes made via MAVLink (GCS) typically appear on the screen immediately without requiring a reboot.

OSD_W_LQ

%
Default 50
Range 0 100

OSD Link Quality Warning (OSD_W_LQ)

Description

OSD_W_LQ sets the "Alarm Trigger" for your radio signal quality.

When your link quality (LQ) percentage drops below this value, the LQ readout on your goggles/screen will begin to flash. This gives you a clear visual warning that you are nearing the edge of your radio range or that you are experiencing high interference.

Tuning & Behavior

  • Default: 50%.
  • Recommendation: Set to 70 if you want an early warning. Set to 30 if you are comfortable flying on the edge of the link capability.
  • Note: This is based on the Link Quality (percentage of successful packets), which is generally a more reliable indicator of link health than simple RSSI (signal strength).

OSD_W_NSAT

Default 9
Range 0 30

OSD Satellites Warning (OSD_W_NSAT)

Description

OSD_W_NSAT warns you if your GPS signal is getting weak.

If the number of satellites drops below this value, the satellite icon on your OSD will flash. This is a sign that you might be flying near tall buildings or trees that are blocking the sky.

OSD_W_RESTVOLT

V
Default 10.0
Range 0 100

OSD Resting Voltage Warning (OSD_W_RESTVOLT)

Description

OSD_W_RESTVOLT provides a "Smart" low-battery alarm.

Unlike a simple voltage alarm that might flash every time you punch the throttle (causing "voltage sag"), ArduPilot's EKF estimates the Resting Voltage – what the battery would show if the motors were off. This is a much more accurate representation of the remaining energy. When this resting estimate falls below this value, the voltage readout will flash.

Tuning & Behavior

  • Default: 10.0V.
  • Recommendation: Set this to the same value as your OSD_W_BATVOLT. This ensures that you get a steady warning when the battery is truly empty, rather than a flickering one that only triggers under load.
  • Benefit: Prevents "Phantom" low-battery alarms during high-current maneuvers.

OSD_W_RSSI

%
Default 30
Range 0 100

OSD RSSI Warning (OSD_W_RSSI)

Description

OSD_W_RSSI is a "Low Signal" alert.

When your radio connection drops below this percentage, the signal bar on your screen will start flashing to warn you that you are nearing the limit of your control range.

OSD_W_SNR

dB
Default 0
Range -20 10

OSD RC Link SNR Warning (OSD_W_SNR)

Description

OSD_W_SNR sets the "Noise Alarm" for your radio signal.

SNR (Signal-to-Noise Ratio) measures how much stronger your transmitter's signal is compared to the background electrical noise. Even if your signal is strong (high RSSI), if the noise is also high, the link will be poor. A higher SNR is better. If the SNR drops below this value, the readout on your OSD will flash.

Tuning & Behavior

  • Default: 0 dB.
  • Context: This is primarily used by modern digital radio links (like ELRS or Crossfire) that report SNR data.
  • Recommendation: Consult your radio manufacturer's documentation for the minimum reliable SNR for your specific frequency and protocol (e.g., ELRS at 250Hz might need > -5 dB).
  • Note: If your SNR is consistently low, check for noisy electronics (VTX, ESCs) mounted too close to your RC receiver.

OSD_W_TERR

m
Default -1
Range -1 1000

OSD Terrain Height Warning (OSD_W_TERR)

Description

OSD_W_TERR is a "Low Altitude" alarm based on terrain data.

If the drone is equipped with terrain data (on the SD card) or a long-range distance sensor, it knows its height above the ground. If that height falls below this value, the terrain height readout on your screen will flash to warn you of a potential ground collision.

  • -1: Disabled (Default).
  • Value (m): Height in meters at which the warning triggers.

Tuning & Behavior

  • Recommendation: Set to 10 or 20 meters if you are flying in hilly terrain to provide an early warning of rising ground.
  • Prerequisite: Requires a valid terrain database or a functional rangefinder.

OSD_W_X

Default 0
Range 0 59

OSD Element X Position (OSD_W_X)

Description

OSD_W_X defines the horizontal position of an OSD widget.

  • For Analog (PAL/NTSC): The screen is typically 30 columns wide.
  • For Digital (MSP): The screen can be up to 60 columns wide depending on the resolution.
  • 0: Left edge.
  • Max: Right edge.

Tuning & Behavior

  • Instant Update: Changes appear immediately on the screen.
  • Validation: If an element disappears, check that the X value is not higher than your OSD's maximum width.

OSD_W_Y

Default 0
Range 0 21

OSD Element Y Position (OSD_W_Y)

Description

OSD_W_Y defines the vertical position of an OSD widget.

  • For Analog (PAL/NTSC): The screen is typically 16 rows high.
  • For Digital (MSP): The screen can be up to 22 rows high.
  • 0: Top edge.
  • Max: Bottom edge.

Tuning & Behavior

  • Instant Update: Changes appear immediately on the screen.
  • Validation: If an element disappears, check that the Y value is not higher than your OSD's maximum height.