diff --git a/src/modules/mavlink/mavlink_main.h b/src/modules/mavlink/mavlink_main.h
index e2c21e556ef61dcdc92903a791ebace4e6785209..d98d1ad743a304356d17ad84665cbeb97fb47fc8 100644
--- a/src/modules/mavlink/mavlink_main.h
+++ b/src/modules/mavlink/mavlink_main.h
@@ -494,9 +494,9 @@ public:
 
 	bool ftp_enabled() const { return _ftp_on; }
 
-	bool hash_check_enabled() { return _param_hash_check_enabled.get(); }
-
-	bool forward_heartbeats_enabled() { return _param_heartbeat_forwarding_enabled.get(); }
+	bool hash_check_enabled() const { return _param_hash_check_enabled.get(); }
+	bool forward_heartbeats_enabled() const { return _param_heartbeat_forwarding_enabled.get(); }
+	bool odometry_loopback_enabled() const { return _param_send_odom_loopback.get(); }
 
 	struct ping_statistics_s {
 		uint64_t last_ping_time;
@@ -642,7 +642,8 @@ private:
 		(ParamBool<px4::params::MAV_FWDEXTSP>) _param_forward_externalsp,
 		(ParamInt<px4::params::MAV_BROADCAST>) _param_broadcast_mode,
 		(ParamBool<px4::params::MAV_HASH_CHK_EN>) _param_hash_check_enabled,
-		(ParamBool<px4::params::MAV_HB_FORW_EN>) _param_heartbeat_forwarding_enabled
+		(ParamBool<px4::params::MAV_HB_FORW_EN>) _param_heartbeat_forwarding_enabled,
+		(ParamBool<px4::params::MAV_ODOM_LP>) _param_send_odom_loopback
 	)
 
 	perf_counter_t		_loop_perf;			/**< loop performance counter */
diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp
index 62b399f954e11f679981812a29db0664ad0c6c53..366e9b84f29727d638ce92fa50d8c21e872141c2 100644
--- a/src/modules/mavlink/mavlink_messages.cpp
+++ b/src/modules/mavlink/mavlink_messages.cpp
@@ -2318,7 +2318,7 @@ protected:
 
 		mavlink_odometry_t msg = {};
 
-		if (_send_odom_loopback.get()) {
+		if (_mavlink->odometry_loopback_enabled()) {
 			odom_updated = _vodom_sub->update(&_vodom_time, &odom);
 			// frame matches the external vision system
 			msg.frame_id = MAV_FRAME_VISION_NED;
@@ -2361,8 +2361,8 @@ protected:
 			msg.yawspeed = odom.yawspeed;
 
 			// get the covariance matrix size
-			const size_t POS_URT_SIZE = sizeof(odom.pose_covariance) / sizeof(odom.pose_covariance[0]);
-			const size_t VEL_URT_SIZE = sizeof(odom.velocity_covariance) / sizeof(odom.velocity_covariance[0]);
+			static constexpr size_t POS_URT_SIZE = sizeof(odom.pose_covariance) / sizeof(odom.pose_covariance[0]);
+			static constexpr size_t VEL_URT_SIZE = sizeof(odom.velocity_covariance) / sizeof(odom.velocity_covariance[0]);
 			static_assert(POS_URT_SIZE == (sizeof(msg.pose_covariance) / sizeof(msg.pose_covariance[0])),
 				      "Odometry Pose Covariance matrix URT array size mismatch");
 			static_assert(VEL_URT_SIZE == (sizeof(msg.twist_covariance) / sizeof(msg.twist_covariance[0])),
diff --git a/src/modules/mavlink/mavlink_stream.cpp b/src/modules/mavlink/mavlink_stream.cpp
index f3d6c2b2ccb48799bf7b635b4534353bc2012832..f95587c8333e0de7f13cafeb97f388c8c1a2ebd8 100644
--- a/src/modules/mavlink/mavlink_stream.cpp
+++ b/src/modules/mavlink/mavlink_stream.cpp
@@ -58,7 +58,6 @@ int
 MavlinkStream::update(const hrt_abstime &t)
 {
 	update_data();
-	ModuleParams::updateParams();
 
 	// If the message has never been sent before we want
 	// to send it immediately and can return right away
diff --git a/src/modules/mavlink/mavlink_stream.h b/src/modules/mavlink/mavlink_stream.h
index e982c61e97cd65bc489023d5493f00dcc7adc88e..327911f63344fa383e5b8237cf1fb70d503eb790 100644
--- a/src/modules/mavlink/mavlink_stream.h
+++ b/src/modules/mavlink/mavlink_stream.h
@@ -127,10 +127,6 @@ protected:
 	 */
 	virtual void update_data() { }
 
-	DEFINE_PARAMETERS(
-		(ParamBool<px4::params::MAV_ODOM_LP>) _send_odom_loopback
-	)
-
 private:
 	hrt_abstime _last_sent{0};
 	bool _first_message_sent{false};