diff --git a/dev/source/docs/ArduCopter_MAVLink_Messages.rst b/dev/source/docs/ArduCopter_MAVLink_Messages.rst
new file mode 100644
index 0000000000..4a3f9c9a88
--- /dev/null
+++ b/dev/source/docs/ArduCopter_MAVLink_Messages.rst
@@ -0,0 +1,765 @@
+.. _ArduCopter_MAVLink_messages:
+
+================
+MAVLink Messages
+================
+
+
+The `MAVLink `_ protocol supports a variety of features and functionalities, but not all `messages `_ or `commands `_ are implemented by the ArduPilot ecosystem, or relevant to a particular autopilot firmware.
+
+This page is auto-generated from analysing the ArduCopter source code, and provides an indication of which messages (and commands) are handled by, requestable from, and sent from the firmware. A message being handled does not guarantee full support, but at least shows that the autopilot is aware it exists, and will try to do something meaningful with it.
+
+Known :ref:`unsupported messages ` (and commands) are shown at the end.
+
+The autopilot includes a set of :ref:`mavlink_stream_groups` for convenience, which allow configuring the stream rates of groups of requestable messages by setting parameter values. It is also possible to manually request messages, and request individual messages be streamed at a specified rate.
+
+
+.. _mavlink_incoming_messages:
+
+Incoming Messages
+=================
+
+Messages the autopilot handles when received.
+
+.. csv-table::
+ :header: MAVLink Message, Code Source, MAVLink Dialect
+
+
+ `ADSB_VEHICLE `_, `AP_ADSB/AP_ADSB.cpp `_, common
+ `ATT_POS_MOCAP `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `AUTOPILOT_VERSION_REQUEST `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `CAMERA_INFORMATION `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `CANFD_FRAME `_, `AP_CANManager/AP_CANManager.cpp `_, common
+ `CAN_FILTER_MODIFY `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `CAN_FRAME `_, `AP_CANManager/AP_CANManager.cpp `_, common
+ `COMMAND_ACK `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `COMMAND_INT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `COMMAND_LONG `_, `AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp `_, common
+ `DATA96 `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `DEVICE_OP_READ `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `DEVICE_OP_WRITE `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `DIGICAM_CONTROL `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `DISTANCE_SENSOR `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `EFI_STATUS `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `FENCE_FETCH_POINT `_, `AC_Fence/AC_PolyFence_loader.cpp `_, ardupilotmega
+ `FENCE_POINT `_, `AC_Fence/AC_PolyFence_loader.cpp `_, ardupilotmega
+ `FILE_TRANSFER_PROTOCOL `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `FOLLOW_TARGET `_, `AP_Follow/AP_Follow.cpp `_, common
+ `GIMBAL_DEVICE_ATTITUDE_STATUS `_, `AP_Mount/AP_Mount.cpp `_, common
+ `GIMBAL_DEVICE_INFORMATION `_, `AP_Mount/AP_Mount.cpp `_, common
+ `GIMBAL_MANAGER_SET_ATTITUDE `_, `AP_Mount/AP_Mount.cpp `_, common
+ `GIMBAL_MANAGER_SET_PITCHYAW `_, `AP_Mount/AP_Mount.cpp `_, common
+ `GIMBAL_REPORT `_, `AP_Mount/AP_Mount.cpp `_, ardupilotmega
+ `GLOBAL_POSITION_INT `_, `AP_Follow/AP_Follow.cpp `_, common
+ `GLOBAL_VISION_POSITION_ESTIMATE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `GOPRO_HEARTBEAT `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `GPS_INJECT_DATA `_, `AP_GPS/AP_GPS.cpp `_, common
+ `GPS_INPUT `_, `AP_GPS/AP_GPS_MAV.cpp `_, common
+ `GPS_RTCM_DATA `_, `AP_GPS/AP_GPS.cpp `_, common
+ `HEARTBEAT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `HIL_GPS `_, `AP_GPS/AP_GPS_MAV.cpp `_, common
+ `LANDING_TARGET `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `LED_CONTROL `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `LOG_ERASE `_, `AP_Logger/AP_Logger_MAVLinkLogTransfer.cpp `_, common
+ `LOG_REQUEST_DATA `_, `AP_Logger/AP_Logger_MAVLinkLogTransfer.cpp `_, common
+ `LOG_REQUEST_END `_, `AP_Logger/AP_Logger_MAVLinkLogTransfer.cpp `_, common
+ `LOG_REQUEST_LIST `_, `AP_Logger/AP_Logger_MAVLinkLogTransfer.cpp `_, common
+ `MANUAL_CONTROL `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_ACK `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_CLEAR_ALL `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_COUNT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_ITEM `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_ITEM_INT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_REQUEST `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_REQUEST_INT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_REQUEST_LIST `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_SET_CURRENT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MISSION_WRITE_PARTIAL_LIST `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MOUNT_CONFIGURE `_, `AP_Mount/AP_Mount.cpp `_, ardupilotmega
+ `MOUNT_CONTROL `_, `ArduCopter/GCS_Mavlink.cpp `_, ardupilotmega
+ `NAMED_VALUE_FLOAT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `NAMED_VALUE_INT `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `OBSTACLE_DISTANCE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `OBSTACLE_DISTANCE_3D `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `ODOMETRY `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `OPEN_DRONE_ID_ARM_STATUS `_, `AP_OpenDroneID/AP_OpenDroneID.cpp `_, common
+ `OPEN_DRONE_ID_BASIC_ID `_, `AP_OpenDroneID/AP_OpenDroneID.cpp `_, common
+ `OPEN_DRONE_ID_OPERATOR_ID `_, `AP_OpenDroneID/AP_OpenDroneID.cpp `_, common
+ `OPEN_DRONE_ID_SELF_ID `_, `AP_OpenDroneID/AP_OpenDroneID.cpp `_, common
+ `OPEN_DRONE_ID_SYSTEM `_, `AP_OpenDroneID/AP_OpenDroneID.cpp `_, common
+ `OPEN_DRONE_ID_SYSTEM_UPDATE `_, `AP_OpenDroneID/AP_OpenDroneID.cpp `_, common
+ `OPTICAL_FLOW `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `OSD_PARAM_CONFIG `_, `AP_OSD/AP_OSD.cpp `_, ardupilotmega
+ `OSD_PARAM_SHOW_CONFIG `_, `AP_OSD/AP_OSD.cpp `_, ardupilotmega
+ `PARAM_REQUEST_LIST `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `PARAM_REQUEST_READ `_, `AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp `_, common
+ `PARAM_SET `_, `AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp `_, common
+ `PARAM_VALUE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `PLAY_TUNE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `RADIO `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `RADIO_RC_CHANNELS `_, `GCS_MAVLink/GCS_Common.cpp `_, development
+ `RADIO_STATUS `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `RALLY_FETCH_POINT `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `RALLY_POINT `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `RC_CHANNELS_OVERRIDE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `REMOTE_LOG_BLOCK_STATUS `_, `AP_Logger/AP_Logger.cpp `_, ardupilotmega
+ `REQUEST_DATA_STREAM `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `SECURE_COMMAND `_, `AP_CheckFirmware/AP_CheckFirmware_secure_command.cpp `_, ardupilotmega
+ `SECURE_COMMAND_REPLY `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `SERIAL_CONTROL `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `SETUP_SIGNING `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `SET_ATTITUDE_TARGET `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `SET_GPS_GLOBAL_ORIGIN `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `SET_MODE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `SET_POSITION_TARGET_GLOBAL_INT `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `SET_POSITION_TARGET_LOCAL_NED `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `STATUSTEXT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `SYSTEM_TIME `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `TERRAIN_CHECK `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `TERRAIN_DATA `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `TIMESYNC `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `UAVIONIX_ADSB_OUT_CFG `_, `AP_ADSB/AP_ADSB.cpp `_, uAvionix
+ `UAVIONIX_ADSB_OUT_CONTROL `_, `AP_ADSB/AP_ADSB.cpp `_, uAvionix
+ `UAVIONIX_ADSB_OUT_DYNAMIC `_, `AP_ADSB/AP_ADSB.cpp `_, uAvionix
+ `UAVIONIX_ADSB_TRANSCEIVER_HEALTH_REPORT `_, `AP_ADSB/AP_ADSB.cpp `_, uAvionix
+ `VICON_POSITION_ESTIMATE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `VISION_POSITION_DELTA `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `VISION_POSITION_ESTIMATE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `VISION_SPEED_ESTIMATE `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+
+.. _mavlink_incoming_commands:
+
+Incoming Commands
+=================
+
+Commands the autopilot handles when received.
+
+.. csv-table::
+ :header: MAVLink Message, Code Source, MAVLink Dialect
+
+
+ `MAV_CMD_ACCELCAL_VEHICLE_POS `_, `AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp `_, ardupilotmega
+ `MAV_CMD_AIRFRAME_CONFIGURATION `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MAV_CMD_BATTERY_RESET `_, `AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp `_, ardupilotmega
+ `MAV_CMD_CAMERA_STOP_TRACKING `_, `AP_Camera/AP_Camera.cpp `_, common
+ `MAV_CMD_CAMERA_TRACK_POINT `_, `AP_Camera/AP_Camera.cpp `_, common
+ `MAV_CMD_CAMERA_TRACK_RECTANGLE `_, `AP_Camera/AP_Camera.cpp `_, common
+ `MAV_CMD_CAN_FORWARD `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MAV_CMD_COMPONENT_ARM_DISARM `_, `AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp `_, common
+ `MAV_CMD_CONDITION_DELAY `_, `ArduCopter/mode_auto.cpp `_, common
+ `MAV_CMD_CONDITION_DISTANCE `_, `ArduCopter/mode_auto.cpp `_, common
+ `MAV_CMD_CONDITION_YAW `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `MAV_CMD_CONTROL_HIGH_LATENCY `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MAV_CMD_DEBUG_TRAP `_, `GCS_MAVLink/GCS_Common.cpp `_, ardupilotmega
+ `MAV_CMD_DO_ACCEPT_MAG_CAL `_, `AP_Compass/AP_Compass_Calibration.cpp `_, ardupilotmega
+ `MAV_CMD_DO_ADSB_OUT_IDENT `_, `GCS_MAVLink/GCS_Common.cpp `_, common
+ `MAV_CMD_DO_AUTOTUNE_ENABLE `_, `AP_Mission/AP_Mission.cpp `_, common
+ `MAV_CMD_DO_AUX_FUNCTION `_, `AP_Mission/AP_Mission.cpp `_, ardupilotmega
+ `MAV_CMD_DO_CANCEL_MAG_CAL `_, `AP_Compass/AP_Compass_Calibration.cpp `_, ardupilotmega
+ `MAV_CMD_DO_CHANGE_SPEED `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `MAV_CMD_DO_DIGICAM_CONFIGURE `_, `AP_Camera/AP_Camera.cpp `_, common
+ `MAV_CMD_DO_DIGICAM_CONTROL `_, `AP_Camera/AP_Camera.cpp `_, common
+ `MAV_CMD_DO_ENGINE_CONTROL `_, `AP_Mission/AP_Mission.cpp `_, common
+ `MAV_CMD_DO_FENCE_ENABLE `_, `ArduCopter/mode_auto.cpp `_, common
+ `MAV_CMD_DO_FLIGHTTERMINATION `_, `AP_Frsky_Telem/AP_Frsky_MAVliteMsgHandler.cpp `_, common
+ `MAV_CMD_DO_FOLLOW `_, `ArduCopter/GCS_Mavlink.cpp `_, common
+ `MAV_CMD_DO_GIMBAL_MANAGER_CONFIGURE