MAVLINKHUD

Overview

The MSP parameter group configures the Multiwii Serial Protocol (MSP) interface. While originally developed for the MultiWii firmware, MSP has become the standard communication protocol for modern digital FPV systems (DJI, Avatar, HDZero) to receive OSD telemetry from the autopilot.

Key Concepts

1. Digital OSD Support

Digital VTX modules (like the DJI Air Unit) do not support the old analog "Overlay" method. Instead, they request data from the autopilot via MSP and render the OSD elements themselves within the goggles.

2. MSP DisplayPort

This is an extension of MSP used by HDZero and Avatar to provide high-definition, pixel-accurate OSD rendering that matches the look of Betaflight or ArduPilot's native OSD.

Parameter Breakdown

  • MSP_OPTIONS: Bitmask for specific behaviors (e.g., enable DisplayPort mode).
  • MSP_OSD_NCELLS: Manual cell count for digital OSDs that can't auto-calculate.

Integration Guide

  1. Hardware: Connect the TX/RX pins of your Digital VTX to a UART on the flight controller.
  2. Serial: Set SERIALx_PROTOCOL = 33 (MSP).
  3. Config: If using DJI (original V1/V2), no further config is needed. If using Avatar/HDZero, set MSP_OPTIONS to enable DisplayPort.

Developer Notes

  • Library: libraries/AP_MSP.

MSP_PORT: MSP Serial Port

Description

This is the serial port number where SERIALx_PROTOCOL will be set to MSP (MultiWii Serial Protocol).

Values

  • Range: 0 to 10
  • Increment: 1
  • Default: 1

Description

This parameter automatically configures a specific hardware UART (Serial Port) to speak the MSP protocol.

  • Purpose: Used for integrating with peripherals that primarily speak MSP, such as DJI FPV Goggles (for OSD data) or certain ESC telemetry systems.
  • Auto-Configuration: Setting this parameter effectively overrides the manual SERIALx_PROTOCOL setting for the selected port, ensuring the correct driver is loaded for MSP communication.

Source Code

ardupilot/Tools/AP_Periph/Parameters.cpp

MSP_OPTIONS

Default 0
Range 0 15

MSP OSD Options (MSP_OPTIONS)

Description

MSP_OPTIONS provides compatibility settings for digital video systems (like DJI, FatShark Avatar, and HDZero) that use the MSP protocol for their On-Screen Display.

Since digital OSDs often have their own internal font sets and communication styles, this parameter ensures the flight controller sends data in a format the goggles can understand.

  • Bit 0 (1): EnableTelemetryMode. Allows "push" mode telemetry if only the RX line is connected.
  • Bit 1 (2): EnableBTFLFonts. Use character mapping compatible with Betaflight-style fonts.
  • Bit 2 (4): EnableINAVFonts. Use character mapping compatible with INAV-style fonts.

Tuning & Behavior

  • Default: 0.
  • Usage: If your OSD icons (like the battery or GPS symbols) look like random letters or garbled blocks, try toggling the BTFL or INAV font bits to match your goggle's firmware.

MSP_OSD_NCELLS

Default 0
Range 0 14

MSP OSD Cell Count Override (MSP_OSD_NCELLS)

Description

MSP_OSD_NCELLS allows you to manually set the cell count for the battery voltage display on digital OSDs.

While ArduPilot can usually detect cell count automatically, some digital goggles require an explicit cell count to calculate and display "Average Cell Voltage" correctly.

  • 0: Use global battery settings (Automatic detection).
  • 1-14: Forces the OSD to assume a specific number of cells (e.g. 4 for a 4S battery).