diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index c55a3d5a..4baa8e61 100644
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -7520,7 +7520,7 @@ Sigma_Exit:
     #### Usage
 
         M310                                           ; report values
-        M310 [ A ]                                     ; autotune
+        M310 [ A ] [ F ]                               ; autotune
         M310 [ S ]                                     ; set 0=disable 1=enable
         M310 [ I ] [ R ]                               ; set resistance at index
         M310 [ P | C ]                                 ; set power, capacitance
@@ -7538,12 +7538,13 @@ Sigma_Exit:
     - `W` - warning threshold (K/s; default in variant)
     - `T` - ambient temperature correction (K; default in variant)
     - `A` - autotune C+R values
+    - `F` - force model self-test state (0=off 1=on) during autotune using current values
     */
     case 310:
     {
         // parse all parameters
         float P = NAN, C = NAN, R = NAN, E = NAN, W = NAN, T = NAN;
-        int8_t I = -1, S = -1, B = -1, A = -1;
+        int8_t I = -1, S = -1, B = -1, A = -1, F = -1;
         if(code_seen('C')) C = code_value();
         if(code_seen('P')) P = code_value();
         if(code_seen('I')) I = code_value_short();
@@ -7554,6 +7555,7 @@ Sigma_Exit:
         if(code_seen('W')) W = code_value();
         if(code_seen('T')) T = code_value();
         if(code_seen('A')) A = code_value_short();
+        if(code_seen('F')) F = code_value_short();
 
         // report values if nothing has been requested
         if(isnan(C) && isnan(P) && isnan(R) && isnan(E) && isnan(W) && isnan(T) && I < 0 && S < 0 && B < 0 && A < 0) {
@@ -7570,7 +7572,7 @@ Sigma_Exit:
         if(S >= 0) temp_model_set_enabled(S);
 
         // run autotune
-        if(A >= 0) temp_model_autotune(A);
+        if(A >= 0) temp_model_autotune(A, F > 0);
     }
     break;
 #endif