Displaying custom sensor data (temp/humidity) from ESP32-C3 via MAVLink

Hardware:

  • Flight controller: DAKE FPV H743, running official ArduPlane 4.6.3
  • Companion device: ESP32-C3 connected via UART (TX=GPIO4, RX=GPIO3) at 57600 baud
  • DJI O4 PRO OSD

Goal:
Send temperature and humidity readings from the ESP32 to the FC over MAVLink, and display them as numeric values in OSD.

What I tried:

  1. SCALED_PRESSURE2 — Sent temperature via the temperature field (cdegC) with SYS_ID=1. Data arrives correctly in MAVLink Inspector but press_temp2 stays 0 in the status tab. Tried BARO_PROBE_EXT=1 and rebooting, no effect.

  2. NAMED_VALUE_FLOAT — Sends fine and is visible in MAVLink Inspector under the correct vehicle. Does not appear in the status tab. Would need a Lua script on the FC to push values into SCR_USER1/2, but…

  3. Lua scriptingSCR_ENABLE=1 is set and the parameter exists. However MAVLink FTP is completely non-functional on this board — every operation (list, mkdir, put) fails with error [10], including listing root /. No SD card slot and no USB mass storage mode, so there is no known way to upload a Lua script.

  4. BATTERY_STATUS (BATT2) — Sent battery status message with temperature field populated, visible in MAVLink Inspector. BATT2_MONITOR has no MAVLink input option (option list goes up to 32, no MAVLink entry).

  5. STATUSTEXT — Values appear in Mission Planner Messages tab and in the HUD when using MAV_SEVERITY_CRITICAL. However the OSD only displays one-time system messages (e.g. “Chip full”), not the repeating STATUSTEXT from the ESP32.

Core question:
Is there any MAVLink message type that ArduPilot 4.6.3 will natively accept from a companion device (non-autopilot SYS_ID or same SYS_ID) and expose as a numeric value in the status tab and OSD, without requiring Lua scripting or SD card access?

Also: is there a known fix for MAVLink FTP failing completely on H743 boards with internal flash? If FTP worked we could upload Lua and use SCR_USER1/2 which seems like the right solution.