msp_osd backports to 1.16
Backport recent msp_osd changes to 1.16
@dk7xe could you test this as well?
Hm this is a bummer it won't fit in flash px4_fmu-v6x using GCC 9.3.1 but with GCC 13.2.1 it fits.
Tested successfully on my buggy3 with NXP MR-VMU-RT1176
NuttShell (NSH) NuttX-11.0.0
nsh> ver all
HW arch: PX4_FMU_V6XRT
HW type: V6XRT
HW FMUM ID: 0x000
HW BASE ID: 0x003
PX4 git-hash: 4aed65b14ffcdee62c92ddb2443dae1ed8b364d4
PX4 version: 1.16.0 c0 (17825984)
PX4 git-branch: release/1.16-msp-osd
OS: NuttX
OS version: Release 11.0.0 (184549631)
OS git-hash: 886acbbdb4f061e5c0ce1a76afbcfa7cb7df9849
Build datetime: Jun 11 2025 22:28:57
Build uri: localhost
Build variant: default
Toolchain: GNU GCC, 13.2.1 20231009
PX4GUID: 00090000000000000000829297441d1a180e
MCU: i.MX RT1170 rB0, rev. 0
nsh> msp_osd status
INFO [msp_osd] Running on /dev/ttyS5
INFO [msp_osd] initialized: 1
INFO [msp_osd] initialization issues: 0
INFO [msp_osd] scroll rate: 125
INFO [msp_osd] successful sends: 116425
INFO [msp_osd] unsuccessful sends: 0
INFO [msp_osd] Current message: MAN|DSRM|N
INFO [msp_osd] === VTX Configuration ===
INFO [msp_osd] Channel: R1
INFO [msp_osd] Frequency: 5658 MHz
INFO [msp_osd] Transmit power: 25 mW
INFO [msp_osd] PIT Mode: Off
INFO [msp_osd] Low Power Disarm: Off
INFO [msp_osd] PIT Frequency: 0 MHz
nsh>
https://youtu.be/qe2rYYuXE20
https://logs.px4.io/plot_app?log=fd04708f-2336-4d1c-800c-7d705770e727
@dagar @mrpollo
Can't think of a good way to fix the flash either we:
- Nuke out the channel switching functionality, gets us just right on the flash side. But at least we keep stick command and the other improvements
- Nuke out a sensor driver
- Don't back-port this
🔎 FLASH Analysis
px4_fmu-v5x [Total VM Diff: 1600 byte (0.08 %)]
FILE SIZE VM SIZE
-------------- --------------
+0.1% +1.55Ki +0.1% +1.55Ki .text
+23% +796 +23% +796 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+0.1% +373 +0.1% +373 [section .text]
+161% +323 +161% +323 ../../src/drivers/osd/msp_osd/MspV1.cpp
+0.2% +56 +0.2% +56 ../../src/lib/parameters/parameters.cpp
+8.4% +36 +8.4% +36 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+0.0% +21 +0.0% +21 ROMFS/nsh_romfsimg.c
+0.3% +3 +0.3% +3 common/arm_assert.c
-0.3% -4 -0.3% -4 ../../src/drivers/telemetry/hott/messages.cpp
-0.9% -20 -0.9% -20 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+0.1% +16 +0.1% +16 .ramfunc
+2.0% +12 +2.0% +12 ../../src/lib/parameters/parameters.cpp
+0.6% +4 +0.6% +4 [section .ramfunc]
+0.0% +194 [ = ] 0 .debug_abbrev
+4.6% +39 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
-0.3% -12 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+5.0% +111 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+11% +56 [ = ] 0 ../../src/lib/version/version.c
+0.1% +112 [ = ] 0 .debug_aranges
+33% +16 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+4.8% +16 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+69% +88 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-5.0% -8 [ = ] 0 ../../src/lib/version/version.c
+0.1% +488 [ = ] 0 .debug_frame
+0.0% +10.4Ki [ = ] 0 .debug_info
+0.0% +8 [ = ] 0 ../../src/drivers/batt_smbus/batt_smbus.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/dshot/DShot.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/heater/heater.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled/rgbled.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled_is31fl3195/rgbled_is31fl3195.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled_lp5562/rgbled_lp5562.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp
+2.2% +65 [ = ] 0 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+25% +745 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+7.3% +4.10Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+12% +4.03Ki [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina226/ina226.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina226/ina226_main.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina228/ina228.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina228/ina228_main.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina238/ina238.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina238/ina238_main.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/pm_selector_auterion/PowerMonitorSelectorAuterion.cpp
-100.0% +1.36Ki [ = ] 0 [175 Others]
+0.1% +3.41Ki [ = ] 0 .debug_line
+5.7% +54 [ = ] 0 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+49% +476 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+19% +1.33Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+37% +1.55Ki [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+0.1% +29 [ = ] 0 ../../src/lib/parameters/parameters.cpp
-1.3% -25 [ = ] 0 ../../src/lib/version/version.c
+0.0% +1 [ = ] 0 ../../src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp
-0.3% -3 [ = ] 0 task/task_cancelpt.c
+0.1% +3.85Ki [ = ] 0 .debug_loc
+7.6% +45 [ = ] 0 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+121% +564 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+19% +1.19Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+16% +787 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-0.0% -2 [ = ] 0 ../../src/drivers/uavcan/uavcan_main.cpp
+0.0% +15 [ = ] 0 ../../src/drivers/uavcan/uavcan_servers.cpp
+0.1% +15 [ = ] 0 ../../src/lib/mixer_module/mixer_module.cpp
-0.2% -50 [ = ] 0 ../../src/lib/parameters/parameters.cpp
+0.6% +48 [ = ] 0 ../../src/modules/control_allocator/VehicleActuatorEffectiveness/ActuatorEffectivenessTiltrotorVTOL.cpp
+0.7% +186 [ = ] 0 ../../src/modules/flight_mode_manager/tasks/Orbit/FlightTaskOrbit.cpp
-0.1% -16 [ = ] 0 ../../src/modules/navigator/navigator_main.cpp
-0.1% -75 [ = ] 0 ../../src/modules/sensors/vehicle_imu/VehicleIMU.cpp
+0.4% +1.18Ki [ = ] 0 [section .debug_loc]
+0.1% +715 [ = ] 0 .debug_ranges
+58% +56 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+9.3% +144 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+41% +320 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-2.6% -8 [ = ] 0 ../../src/lib/version/version.c
+0.4% +200 [ = ] 0 [section .debug_ranges]
+4.7% +3 [ = ] 0 task/task_cancelpt.c
+0.1% +3.51Ki [ = ] 0 .debug_str
-1.7% -7 [ = ] 0 ../../boards/px4/fmu-v5x/src/timer_config.cpp
+0.0% +13 [ = ] 0 ../../src/drivers/batt_smbus/batt_smbus.cpp
-12.2% -15 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+15% +1.83Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+216% +1.72Ki [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+0.3% +11 [ = ] 0 ../../src/drivers/rc_input/RCInput.cpp
-0.0% -7 [ = ] 0 ../../src/drivers/uavcan/sensors/differential_pressure.cpp
-2.4% -12 [ = ] 0 ../../src/modules/commander/HealthAndArmingChecks/checks/powerCheck.cpp
-0.0% -5 [ = ] 0 ../../src/modules/fw_autotune_attitude_control/fw_autotune_attitude_control.cpp
-0.6% -19 [ = ] 0 ../../src/modules/gimbal/gimbal.cpp
+0.5% +13 [ = ] 0 ../../src/modules/sensors/vehicle_gps_position/VehicleGPSPosition.cpp
-0.0% -12 [ = ] 0 src/modules/mavlink/modules__mavlink_unity.cpp
+0.0% +320 [ = ] 0 .strtab
+58% +45 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+4.1% +43 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+23% +232 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-8.1% -32 [ = ] 0 ../../src/lib/version/version.c
+0.1% +32 [ = ] 0 [section .strtab]
+0.1% +464 [ = ] 0 .symtab
+75% +96 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+7.2% +112 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+31% +208 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-1.3% -16 [ = ] 0 ../../src/drivers/power_monitor/ina228/ina228.cpp
-0.4% -16 [ = ] 0 ../../src/drivers/uavcan/sensors/sensor_bridge.cpp
-0.4% -16 [ = ] 0 ../../src/drivers/uavcan/uavcan_servers.cpp
-5.4% -48 [ = ] 0 ../../src/lib/version/version.c
-1.3% -16 [ = ] 0 ../../src/modules/commander/ModeManagement.cpp
+0.3% +16 [ = ] 0 ../../src/modules/fw_pos_control/FixedwingPositionControl.cpp
-1.9% -16 [ = ] 0 ../../src/modules/navigator/MissionFeasibility/FeasibilityChecker.cpp
+0.3% +160 [ = ] 0 [section .symtab]
-2.0% -1.56Ki [ = ] 0 [Unmapped]
+0.0% +23.4Ki +0.1% +1.56Ki TOTAL
px4_fmu-v6x [Total VM Diff: 1504 byte (0.08 %)]
FILE SIZE VM SIZE
-------------- --------------
+0.1% +1.47Ki +0.1% +1.47Ki .text
+23% +796 +23% +796 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+0.2% +400 +0.2% +400 [section .text]
+161% +323 +161% +323 ../../src/drivers/osd/msp_osd/MspV1.cpp
+0.0% +47 +0.0% +47 ROMFS/nsh_romfsimg.c
+8.4% +36 +8.4% +36 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+0.2% +3 +0.2% +3 ../../src/systemcmds/ver/ver.cpp
+0.3% +3 +0.3% +3 common/arm_assert.c
-0.1% -4 -0.1% -4 ../../src/lib/mixer_module/mixer_module.cpp
-0.9% -20 -0.9% -20 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-0.3% -80 -0.3% -80 ../../src/lib/parameters/parameters.cpp
+0.0% +194 [ = ] 0 .debug_abbrev
+4.6% +39 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
-0.3% -12 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+5.0% +111 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+11% +56 [ = ] 0 ../../src/lib/version/version.c
+0.1% +112 [ = ] 0 .debug_aranges
+33% +16 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+4.8% +16 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+69% +88 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-5.0% -8 [ = ] 0 ../../src/lib/version/version.c
+0.1% +476 [ = ] 0 .debug_frame
+0.0% +10.3Ki [ = ] 0 .debug_info
+0.0% +8 [ = ] 0 ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/distance_sensor/lightware_laser_i2c/lightware_laser_i2c.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/dshot/DShot.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/heater/heater.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled/rgbled.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled_is31fl3195/rgbled_is31fl3195.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled_lp5562/rgbled_lp5562.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/lights/rgbled_ncp5623c/rgbled_ncp5623c.cpp
+2.2% +65 [ = ] 0 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+25% +745 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+7.4% +4.10Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+12% +4.03Ki [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina226/ina226.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina226/ina226_main.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina228/ina228.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina228/ina228_main.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina238/ina238.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/ina238/ina238_main.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/power_monitor/pm_selector_auterion/PowerMonitorSelectorAuterion.cpp
+0.0% +8 [ = ] 0 ../../src/drivers/pwm_out/PWMOut.cpp
-100.0% +1.27Ki [ = ] 0 [164 Others]
+0.1% +3.32Ki [ = ] 0 .debug_line
+5.7% +54 [ = ] 0 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+49% +476 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+19% +1.33Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+37% +1.55Ki [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-0.3% -66 [ = ] 0 ../../src/lib/parameters/parameters.cpp
-1.3% -25 [ = ] 0 ../../src/lib/version/version.c
+0.1% +1 [ = ] 0 task/task_cancelpt.c
+0.1% +3.81Ki [ = ] 0 .debug_loc
+7.6% +45 [ = ] 0 ../../src/drivers/osd/msp_osd/MessageDisplay/MessageDisplay.cpp
+121% +564 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+19% +1.19Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+16% +787 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+0.0% +26 [ = ] 0 ../../src/drivers/uavcan/uavcan_main.cpp
-0.0% -15 [ = ] 0 ../../src/drivers/uavcan/uavcan_servers.cpp
+0.2% +52 [ = ] 0 ../../src/lib/parameters/parameters.cpp
+0.4% +1.19Ki [ = ] 0 [section .debug_loc]
+0.1% +657 [ = ] 0 .debug_ranges
+58% +56 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+9.3% +144 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+41% +320 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-0.4% -56 [ = ] 0 ../../src/lib/parameters/parameters.cpp
-2.6% -8 [ = ] 0 ../../src/lib/version/version.c
+0.4% +200 [ = ] 0 [section .debug_ranges]
+1.5% +1 [ = ] 0 task/task_cancelpt.c
+0.1% +3.49Ki [ = ] 0 .debug_str
-1.6% -7 [ = ] 0 ../../boards/px4/fmu-v6x/src/timer_config.cpp
+0.0% +13 [ = ] 0 ../../src/drivers/cdcacm_autostart/cdcacm_autostart.cpp
-4.0% -4 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+14% +1.80Ki [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+17% +1.72Ki [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
+0.2% +11 [ = ] 0 ../../src/drivers/rc_input/RCInput.cpp
-0.0% -7 [ = ] 0 ../../src/drivers/uavcan/sensors/differential_pressure.cpp
-2.4% -12 [ = ] 0 ../../src/modules/commander/HealthAndArmingChecks/checks/powerCheck.cpp
-0.0% -5 [ = ] 0 ../../src/modules/fw_autotune_attitude_control/fw_autotune_attitude_control.cpp
-0.6% -19 [ = ] 0 ../../src/modules/gimbal/gimbal.cpp
+0.5% +13 [ = ] 0 ../../src/modules/sensors/vehicle_gps_position/VehicleGPSPosition.cpp
-0.0% -12 [ = ] 0 src/modules/mavlink/modules__mavlink_unity.cpp
+0.0% +320 [ = ] 0 .strtab
+48% +45 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+4.0% +43 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+22% +232 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-8.1% -32 [ = ] 0 ../../src/lib/version/version.c
+0.0% +32 [ = ] 0 [section .strtab]
+0.1% +464 [ = ] 0 .symtab
+67% +96 [ = ] 0 ../../src/drivers/osd/msp_osd/MspV1.cpp
+7.2% +112 [ = ] 0 ../../src/drivers/osd/msp_osd/msp_osd.cpp
+28% +192 [ = ] 0 ../../src/drivers/osd/msp_osd/uorb_to_msp.cpp
-0.4% -16 [ = ] 0 ../../src/drivers/uavcan/uavcan_servers.cpp
-7.0% -64 [ = ] 0 ../../src/lib/version/version.c
-5.3% -16 [ = ] 0 ../../src/modules/flight_mode_manager/tasks/Utility/StickTiltXY.cpp
+0.5% +32 [ = ] 0 ../../src/modules/fw_pos_control/FixedwingPositionControl.cpp
-1.9% -16 [ = ] 0 ../../src/modules/navigator/MissionFeasibility/FeasibilityChecker.cpp
+0.3% +144 [ = ] 0 [section .symtab]
-2.0% -1.47Ki [ = ] 0 [Unmapped]
+0.0% +23.1Ki +0.1% +1.47Ki TOTAL
Updated: 2025-06-18T16:55:10
Make it available just for 6X-RT and Tropic VMU could be another option.
Let's discuss this on the call, there are a few options, I think @dk7xe suggestion is also a good idea.
Targets out of flash
- kakuteh7-wing
- px4_fmu-v6x
I've saved a little bit of flash with https://github.com/PX4/PX4-Autopilot/pull/25077.
Rebased on latest release/1.16.