What does a homing failed error mean on a 3D printer?

By Asked 3D Content TeamPublished Last verified

What does a homing failed error mean on a 3D printer?

The printer drove an axis toward its endstop or probe and never saw it trigger, so it stopped rather than guess where zero is. Marlin and Klipper both search up to 1.5 times the axis travel. The usual causes are an unplugged or broken switch, sensorless homing set too insensitive, a probe that won’t deploy or a jammed axis.

The number

Firmware How far it searches On a 200 mm axis homing to 0 What it prints when nothing triggers
Marlin 2.1.2.5 1.5 × the axis length (Z_MAX_POS minus Z_MIN_POS for Z) 300 mm; at the stock Z homing speed of 4 mm/s, up to 75 s Homing Failed, then PRINTER HALTED and Please Reset on the screen; Error:Printer halted. kill() called! to the host
Klipper v0.13.0 1.5 × the distance from position_endstop to the far end of travel 300 mm; at the default homing_speed of 5 mm/s, up to 60 s No trigger on x after full movement (with the axis letter)

The distances come from Marlin’s motion.cpp and Klipper’s cartesian.py, the axis length and speeds from Marlin’s stock Configuration.h and Klipper’s configuration reference, and the messages from Marlin’s language files and Klipper’s homing.py.

Why does a 3D printer fail to home?

At power-up the firmware doesn’t know where the axes are. Homing (G28) drives each one toward its stop until a switch, a stepper driver’s stall signal or a probe reports a trigger. That point becomes zero. The search is longer than the rail, so a carriage starting anywhere reaches the stop.

If nothing triggers, the carriage pushes against the frame for the rest of the move. Marlin then calls kill(), which turns off the heaters and locks the printer until a reset. Klipper reports the error and keeps running.

A linear axis with its carriage homing toward a mechanical endstop switch whose cable has been pulled outA switch that cannot report a trigger, here one with its cable pulled out, leaves the carriage pushing against the frame until the search move runs out.4The frame stops it instead1Endstop switch2Cable pulled out, so no trigger signal3Carriage homing toward the switch
  1. Endstop switch
  2. Cable pulled out, so no trigger signal
  3. Carriage homing toward the switch
  4. The frame stops it instead
A switch that cannot report a trigger, here one with its cable pulled out, leaves the carriage pushing against the frame until the search move runs out.

Homing also fails on a trigger at the wrong time. A switch that reads triggered before anything touches it (backwards logic or a stuck switch) would set zero wherever the carriage sits. Klipper catches it on the second, slower touch: Endstop x still triggered after retract. Marlin’s check, DETECT_BROKEN_ENDSTOP, is disabled in the stock configuration. When enabled, it prints Bad X Endstop? before halting.

What causes a 3D printer homing error?

  • Mechanical switch: an unplugged cable, a broken switch or lever, or the wrong pin in the configuration. Klipper’s configuration checks say a switch that never changes state “generally indicates that the endstop is connected to a different pin”. One that reads backwards needs a ! added to or removed from endstop_pin.
  • Sensorless homing: the stepper driver senses the carriage stalling against the frame. Per Marlin’s Configuration_adv.h, a threshold that is too sensitive gives false triggers and one too insensitive gives no trigger. Set it with M914 in Marlin or driver_SGTHRS in Klipper, where 255 is the most sensitive value on a TMC2209 driver.
  • Z probe: a BLTouch that can’t drop its pin stops Klipper with BLTouch failed to deploy. Sensors that detect the nozzle meeting the bed (a load cell, or the eddy current sensor on a Bambu Lab A1) are thrown off by plastic stuck to the nozzle or anything else touching first.
  • Mechanics: a binding carriage or a stalled motor never reaches the switch. Look for debris on the Z rails and lead screws, or a print left on the plate.

Why does only the Z axis fail to home?

Z has more to go wrong. On printers that probe with the nozzle (the Prusa MK4 and Bambu Lab’s A1, X1 and P1), Z homes on a sensor instead of a switch. It also rides on lead screws. The Prusa MK4 shows error #13301, Failed to home the extruder in Z-axis, make sure the loadcell is working. Prusa checks for filament or a PTFE (polytetrafluoroethylene) tube pulling on the extruder, then the trapezoid nuts on the Z lead screws, then the load cell.

What does Z axis homing failed mean on a Bambu Lab printer?

The printer didn’t read the nozzle touching the bed cleanly. On the A1 series, an eddy current sensor detects the touch:

  • Toolhead drops, then rises with Z homing failed: the Z motor got stuck (HMS_0300-1800-0001-0005). Remove any leftover print, then clean and lubricate the Z guide rails. A visibly bent lead screw is a case for Bambu Lab support.
  • Nozzle taps one spot dozens of times: clean the nozzle, and tighten the heating assembly’s screws if the hotend wobbles.
  • Touches in mid-air, failing after 5 attempts: update the firmware to 1.03 or later and tidy the PTFE tubes on the filament hub.

On the X1 and P1 series, three force sensors read the touch. Homing Z axis failed [0300 4000] means something besides the nozzle touched: a crooked build plate catching the excess chute, the left Z slider stop or the liner, or debris on the Z sliders or chamber floor. Bambu Lab wants at least 2 mm between the X1’s bed and the excess chute. To read the code itself, see what a Bambu HMS error means.

How to check it on your own printer

  • Read the switches. With every axis off its stop, send M119 (Marlin) or QUERY_ENDSTOPS (Klipper): all should read open. Hold one switch down and send it again: it should read TRIGGERED.
  • Never changes? Reseat the plug at both ends, then check the pin in the configuration. If it still never changes, replace the switch.
  • Push each axis by hand with the power off. It should slide its full length without a tight spot.
  • Clean the nozzle and seat the plate before homing a printer that probes with the nozzle.
  • Home with a hand on the power switch. Klipper’s configuration checks say to cut power if homing goes wrong.
  • Clear the error. Marlin’s halt needs a reset. In Klipper, fix the cause and send G28 again.

Sources

  1. motion.cpp, homeaxis() and do_homing_move() (Marlin 2.1.2.5), Marlin Firmware on GitHub (accessed October 20, 2026)
  2. endstops.cpp, validate_homing_move() (Marlin 2.1.2.5), Marlin Firmware on GitHub (accessed October 20, 2026)
  3. language_en.h (Marlin 2.1.2.5), Marlin Firmware on GitHub (accessed October 20, 2026)
  4. core/language.h (Marlin 2.1.2.5), Marlin Firmware on GitHub (accessed October 20, 2026)
  5. Configuration.h (Marlin 2.1.2.5), Marlin Firmware on GitHub (accessed October 20, 2026)
  6. Configuration_adv.h (Marlin 2.1.2.5), Marlin Firmware on GitHub (accessed October 20, 2026)
  7. M119: Endstop States, Marlin Firmware (accessed October 20, 2026)
  8. klippy/kinematics/cartesian.py (v0.13.0), Klipper on GitHub (accessed October 20, 2026)
  9. klippy/extras/homing.py (v0.13.0), Klipper on GitHub (accessed October 20, 2026)
  10. klippy/extras/bltouch.py (v0.13.0), Klipper on GitHub (accessed October 20, 2026)
  11. Configuration checks, Klipper documentation (accessed October 20, 2026)
  12. Configuration reference, Klipper documentation (accessed October 20, 2026)
  13. TMC drivers: Sensorless homing, Klipper documentation (accessed October 20, 2026)
  14. Homing and leveling failure troubleshooting guide for A1 series, Bambu Lab Wiki (accessed October 20, 2026)
  15. HMS_0300-0D00-0001-0003: The build plate may not be properly placed, Bambu Lab Wiki (accessed October 20, 2026)
  16. Homing Z axis failed - Heatbed and excess chute interfered, Bambu Lab Wiki (accessed October 20, 2026)
  17. Homing error Z (#13301 on the MK4), Prusa Knowledge Base (accessed October 20, 2026)