Motion, Endstop, and Leveling Errors
This page summarizes errors related to movement range, homing, endstops, probes, bed mesh, and multi-Z leveling. When dealing with wiring, connectors, or manual mechanical adjustments, please power off the device before operating.
Move out of range
Error Message: The target coordinate exceeds the movement range allowed by Klipper. The log typically 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 macros, or pause macros move outside the machine's physical range.
- After configuring skew correction, probe offsets, or bed mesh, the calculated coordinates become negative or exceed the maximum travel.
- The model height exceeds the Z-axis maximum travel.
Solutions:
- Identify 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 start, end, pause, and filament change macros. Avoid parking at
0,0or the maximum boundaries. - If the error occurs during bed probing, check
mesh_min,mesh_max, and the probe offset in the[bed_mesh]section. - Save the configuration and restart Klipper before testing again.
Related configuration reference: Macros, Homing and Direction Calibration Guide.
Unable to parse move / Invalid speed
Error Message: Unable to parse move 'G1 Z', Unable to parse move 'G1 X... Y... Z...', Invalid speed in 'G1 ...', Machine does not support G20 (inches) command, Unknown g-code state: xxx.
Common Causes:
- The G-code line format is incomplete, e.g.,
G1 Zis missing the specific coordinate value. - A macro variable is empty, resulting in a move command lacking
X,Y,Z,E, orFvalues. - Incorrect line breaks, curly braces, variable names, or escape formatting in the slicer's start/end G-code.
- The
Fspeed parameter is empty, zero, or not a number. - The G-code file uses inch mode
G20, which Klipper does not support. - The name used in
SAVE_GCODE_STATE/RESTORE_GCODE_STATEmacros is inconsistent.
Solutions:
- Find the complete error line in
klippy.logto identify whichG1,G0, or state command is failing. - Check the slicer's start, end, pause, resume, and filament change macros to ensure all move commands have complete values.
- Set default values for macro parameters and convert them to numbers before use, e.g.,
params.Z|default(10)|float. - Ensure the slicer units are in millimeters and do not output
G20. - If the error is
Unknown g-code state, check thatSAVE_GCODE_STATE NAME=andRESTORE_GCODE_STATE NAME=use the same name.
Related configuration reference: Macros.
Must home axis first
Error Message: The axis has not been homed and cannot execute the current move command.
Common Causes:
G28has not been executed after power-on orFIRMWARE_RESTART.- A macro executes a move command before executing a homing command.
- The machine state is reset after a print pause, resume, or cancel.
- Abnormal configuration of homing macros, probe macros, or sensorless homing causes Klipper to not correctly record 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 command.
- 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 the driver current, sensitivity, and
homing_retract_dist.
Related configuration reference: Homing and Direction Calibration Guide, Sensorless Homing.
Endstop still triggered after retract
Error Message: After homing triggers the endstop, the endstop is still triggered when the retract distance is completed.
Common Causes:
- The normally open/normally closed logic of the endstop switch is configured inversely.
- The endstop switch is stuck, damaged, or has incorrect wiring.
homing_retract_distis too small; the axis does not clear the endstop after retracting.- Sensorless homing sensitivity is too high, causing it to still be considered triggered after retracting.
- Incorrect configuration of the driver
enable_pin, motor direction, or endstop pin, causing abnormal homing behavior.
Solutions:
Before checking endstop connectors, motor wiring, or reseating cables, fully turn off the printer and disconnect the power supply. When testing while powered, only operate via web commands and manually trigger the endstop mechanically. Do not touch terminals.
- Execute
QUERY_ENDSTOPSto confirm the status isopenwhen not triggered andTRIGGEREDwhen manually triggered. - If the status is opposite, adjust the
!prefix before the endstop pin. - Power off and check the mechanical state of the endstop switch, wiring, and connector.
- Appropriately increase
homing_retract_distand test again. - If using sensorless homing, reduce sensitivity and ensure the homing current is appropriate.
Related configuration reference: Endstops, Sensorless Homing.
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 messages indicating the endstop was not triggered.
Common Causes:
- The homing direction is configured incorrectly, making the motor 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, and the homing distance is insufficient.- Sensorless homing sensitivity is too low; the axis hits the mechanical end but is not detected as triggered.
- The motor wiring or direction configuration is wrong, causing the axis to move in the opposite direction.
Solutions:
- Execute
QUERY_ENDSTOPS. Manually press the endstop to confirm the status changes fromopentoTRIGGERED. - Move the axis a short distance to confirm its direction, then check if the
!prefix beforedir_pinneeds adjustment. - Confirm that
homing_positive_dirmatches the direction where the endstop is located. - Check if
position_endstop,position_min,position_maxmatch the actual mechanical travel. - In sensorless homing scenarios, reduce homing speed and adjust TMC sensitivity.
Related configuration reference: Homing and Direction Calibration Guide, Endstops.
Probe and Leveling Issues
Before checking the wiring, connectors, or pinout of probes like BLTouch, Probe, TAP, Klicky, EDDY, etc., fully turn off the printer and disconnect the power supply. When powered, only execute query commands or observe the 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.
Error Cause:
- The probe's default state after power-on or reset is
TRIGGERED. - Incorrect probe wiring or poor contact causes the signal to be permanently triggered.
- Mechanical failure of the probe, e.g., a BLTouch probe stuck and unable to retract.
- The Z-axis is already at its lowest position, pressing the probe.
Solutions:
- Execute
QUERY_PROBEto confirm the status should beopenwhen not touching the bed. - Execute
QUERY_ENDSTOPSto confirm the endstop/probe signals are correct. - For BLTouch:
BLTOUCH_DEBUG COMMAND=pin_upto ensure the probe is retracted, thenQUERY_PROBEto confirm. - Check the current Z-axis position. Lift the Z-axis if necessary.
- Power off and check the probe wiring and
sensor_pinconfiguration.
Related configuration reference: Endstops, Common Debug Commands.
No trigger on probe after full movement
Error Message: The probe did not trigger during the complete probing stroke.
Common Causes:
- Incorrect probe wiring, power supply, or pin configuration.
- The probe's mounting height is inappropriate; it cannot trigger within the probing stroke.
- Incorrect Z-axis direction, probe offset, or leveling area configuration.
- The probe itself is faulty, or its cable has poor contact during movement.
Solutions:
- Execute
QUERY_PROBE. Manually trigger the probe to confirm the status changes correctly. - Power off and check the probe's power supply, signal wires, and configured pins.
- Check the probe's mounting height to ensure it is within the triggerable range before probing.
- Check if the probing points in
[probe],[bed_mesh],[z_tilt], or[quad_gantry_level]are outside the bed. - If the problem only occurs at certain positions, focus on checking cable drag and probe offset.
Related configuration reference: Endstops, 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 several samples exceeds
samples_tolerance. - The bed, gantry, hotend, or probe is not securely fixed, causing wobble during probing.
- The probe speed is too high, or the probing/retraction distance is inappropriate.
- Inductive, eddy current, or load cell sensors are affected by temperature drift or electromagnetic interference.
Solutions:
- Check if the probe, hotend, bed, and gantry structure are securely fastened.
- Reduce the
speedin the[probe]section and appropriately increasesample_retract_dist. - Temporarily relax
samples_tolerancefor testing, e.g., 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 only occurs in a specific area, check the bed surface, magnet sheet, cable drag, and probe offset in that area.
Related configuration reference: 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 first executingG28. - The macro calling the leveling command does not ensure XY/Z are homed beforehand.
- After
FIRMWARE_RESTART, emergency stop, or error recovery, Klipper has cleared the homed state.
Solutions:
- Execute
G28first, then execute the probe or leveling command. - Add a homing check or directly include
G28at the beginning of the leveling macro. - If using an independent Z probe, ensure
endstop_pin: probe:z_virtual_endstopand the[probe]section are fully configured.
Related configuration reference: Homing and Direction Calibration Guide, Macros.
BLTouch failed to verify sensor state
Error Message: BLTouch failed to verify sensor state; retrying. Error occurs after multiple retries.
Common Causes:
- Counterfeit/clone BLTouch cannot pass Klipper's internal sensor verification.
- The
sensor_pinis not configured with a pull-up resistor (missing^prefix). - Incorrect wiring for the BLTouch control or sensor pins.
- Probe self-test fails, indicated by a blinking red light.
Solutions:
-
First, run
BLTOUCH_DEBUG COMMAND=pin_down,BLTOUCH_DEBUG COMMAND=touch_mode, andQUERY_PROBEto confirm the status. -
If manual tests pass but automatic homing/probing still fails, add this to the
[bltouch]section:pin_up_touch_mode_reports_triggered: False -
Ensure the
sensor_pinis configured with a pull-up resistor, e.g.,sensor_pin: ^PC4. -
Check if the BLTouch self-test is normal: After power-on, the probe should extend and retract several times, and the red light should be solid.
BLTouch failed to raise probe
Error Message: After homing or probing, Klipper detects that the BLTouch probe did not retract successfully.
Common Causes:
- Older version clone BLTouch cannot report the probe retracted state.
- The probe is mechanically stuck, the magnetic core has shifted, or screws are loose.
- Incorrect
control_pinwiring or configuration.
Solutions:
-
Test the probe control function:
BLTOUCH_DEBUG COMMAND=pin_downandBLTOUCH_DEBUG COMMAND=pin_up. -
If the action is normal but the error persists, add this to the
[bltouch]section: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 the powered device.
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 greater than thehorizontal_move_zin the leveling configuration. - After changing the nozzle, probe mount, or hotend, the probe mounting height changed significantly.
horizontal_move_zorz_offsetis configured redundantly in multiple include files.
Solutions:
- Search for all occurrences of
horizontal_move_zandz_offsetto confirm the final active configuration. - Set
horizontal_move_zin the relevant leveling configurations to a safe value greater than the probe'sz_offset. - If
z_offsetis abnormally large, re-check the probe mounting height and executePROBE_CALIBRATE. - After saving, execute
RESTART, then re-testBED_MESH_CALIBRATEor the leveling command.
Related configuration reference: 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.
Error Cause: lagrange interpolation tends to oscillate with a high number of samples. Klipper limits the probe count per axis to a maximum of 6 when using this algorithm.
Solutions:
-
If you need a
7x7,9x9, or denser grid, set this in the[bed_mesh]section:algorithm: bicubic -
If a dense grid is not needed, reduce
probe_countto6,6or lower. -
When using adaptive bed mesh with
PROBE_COUNTpassed from the slicer or macro, ensure the final point count and algorithm match. -
After modification, save and execute
RESTART.
Related configuration reference: Macros.
bed_mesh: Unknown profile
Error Message: bed_mesh: Unknown profile [xxx] or a prompt that the profile cannot be found when loading a bed mesh configuration.
Common Causes:
- The start G-code or macro executes
BED_MESH_PROFILE LOAD=xxx, but a profile with that name has never been saved. BED_MESH_CLEARwas executed, or the bed mesh data in the auto-saved section was deleted.SAVE_CONFIGwas not executed after completing the bed mesh calibration.- Profile names have inconsistent capitalization or spaces.
Solutions:
- Execute
BED_MESH_OUTPUTor check the auto-saved section at the end of the configuration to see the existing profile names. - If the required profile does not exist, re-run
BED_MESH_CALIBRATE, then executeSAVE_CONFIG. - Modify
BED_MESH_PROFILE LOAD=in the start G-code to match the actual saved profile name. - If you re-probe before every print, you can remove the unnecessary profile loading command.
Related configuration reference: Macros.
bed_mesh Advanced Configuration Errors
Error Message: bed_mesh: ERROR, fade_target lies outside of mesh z range, bed_mesh: Mesh extends outside of the fade range, bed_mesh: Cannot probe zero reference position, bed_mesh: invalid min/max points, bed_mesh: malformed 'xxx' value.
Common Causes:
fade_targetis outside the current mesh Z range, or the mesh data has excessive overall deviation.mesh_min,mesh_max,zero_reference_positionfall within a non-probable area after calculation with the probe offset.faulty_regioncovers the zero reference point, preventing Klipper from probing the reference position.- Coordinate list format is incorrect, missing commas, or using Chinese punctuation.
MESH_MIN/MESH_MAXpassed by the adaptive bed mesh macro do not match the machine dimensions or probe offset.
Solutions:
- Check
mesh_min,mesh_max,probe_count,fade_start,fade_end, andfade_targetin the[bed_mesh]section. - If you are unsure about the meaning of
fade_target, it is safest to delete this item and let Klipper use the default behavior. - Ensure all probing points, after adding the
x_offset/y_offsetfrom the[probe]section, are still within the machine's movable range. - If
zero_reference_positionorfaulty_regionis configured, confirm the zero reference point is not within the faulty region. - When an adaptive bed mesh error occurs, first test with fixed
mesh_min/mesh_maxto ensure the basic bed mesh configuration is working correctly, then restore the macro.
Related configuration reference: Macros, Machine Calibration.
Z_TILT_ADJUST / QUAD_GANTRY_LEVEL Errors
Error Message: Z_TILT_ADJUST: Point X,Y not reachable with current probe offset, QUAD_GANTRY_LEVEL: Max adjustment X.XXXX exceeds limit, or the gantry deviation is still too large after leveling.
Common Causes:
- The probe offset configuration is incorrect, causing the calculated probing point to be outside the bed area.
- The gantry deviation for multiple Z-axes exceeds the
max_adjustlimit. - Z-axis motor directions are inconsistent, causing the gantry to tilt in the opposite direction.
- Endstop switch mounting heights are inconsistent, resulting in vastly different starting positions for each Z-axis after homing.
- The gantry mechanical structure is loose, belts are slipping, or lead screw nut clearance is excessive.
Solutions:
Before manually adjusting Z lead screws, timing belts, couplings, or checking gantry endstop installation, fully turn off the printer and disconnect the power supply. Do not forcefully rotate lead screws or timing belts while the motors are energized and holding torque.
- Check
x_offsetandy_offsetin the[probe]section, as well aspointsin the[z_tilt]or[quad_gantry_level]section. - If the deviation exceeds
max_adjust, fully power off, manually level the gantry roughly, then power on, home, and execute leveling. - 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 switches at each corner of the gantry are mounted at the same height, check lead screw nuts, timing belt tension, and couplings for slippage.
- If the
max_adjustlimit is simply too small, you can increase the value appropriately, but not to more than 2-3 times the default value.
Related configuration reference: Homing and Direction Calibration Guide.