diff --git a/src/ConRIGv2/Buttons/Buttons.cpp b/src/ConRIGv2/Buttons/Buttons.cpp
index f30478643745bf43486aa25a24b2980da0fd1913..45a1efedca1be848e80e0dd336fe1d743da1494b 100644
--- a/src/ConRIGv2/Buttons/Buttons.cpp
+++ b/src/ConRIGv2/Buttons/Buttons.cpp
@@ -27,11 +27,40 @@
 #include <ConRIGv2/Radio/Radio.h>
 #include <interfaces-impl/hwmapping.h>
 
+#include <iomanip>
+#include <iostream>
+
 using namespace std;
 using namespace miosix;
 using namespace Boardcore;
 using namespace ConRIGv2;
 
+void printStateDiff(const mavlink_conrig_state_tc_t& oldState,
+                    const mavlink_conrig_state_tc_t& state)
+{
+#define BUTTON(btn)                                                        \
+    std::setw(8) << std::right << (state.btn != oldState.btn ? "*  " : "") \
+                 << std::setw(20) << std::left << #btn << std::setw(4)     \
+                 << std::left << (state.btn ? "On" : "Off")
+
+    std::cout << "Button state changed: \n"
+              << BUTTON(arm_switch) << "\n"
+              << BUTTON(ox_filling_btn) << "\n"
+              << BUTTON(ox_release_btn) << "\n"
+              << BUTTON(ox_detach_btn) << "\n"
+              << BUTTON(ox_venting_btn) << "\n"
+              << BUTTON(n2_filling_btn) << "\n"
+              << BUTTON(n2_release_btn) << "\n"
+              << BUTTON(n2_detach_btn) << "\n"
+              << BUTTON(n2_quenching_btn) << "\n"
+              << BUTTON(n2_3way_btn) << "\n"
+              << BUTTON(tars3_btn) << "\n"
+              << BUTTON(tars3m_btn) << "\n"
+              << BUTTON(nitrogen_btn) << "\n"
+              << BUTTON(ignition_btn) << "\n";
+#undef BUTTON
+}
+
 bool Buttons::start()
 {
     TaskScheduler& scheduler =
@@ -45,6 +74,9 @@ mavlink_conrig_state_tc_t Buttons::getState() { return state; }
 
 void Buttons::periodicStatusCheck()
 {
+    auto oldState = state;
+    (void)oldState;  // Avoid unused variable warning, only used in debug mode
+
 #define CHECK_BUTTON(cond, btn)                           \
     if (cond)                                             \
     {                                                     \
@@ -52,7 +84,6 @@ void Buttons::periodicStatusCheck()
         {                                                 \
             guard.btn = 0;                                \
             state.btn = true;                             \
-            LOG_DEBUG(logger, #btn " button pressed");    \
         }                                                 \
         else                                              \
         {                                                 \
@@ -65,10 +96,17 @@ void Buttons::periodicStatusCheck()
         state.btn = false;                                \
     }
 
+    // Handle switches (levers)
     state.arm_switch  = btns::arm::value();
     state.n2_3way_btn = btns::n2_3way::value();
+    // The tars lever has 2 position that close the circuit on a different pin
+    // Exclude the case where both are pressed
+    state.tars3_btn  = btns::tars3::value() && !btns::tars3m::value();
+    state.tars3m_btn = btns::tars3m::value() && !btns::tars3::value();
 
+    // The ignition button is considered only if the arm switch is active
     CHECK_BUTTON(!btns::ignition::value() && state.arm_switch, ignition_btn);
+
     CHECK_BUTTON(btns::ox_filling::value(), ox_filling_btn);
     CHECK_BUTTON(btns::ox_release::value(), ox_release_btn);
     CHECK_BUTTON(btns::ox_detach::value(), ox_detach_btn);
@@ -78,13 +116,17 @@ void Buttons::periodicStatusCheck()
     CHECK_BUTTON(btns::n2_detach::value(), n2_detach_btn);
     CHECK_BUTTON(btns::n2_quenching::value(), n2_quenching_btn);
     CHECK_BUTTON(btns::nitrogen::value(), nitrogen_btn);
-    CHECK_BUTTON(btns::tars3::value(), tars3_btn);
-    CHECK_BUTTON(btns::tars3m::value(), tars3m_btn);
 
 #undef CHECK_BUTTON
 
     // Set the internal button state in Radio module
     getModule<Radio>()->updateButtonState(state);
+
+#ifndef NDEBUG
+    // Debug print
+    if (std::memcmp(&oldState, &state, sizeof(state)) != 0)
+        printStateDiff(oldState, state);
+#endif
 }
 
 void Buttons::enableIgnition() { ui::armedLed::high(); }