Motion, Endstop, and Leveling Error
This page organizes errors related to movement range, homing, endstops, probes, bed mesh, and multi-Z leveling. When dealing with wiring, connectors, or manual mechanical adjustments, please disconnect power first.
Move out of range
Error Message: The target coordinate exceeds the movement range allowed by Klipper. The log usually shows something like Move out of range: X Y Z [E].
Common Causes:
- The machine dimensions in the slicer do not match
position_min/position_maxin the Klipper configuration. - Start G-code, end G-code, filament change macro, or pause macro moves outside the machine's range.
- After using skew correction, probe offset, or bed mesh configuration, the calculated coordinates become negative or exceed the maximum travel.
- The model height exceeds the Z-axis maximum travel.
Solutions:
- Determine which axis is out of range based on the coordinates in the error.
- Check the
position_min,position_maxfor the corresponding axis and the machine dimensions in the slicer. - Check the parking coordinates in macros for start, end, pause, and filament change, avoiding positions like
0,0or the maximum boundaries. - If the error occurs during bed mesh scanning, check
mesh_min,mesh_maxin[bed_mesh]and the probe offset. - Save the configuration, restart Klipper, and retest.
Related Configuration References: Macros, Homing and Direction Calibration Guide.
Must home axis first
Error Message: The axis has not been homed yet, so the current move command cannot be executed.
Common Causes:
G28was not executed after power-on orFIRMWARE_RESTART.- A macro executes a move command before a homing command.
- The machine state is reset after print pause, resume, or cancel.
- Abnormal configuration of homing macros, probe macros, or sensorless homing prevents Klipper from correctly recording the homed state.
Solutions:
- Manually execute
G28before moving the corresponding axis. - Check the start G-code and macros to ensure homing is completed before any move commands.
- If Klipper or firmware was recently updated, check if the homing-related macros are still compatible with the current version.
- If using sensorless homing, check driver current, sensitivity, and
homing_retract_dist.
Related Configuration References: Homing and Direction Calibration Guide, Sensorless Homing Usage.
Endstop still triggered after retract
Error Message: After triggering the endstop during homing and retracting by homing_retract_dist, the endstop is still triggered.
Common Causes:
- The normally open/normally closed logic of the endstop switch is configured incorrectly.
- The endstop switch is stuck, damaged, or wired incorrectly.
homing_retract_distis too small, so the switch is still pressed after retraction.- Sensorless homing sensitivity is too high, still considered triggered after retraction.
- Incorrect
enable_pin, motor direction, or endstop pin configuration, causing abnormal homing behavior.
Solutions:
Before checking the endstop connector, motor wiring, or re-plugging cables, completely turn off the printer and disconnect the power supply. When testing with power on, only use web commands and manually trigger the endstop mechanically; do not touch the terminals.
- Run
QUERY_ENDSTOPSto confirm the state isopenwhen not triggered andTRIGGEREDwhen manually triggered. - If the state is reversed, add or remove
!before the endstop pin. - Power off and check the mechanical state, wiring, and connector of the endstop switch.
- Slightly increase
homing_retract_distand retest. - If using sensorless homing, reduce sensitivity and ensure the homing current is appropriate.
Related Configuration References: Endstop Related, Sensorless Homing Usage.
No trigger on endstop after full movement
Error Message: No trigger on x after full movement, No trigger on y after full movement, or similar endstop not triggered messages.
Common Causes:
- Incorrect homing direction configuration, causing the motor to move away from the endstop.
- The endstop switch is not connected, the connector is loose, or the pin configuration is wrong.
position_endstop,position_min,position_maxdo not match the actual travel, so the homing distance is insufficient.- Sensorless homing sensitivity is too low, not registering a trigger when hitting the mechanical limit.
- Incorrect motor wiring or direction configuration, causing the axis to move in the opposite direction.
Solutions:
- Run
QUERY_ENDSTOPSand manually press the endstop to confirm the state changes fromopentoTRIGGERED. - Move the axis a small distance to confirm its direction, then check if
!beforedir_pinneeds adjustment. - Ensure
homing_positive_dirmatches the direction where the endstop is located. - Check if
position_endstop,position_min,position_maxcorrespond to the actual mechanical travel. - In sensorless homing scenarios, reduce the homing speed and adjust TMC sensitivity.
Related Configuration References: Homing and Direction Calibration Guide, Endstop Related.
Probe and Leveling Issues
Before checking the wiring, connectors, or pinout of probes like BLTouch, Probe, TAP, Klicky, EDDY, etc., completely turn off the printer and disconnect the power supply. When powered on, only execute query commands or observe status; do not plug or unplug cables.
Probe triggered prior to movement
Error Message: The probe is already in a triggered state before the homing or probing movement begins.
Causes:
- The probe defaults to
TRIGGEREDstate after power-on or reset. - Incorrect probe wiring or poor contact, keeping the signal constantly triggered.
- Mechanical probe failure, e.g., BLTouch pin stuck and cannot retract.
- Z-axis is already at its lowest position, pressing the probe.
Solutions:
- Run
QUERY_PROBEto confirm the state isopenwhen not touching the bed. - Run
QUERY_ENDSTOPSto confirm the endstop/probe signal is correct. - For BLTouch:
BLTOUCH_DEBUG COMMAND=pin_upto ensure the pin retracts, thenQUERY_PROBEto confirm. - Check the Z-axis current position; lift the Z-axis if necessary.
- Power off and check the probe wiring and
sensor_pinconfiguration.
Related Configuration References: Endstop Related, Common Debugging Commands.
No trigger on probe after full movement
Error Message: The probe did not trigger during its full travel downward.
Common Causes:
- Incorrect probe wiring, power supply, or pin configuration.
- Incorrect probe mounting height, preventing it from triggering within its travel.
- Incorrect Z-axis direction, probe offset, or leveling area configuration.
- Faulty probe hardware, or poor contact in the cable during movement.
Solutions:
- Run
QUERY_PROBEand manually trigger the probe to confirm the state changes correctly. - Power off and check the probe's power supply, signal wire, and configured pins.
- Check the probe mounting height to ensure it is within the triggerable range before probing down.
- Check if the probe points in
[probe],[bed_mesh],[z_tilt], or[quad_gantry_level]are outside the bed. - If the problem occurs only at specific positions, focus on cable drag and probe offset.
Related Configuration References: Endstop Related, Macros.
Probe samples exceed samples_tolerance
Error Message: Probe samples exceed samples_tolerance, or the log repeatedly shows Probe samples exceed tolerance. Retrying....
Common Causes:
- Poor probe repeatability; the Z-height difference between samples exceeds
samples_tolerance. - The bed, gantry, hotend, or probe is not securely fixed, causing wobble during probing.
- The probe speed is too fast, or the probe travel/retract distance is unsuitable.
- Inductive, eddy current, or pressure sensors are affected by temperature drift or electromagnetic interference.
Solutions:
- Check if the probe, hotend, bed, and gantry structure are securely fastened.
- Reduce
speedin[probe]and increasesample_retract_distappropriately. - Temporarily relax
samples_tolerancefor testing, e.g., change from0.01to0.03or0.05. - If using an inductive/eddy current probe, wait for the bed and nozzle temperatures to stabilize before leveling.
- If the problem occurs only in a specific area, check the bed surface, magnetic sheet, cable drag, and probe offset in that area.
Related Configuration References: Machine Calibration, Macros.
Must home before probe
Error Message: Must home before probe.
Common Causes:
- Running
PROBE,BED_MESH_CALIBRATE,Z_TILT_ADJUST, orQUAD_GANTRY_LEVELwithout executingG28first. - A macro calls a leveling command without ensuring XY/Z are homed.
- After
FIRMWARE_RESTART, emergency stop, or error recovery, Klipper has cleared the homing state.
Solutions:
- Execute
G28first, then run the probe or leveling command. - Add a homing check or directly include
G28at the beginning of leveling macros. - If using an independent Z probe, ensure
endstop_pin: probe:z_virtual_endstopand[probe]configurations are complete.
Related Configuration References: Homing and Direction Calibration Guide, Macros.
BLTouch failed to verify sensor state
Error Message: BLTouch failed to verify sensor state; retrying. repeatedly, leading to an error.
Common Causes:
- Cloned/counterfeit BLTouch cannot pass Klipper's internal sensor verification.
sensor_pinis configured without a pull-up resistor (missing^prefix).- Incorrect wiring for the BLTouch control pin or sensor pin.
- Probe self-test failed, indicated by a flashing red light.
Solutions:
-
First, run
BLTOUCH_DEBUG COMMAND=pin_down,BLTOUCH_DEBUG COMMAND=touch_mode, andQUERY_PROBEto confirm the state. -
If manual tests pass but automatic homing/probing still errors, add the following to
[bltouch]:pin_up_touch_mode_reports_triggered: False -
Ensure
sensor_pinhas a pull-up resistor, e.g.,sensor_pin: ^PC4. -
Check if the BLTouch self-test is normal: The probe should extend and retract a few times on power-up, then the red LED should be solid on.
BLTouch failed to raise probe
Error Message: After homing or probing, Klipper detects that the BLTouch probe did not retract successfully.
Common Causes:
- Older cloned BLTouch versions cannot report the probe retracted state.
- The probe is mechanically stuck, the magnet core has shifted, or a screw is loose.
- Incorrect
control_pinwiring or configuration.
Solutions:
-
Test the probe control functions:
BLTOUCH_DEBUG COMMAND=pin_downandBLTOUCH_DEBUG COMMAND=pin_up. -
If the physical action is correct but the error persists, add the following to
[bltouch]:pin_up_reports_not_triggered: False -
If the probe is stuck, it is recommended to replace the probe module or contact after-sales support. Do not disassemble powered equipment.
horizontal_move_z can't be less than probe's z_offset
Error Message: horizontal_move_z can't be less than probe's z_offset.
Common Causes:
- The
z_offsetsaved afterPROBE_CALIBRATEis larger than thehorizontal_move_zin the leveling configuration. - The probe mounting height changed significantly after replacing the nozzle, probe mount, or hotend.
horizontal_move_zorz_offsetis configured multiple times in different include files.
Solutions:
- Search all occurrences of
horizontal_move_zandz_offsetto confirm the final effective configuration. - Set
horizontal_move_zin the relevant leveling configurations to a safe value larger than the probez_offset. - If
z_offsetis abnormally large, re-check the probe mounting height and runPROBE_CALIBRATE. - After saving, run
RESTART, then retestBED_MESH_CALIBRATEor the leveling command.
Related Configuration References: Machine Calibration, Macros.
bed_mesh: cannot exceed a probe_count of 6
Error Message: bed_mesh: cannot exceed a probe_count of 6 when using lagrange interpolation.
Cause: lagrange interpolation can oscillate with a high number of samples. Klipper limits the probe count per axis to 6 or less when using this algorithm.
Solutions:
-
If a denser grid like
7x7or9x9is needed, set the following in[bed_mesh]:algorithm: bicubic -
If a dense grid is unnecessary, reduce
probe_countto6,6or lower. -
When using adaptive bed mesh with
PROBE_COUNTpassed from the slicer or macro, ensure the final count and algorithm are compatible. -
Save the configuration and run
RESTART.
Related Configuration References: Macros.
bed_mesh: Unknown profile
Error Message: bed_mesh: Unknown profile [xxx] or a failure to load a bed mesh profile.
Common Causes:
- The start G-code or macro executes
BED_MESH_PROFILE LOAD=xxx, but this profile name has never been saved. BED_MESH_CLEARwas executed, or the bed mesh data in the auto-save section was deleted.SAVE_CONFIGwas not executed after completing the bed mesh calibration.- The profile name has case or whitespace mismatches.
Solutions:
- Run
BED_MESH_OUTPUTor check the auto-save section at the end of the configuration to see existing profile names. - If the required profile does not exist, re-run
BED_MESH_CALIBRATE, then runSAVE_CONFIG. - Modify
BED_MESH_PROFILE LOAD=in the start G-code to match the actual saved profile name. - If a new mesh is always generated before each print, remove unnecessary profile load commands.
Related Configuration References: Macros.
Z_TILT_ADJUST / QUAD_GANTRY_LEVEL Errors
Error Messages: Z_TILT_ADJUST: Point X,Y not reachable with current probe offset, QUAD_GANTRY_LEVEL: Max adjustment X.XXXX exceeds limit, or excessive deviation remains after gantry leveling.
Common Causes:
- Incorrect probe offset configuration, causing the calculated probing point to be outside the bed.
- The gantry deviation across multiple Z-axes exceeds the
max_adjustlimit. - Z motor directions are inconsistent, causing the gantry to tilt in the opposite direction.
- Inconsistent endstop switch mounting heights, leading to large differences in Z-axis starting positions after homing.
- Loose mechanical structure of the gantry, belt slipping, or excessive lead screw nut backlash.
Solutions:
Before manually adjusting Z lead screws, timing belts, couplers, or checking gantry endstop mounting, completely turn off the printer and disconnect the power supply. Do not forcefully rotate lead screws or timing belts while the motors are holding torque.
- Check
x_offset,y_offsetin[probe], and thepointsin[z_tilt]or[quad_gantry_level]. - If the deviation exceeds
max_adjust, completely power off, manually level the gantry roughly, then power on, home, and run leveling again. - Execute
STEPPER_BUZZ STEPPER=stepper_zandSTEPPER_BUZZ STEPPER=stepper_z1(adjust names as needed) to confirm each Z motor moves in the same direction individually. - Power off and check if the endstop switch mounting heights at each gantry corner are consistent, and if lead screw nuts, timing belts, and couplers are tight or slipping.
- If the
max_adjustlimit is simply too small, it can be increased moderately, but not by more than 2-3 times the default value.
Related Configuration References: Homing and Direction Calibration Guide.