|  |  | @ -314,8 +314,8 @@ bool target_direction; | 
			
		
	
		
		
			
				
					
					|  |  |  |   }; |  |  |  |   }; | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #ifdef SERVO_ENDSTOPS |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   const int servo_endstops[] = SERVO_ENDSTOPS; |  |  |  |   const int servo_endstops[] = SERVO_ENDSTOPS; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #if HAS_SERVO_ENDSTOPS | 
			
		
	
		
		
			
				
					
					|  |  |  |   const int servo_endstop_angles[][2] = SERVO_ENDSTOP_ANGLES; |  |  |  |   const int servo_endstop_angles[][2] = SERVO_ENDSTOP_ANGLES; | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -578,7 +578,7 @@ void servo_init() { | 
			
		
	
		
		
			
				
					
					|  |  |  |   #endif |  |  |  |   #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   // Set position of Servo Endstops that are defined
 |  |  |  |   // Set position of Servo Endstops that are defined
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   #ifdef SERVO_ENDSTOPS |  |  |  |   #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     for (int i = 0; i < 3; i++) |  |  |  |     for (int i = 0; i < 3; i++) | 
			
		
	
		
		
			
				
					
					|  |  |  |       if (servo_endstops[i] >= 0) |  |  |  |       if (servo_endstops[i] >= 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |         servo[servo_endstops[i]].move(servo_endstop_angles[i][1]); |  |  |  |         servo[servo_endstops[i]].move(servo_endstop_angles[i][1]); | 
			
		
	
	
		
		
			
				
					|  |  | @ -1322,7 +1322,7 @@ static void setup_for_endstop_move() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   static void deploy_z_probe() { |  |  |  |   static void deploy_z_probe() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     #ifdef SERVO_ENDSTOPS |  |  |  |     #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       // Engage Z Servo endstop if enabled
 |  |  |  |       // Engage Z Servo endstop if enabled
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       if (servo_endstops[Z_AXIS] >= 0) servo[servo_endstops[Z_AXIS]].move(servo_endstop_angles[Z_AXIS][0]); |  |  |  |       if (servo_endstops[Z_AXIS] >= 0) servo[servo_endstops[Z_AXIS]].move(servo_endstop_angles[Z_AXIS][0]); | 
			
		
	
	
		
		
			
				
					|  |  | @ -1412,7 +1412,7 @@ static void setup_for_endstop_move() { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   static void stow_z_probe(bool doRaise=true) { |  |  |  |   static void stow_z_probe(bool doRaise=true) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     #ifdef SERVO_ENDSTOPS |  |  |  |     #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       // Retract Z Servo endstop if enabled
 |  |  |  |       // Retract Z Servo endstop if enabled
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       if (servo_endstops[Z_AXIS] >= 0) { |  |  |  |       if (servo_endstops[Z_AXIS] >= 0) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -1676,7 +1676,7 @@ static void homeaxis(AxisEnum axis) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     #endif |  |  |  |     #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     #ifdef SERVO_ENDSTOPS |  |  |  |     #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       // Engage Servo endstop if enabled
 |  |  |  |       // Engage Servo endstop if enabled
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       if (axis != Z_AXIS && servo_endstops[axis] >= 0) |  |  |  |       if (axis != Z_AXIS && servo_endstops[axis] >= 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |         servo[servo_endstops[axis]].move(servo_endstop_angles[axis][0]); |  |  |  |         servo[servo_endstops[axis]].move(servo_endstop_angles[axis][0]); | 
			
		
	
	
		
		
			
				
					|  |  | @ -1778,7 +1778,7 @@ static void homeaxis(AxisEnum axis) { | 
			
		
	
		
		
			
				
					
					|  |  |  |     #endif |  |  |  |     #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     { |  |  |  |     { | 
			
		
	
		
		
			
				
					
					|  |  |  |       #ifdef SERVO_ENDSTOPS |  |  |  |       #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         // Retract Servo endstop if enabled
 |  |  |  |         // Retract Servo endstop if enabled
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (servo_endstops[axis] >= 0) |  |  |  |         if (servo_endstops[axis] >= 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |           servo[servo_endstops[axis]].move(servo_endstop_angles[axis][1]); |  |  |  |           servo[servo_endstops[axis]].move(servo_endstop_angles[axis][1]); | 
			
		
	
	
		
		
			
				
					|  |  | @ -2778,7 +2778,7 @@ inline void gcode_G28() { | 
			
		
	
		
		
			
				
					
					|  |  |  |         //      added here, it could be seen as a compensating factor for the Z probe.
 |  |  |  |         //      added here, it could be seen as a compensating factor for the Z probe.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         //
 |  |  |  |         //
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         current_position[Z_AXIS] = -zprobe_zoffset + (z_tmp - real_z) |  |  |  |         current_position[Z_AXIS] = -zprobe_zoffset + (z_tmp - real_z) | 
			
		
	
		
		
			
				
					
					|  |  |  |           #if defined(SERVO_ENDSTOPS) || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED) |  |  |  |           #if HAS_SERVO_ENDSTOPS || ENABLED(Z_PROBE_ALLEN_KEY) || ENABLED(Z_PROBE_SLED) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |              + Z_RAISE_AFTER_PROBING |  |  |  |              + Z_RAISE_AFTER_PROBING | 
			
		
	
		
		
			
				
					
					|  |  |  |           #endif |  |  |  |           #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |           ; |  |  |  |           ; | 
			
		
	
	
		
		
			
				
					|  |  | @ -4570,9 +4570,9 @@ inline void gcode_M303() { | 
			
		
	
		
		
			
				
					
					|  |  |  |  */ |  |  |  |  */ | 
			
		
	
		
		
			
				
					
					|  |  |  | inline void gcode_M400() { st_synchronize(); } |  |  |  | inline void gcode_M400() { st_synchronize(); } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #if defined(ENABLE_AUTO_BED_LEVELING) && !defined(Z_PROBE_SLED) && (defined(SERVO_ENDSTOPS) || defined(Z_PROBE_ALLEN_KEY)) |  |  |  | #if defined(ENABLE_AUTO_BED_LEVELING) && !defined(Z_PROBE_SLED) && (HAS_SERVO_ENDSTOPS || defined(Z_PROBE_ALLEN_KEY)) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   #ifdef SERVO_ENDSTOPS |  |  |  |   #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     void raise_z_for_servo() { |  |  |  |     void raise_z_for_servo() { | 
			
		
	
		
		
			
				
					
					|  |  |  |       float zpos = current_position[Z_AXIS], z_dest = Z_RAISE_BEFORE_HOMING; |  |  |  |       float zpos = current_position[Z_AXIS], z_dest = Z_RAISE_BEFORE_HOMING; | 
			
		
	
		
		
			
				
					
					|  |  |  |       z_dest += axis_known_position[Z_AXIS] ? zprobe_zoffset : zpos; |  |  |  |       z_dest += axis_known_position[Z_AXIS] ? zprobe_zoffset : zpos; | 
			
		
	
	
		
		
			
				
					|  |  | @ -4584,7 +4584,7 @@ inline void gcode_M400() { st_synchronize(); } | 
			
		
	
		
		
			
				
					
					|  |  |  |    * M401: Engage Z Servo endstop if available |  |  |  |    * M401: Engage Z Servo endstop if available | 
			
		
	
		
		
			
				
					
					|  |  |  |    */ |  |  |  |    */ | 
			
		
	
		
		
			
				
					
					|  |  |  |   inline void gcode_M401() { |  |  |  |   inline void gcode_M401() { | 
			
		
	
		
		
			
				
					
					|  |  |  |     #ifdef SERVO_ENDSTOPS |  |  |  |     #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       raise_z_for_servo(); |  |  |  |       raise_z_for_servo(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     #endif |  |  |  |     #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |     deploy_z_probe(); |  |  |  |     deploy_z_probe(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -4594,13 +4594,13 @@ inline void gcode_M400() { st_synchronize(); } | 
			
		
	
		
		
			
				
					
					|  |  |  |    * M402: Retract Z Servo endstop if enabled |  |  |  |    * M402: Retract Z Servo endstop if enabled | 
			
		
	
		
		
			
				
					
					|  |  |  |    */ |  |  |  |    */ | 
			
		
	
		
		
			
				
					
					|  |  |  |   inline void gcode_M402() { |  |  |  |   inline void gcode_M402() { | 
			
		
	
		
		
			
				
					
					|  |  |  |     #ifdef SERVO_ENDSTOPS |  |  |  |     #if HAS_SERVO_ENDSTOPS | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       raise_z_for_servo(); |  |  |  |       raise_z_for_servo(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     #endif |  |  |  |     #endif | 
			
		
	
		
		
			
				
					
					|  |  |  |     stow_z_probe(false); |  |  |  |     stow_z_probe(false); | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #endif // ENABLE_AUTO_BED_LEVELING && (SERVO_ENDSTOPS || Z_PROBE_ALLEN_KEY) && !Z_PROBE_SLED
 |  |  |  | #endif // ENABLE_AUTO_BED_LEVELING && (HAS_SERVO_ENDSTOPS || Z_PROBE_ALLEN_KEY) && !Z_PROBE_SLED
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | #ifdef FILAMENT_SENSOR |  |  |  | #ifdef FILAMENT_SENSOR | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -5645,14 +5645,14 @@ void process_next_command() { | 
			
		
	
		
		
			
				
					
					|  |  |  |         gcode_M400(); |  |  |  |         gcode_M400(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         break; |  |  |  |         break; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       #if defined(ENABLE_AUTO_BED_LEVELING) && (defined(SERVO_ENDSTOPS) || defined(Z_PROBE_ALLEN_KEY)) && !defined(Z_PROBE_SLED) |  |  |  |       #if defined(ENABLE_AUTO_BED_LEVELING) && (HAS_SERVO_ENDSTOPS || defined(Z_PROBE_ALLEN_KEY)) && !defined(Z_PROBE_SLED) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         case 401: |  |  |  |         case 401: | 
			
		
	
		
		
			
				
					
					|  |  |  |           gcode_M401(); |  |  |  |           gcode_M401(); | 
			
		
	
		
		
			
				
					
					|  |  |  |           break; |  |  |  |           break; | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 402: |  |  |  |         case 402: | 
			
		
	
		
		
			
				
					
					|  |  |  |           gcode_M402(); |  |  |  |           gcode_M402(); | 
			
		
	
		
		
			
				
					
					|  |  |  |           break; |  |  |  |           break; | 
			
		
	
		
		
			
				
					
					|  |  |  |       #endif // ENABLE_AUTO_BED_LEVELING && (SERVO_ENDSTOPS || Z_PROBE_ALLEN_KEY) && !Z_PROBE_SLED
 |  |  |  |       #endif // ENABLE_AUTO_BED_LEVELING && (HAS_SERVO_ENDSTOPS || Z_PROBE_ALLEN_KEY) && !Z_PROBE_SLED
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       #ifdef FILAMENT_SENSOR |  |  |  |       #ifdef FILAMENT_SENSOR | 
			
		
	
		
		
			
				
					
					|  |  |  |         case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or display nominal filament width
 |  |  |  |         case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or display nominal filament width
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |