diff --git a/Marlin/src/Marlin.cpp b/Marlin/src/Marlin.cpp
index 986cf2ae685035360adfbdeeb5685d42f4f8152c..9dcc90b75a481f6d4c61e6cae2511ac36cf84842 100644
--- a/Marlin/src/Marlin.cpp
+++ b/Marlin/src/Marlin.cpp
@@ -359,10 +359,6 @@ void quickstop_stepper() {
   SYNC_PLAN_POSITION_KINEMATIC();
 }
 
-#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
-  #include "gcode/control/M605.h"
-#endif
-
 #if ENABLED(LIN_ADVANCE)
   #include "gcode/feature/advance/M900.h"
 #endif
diff --git a/Marlin/src/gcode/control/M605.h b/Marlin/src/gcode/control/M605.cpp
similarity index 90%
rename from Marlin/src/gcode/control/M605.h
rename to Marlin/src/gcode/control/M605.cpp
index ab423ab609e2233bd05371968e8905665c978d04..4cfa571990be1d7831963fb19c544c84c56f6636 100644
--- a/Marlin/src/gcode/control/M605.h
+++ b/Marlin/src/gcode/control/M605.cpp
@@ -20,6 +20,14 @@
  *
  */
 
+#include "../../inc/MarlinConfig.h"
+
+#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
+
+#include "../gcode.h"
+#include "../../module/motion.h"
+#include "../../module/stepper.h"
+
 #if ENABLED(DUAL_X_CARRIAGE)
 
   /**
@@ -34,7 +42,7 @@
    *
    *    Note: the X axis should be homed after changing dual x-carriage mode.
    */
-  void gcode_M605() {
+  void GcodeSuite::M605() {
     stepper.synchronize();
     if (parser.seen('S')) dual_x_carriage_mode = (DualXMode)parser.value_byte();
     switch (dual_x_carriage_mode) {
@@ -66,7 +74,7 @@
 
 #elif ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
 
-  void gcode_M605() {
+  void GcodeSuite::M605() {
     stepper.synchronize();
     extruder_duplication_enabled = parser.intval('S') == (int)DXC_DUPLICATION_MODE;
     SERIAL_ECHO_START();
@@ -74,3 +82,5 @@
   }
 
 #endif // DUAL_NOZZLE_DUPLICATION_MODE
+
+#endif // DUAL_X_CARRIAGE || DUAL_NOZZLE_DUPLICATION_MODE
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index bdea78350f56b7b63de5d1ba5cf598624311cd0f..f2b7017226f1b6df24fd1f8e2a5d75c8ac0709f2 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -122,7 +122,6 @@ extern void gcode_M165();
 extern void gcode_M350();
 extern void gcode_M351();
 extern void gcode_M355();
-extern void gcode_M605();
 extern void gcode_M900();
 extern void gcode_M906();
 extern void gcode_M911();
@@ -651,10 +650,8 @@ void GcodeSuite::process_next_command() {
       #endif // ADVANCED_PAUSE_FEATURE
 
       #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
-        case 605: // M605: Set Dual X Carriage movement mode
-          gcode_M605();
-          break;
-      #endif // DUAL_X_CARRIAGE
+        case 605: M605(); break;  // M605: Set Dual X Carriage movement mode
+      #endif
 
       #if ENABLED(MK2_MULTIPLEXER)
         case 702: M702(); break;  // M702: Unload all extruders