What exactly is servo_output_raw (mavlink message id #36)?

I’m attempting to use a WiFi bridge to pass the actuator outputs from the flight controller (Pixhawk 2.1) to the servos via a pair of ESP32 micro controllers. My plan was to use a master ESP32 to read the the Mavlink messages via UART from the TELEM2 port, then broadcast them to slave ESP32s each with a pair of servos. Particularly I was going to send the mavlink_msg_id_servo_output_raw message.

The setup is correctly passing and parsing the mavlink messages, but the data doesn’t appear to be what I expected. The disarmed PWM values are 900 as expected, but after arming, the values don’t seem to change. Additionally, when the Flight controller is connected to QGroundControl the raw values reported via the Mavlink inspector are different (1500 instead of 900).

So what does the mavlink_msg_id_servo_output_raw represent? Does this differ from the values that are sent to the main PWM outputs on the flight controller?

For more information on what I’m using this for you can check out:


So servo_output_raw does contain the actuator outputs from the flight controller and the mavlink packets for message id #36 are being correctly output on the TELEM2 port. However, the mavlink packets viewed from QGC with the Mavlink inspector widget do not match.