diff --git a/src/modules/events/rc_loss_alarm.cpp b/src/modules/events/rc_loss_alarm.cpp
index 4e18db32c432e4e1cf26595854b3317cb9129f71..c63c1d8c32d0aa6af66e56be21a912ef488c6f5c 100644
--- a/src/modules/events/rc_loss_alarm.cpp
+++ b/src/modules/events/rc_loss_alarm.cpp
@@ -86,8 +86,12 @@ void RC_Loss_Alarm::process()
 
 	if (_was_armed && _had_rc && _vehicle_status.rc_signal_lost &&
 	    _vehicle_status.arming_state != vehicle_status_s::ARMING_STATE_ARMED) {
-
 		play_tune();
+		_alarm_playing = true;
+
+	} else if (_alarm_playing) {
+		stop_tune();
+		_alarm_playing = false;
 	}
 }
 
@@ -107,5 +111,19 @@ void RC_Loss_Alarm::play_tune()
 	}
 }
 
+void RC_Loss_Alarm::stop_tune()
+{
+	struct tune_control_s tune_control = {};
+	tune_control.tune_override = true;
+	tune_control.timestamp = hrt_absolute_time();
+
+	if (_tune_control_pub == nullptr) {
+		_tune_control_pub = orb_advertise(ORB_ID(tune_control), &tune_control);
+
+	} else	{
+		orb_publish(ORB_ID(tune_control), _tune_control_pub, &tune_control);
+	}
+}
+
 } /* namespace rc_loss */
 } /* namespace events */
diff --git a/src/modules/events/rc_loss_alarm.h b/src/modules/events/rc_loss_alarm.h
index 9c2792f9beccf7c6e3e4bf45d9ab25f32ed7b737..0000b9033dfdf115650c2ad6e2f81a3bd479328d 100644
--- a/src/modules/events/rc_loss_alarm.h
+++ b/src/modules/events/rc_loss_alarm.h
@@ -68,9 +68,13 @@ private:
 	/** Publish tune control to sound alarm */
 	void play_tune();
 
+	/** Publish tune control to interrupt any sound */
+	void stop_tune();
+
 	struct vehicle_status_s	_vehicle_status = {};
 	bool 		_was_armed = false;
 	bool 		_had_rc = false;  // Don't trigger alarm for systems without RC
+	bool		_alarm_playing = false;
 	orb_advert_t 	_tune_control_pub = nullptr;
 	const events::SubscriberHandler &_subscriber_handler;
 };