ArduPilotMega Messages Not Streaming Despite Acknowledgment

We are using ArduCopter 4.6.3 with a custom ROS 2 C++ MAVLink bridge utilizing the c_library_v2 (common and ardupilotmega dialects). We are successfully sending MAV_CMD_SET_MESSAGE_INTERVAL (ID 511) commands and receiving numerous common messages (IDs 30, 31, 77, 105, 241, etc.). However, we are unable to receive the MAVLINK_MSG_ID_MCU_STATUS (ID 11039) message, and a subsequent attempt to change EKF source via MAV_CMD_SET_EKF_SOURCE_SET (ID 42007) also fails to execute.

Crucially, our logs confirm that the FCU acknowledges both requests as successful, indicating the issue is on the ArduPilot firmware’s side, not the MAVLink parsing/sending in the bridge:

  1. Streaming Request (ID 11039): The request for MCU_STATUS stream rate results in a COMMAND_ACK (ID 77) with Result: 0 (MAV_RESULT_ACCEPTED).

  2. Custom Command (ID 42007): The request to change the EKF source set results in a COMMAND_ACK (ID 77) with Result: 0 (MAV_RESULT_ACCEPTED) but the EKF source parameter remains unchanged.

We suspect that the message generation for MCU_STATUS might be disabled or uncompiled in the firmware, and the EKF command logic is being immediately overridden or rejected internally, despite the formal acceptance. We need guidance on which ArduPilot parameters or compilation flags must be checked/enabled to force the generation of MCU_STATUS data and to successfully execute MAV_CMD_SET_EKF_SOURCE_SET.

We also set SR1 parameters of our serial1 (UART communication between FCU and our mission computer (CM5) ) to:
SR1_ADSB → 0
SR1_EXT_START → 5
SR1_EXTRA1 → 5
SR1_EXTRA2 → 5
SR1_EXTRA3 → 5
SR1_PARAMS → 5
SR1_POSITION → 5
SR1_RAW_CTRL → 0
SR1_RAW_SENS → 0
SR1_RC_CHAN → 5

Best Regardes!
Ran