Skip to content

MSP Overview

MSP (MultiWii Serial Protocol) is the binary protocol the Configurator uses to talk to WingFlight firmware over serial -- reading sensor data, reading and writing configuration, and issuing commands.

On connection, the Configurator queries the firmware's API version, variant identifier, and build/firmware version to confirm compatibility before proceeding to the full configuration UI. If a connected firmware doesn't identify as WingFlight, or reports a version outside the range this Configurator build supports, the Configurator falls back to CLI-only mode rather than assuming MSP compatibility it can't verify.

Version compatibility

Additive changes, such as a new read-only command, don't change the API version: firmware that lacks a command answers it as unsupported, which is how the Configurator tells. MSP_SERVO_TRIM, which reports the live runtime servo trim, works this way. Appending fields to the end of a reply is additive too: firmware with saved servo trims appends them to MSP_SERVO_TRIM, and the Configurator tells from the reply length.

Changes to an existing message's layout are different, because an old client would misparse the reply, or write shifted bytes into a profile. Those bump the API version and the client picks the layout from it. Snapshot 0.0.25 moved the API to 22.3: the always-zero placeholder bytes inherited from Rotorflight's helicopter code were removed from MSP_RC_TUNING, MSP_PID_PROFILE, MSP_PID_TUNING, MSP_SETPOINT, MSP_TELEMETRY_CONFIG, MSP_ESC_SENSOR_CONFIG, MSP_RC_CONFIG and MSP_SENSOR_CONFIG. Use the Configurator and Lua suites from the same snapshot as the firmware. An older client that doesn't know 22.3 falls back to CLI-only mode.

Commands for features that were removed (VTX, camera control and the rangefinder) are gone too, so MSP_SONAR_ALTITUDE and the others now answer as unsupported instead of returning a constant.

Note

A full MSP command reference is planned as the project stabilizes -- contributions welcome, see Contributing.