System, Performance, and Service Errors
This page covers communication timeouts, MCU timing errors, host performance, firmware flashing, and Klipper service startup issues.
Homing Timeout Issues
Error Message: Communication timeout during homing or Error during homing xxx during the homing process. Commonly occurs in Z-axis homing scenarios with multiple MCUs.
Common Causes:
- High host load, with KlipperScreen, camera streams, etc., running simultaneously.
- Simultaneous movement of multiple axis motors during homing, where high-current drive signals couple into the CAN/USB communication lines, causing communication interruptions.
- Unstable multi-MCU communication response.
- Poor quality or improper routing of CAN/USB communication cables.
Solutions:
Before reorganizing CAN/USB cable routing, checking shielding layers, or inspecting grounding, completely turn off the printer and disconnect the power supply. Do not modify the power ground wire, mains wiring, or the internal structure of the power supply yourself.
- First, eliminate electromagnetic interference: Check if the CAN/USB cables are routed separately from the motor cables and heater cables. Refer to the interference troubleshooting steps in CAN Network Configuration and ID Search.
- Try adjusting the
TRSYNC_TIMEOUTparameter or temporarily disable KlipperScreen, as detailed in Homing Timeout Issues. - Check the machine's grounding and shielding layer grounding.
MCU 'mcu' shutdown: Stepper too far in past
Error Message: Klipper's planned step events to be sent to the MCU are already behind the current time. The MCU can no longer execute these motion commands at the expected time, causing the printer to enter a shutdown state.
Cause of Error: This is usually not caused by a specific fixed configuration item but results from the host-side motion planning, MCU step output, or communication scheduling being unable to keep up. High host load, excessively high print speed/acceleration, high micro-stepping, multi-MCU communication delays, poor USB/CAN communication quality, or macros/G-code generating a large number of motion commands in a short time can all trigger this issue.
Reference Scenario: When performing multi-point probing for bed mesh, if probe_count in [bed_mesh] is set too large, combined with a high mesh_pps configuration, it may generate overly dense mesh data, increasing host computation and motion planning pressure. This is just one common scenario; even without probing, other situations leading to increased system load or communication latency can also cause Stepper too far in past.
Solutions:
- First, check the
Statslines inklippy.logjust before the error to confirm if there is also high CPU usage,bytes_retransmit,bytes_invalid,Timer too close, MCU disconnection, or queue anomaly. - Temporarily disable camera streams, KlipperScreen, remote control plugins, and other high-usage services to reduce host load, then re-test.
- Reduce print speed, acceleration, and micro-stepping to see if the error disappears.
- If the error occurs during multi-point probing, reduce
probe_countin[bed_mesh], e.g., to7,7or9,9for testing. - If a high
mesh_ppsis configured, reduce or remove this configuration, e.g., tomesh_pps: 2,2. - Check USB/CAN communication quality; if using CAN, verify queue length, termination resistors, wiring order, power supply, and firmware CAN bitrate.
- Check the macros or G-code being executed before the error to avoid macro loops, excessively dense short line segments, or anomalous scripts sending many motion commands in a short time.
Related Configuration References: Macros Introduction, Common Debugging Directives.
MCU 'mcu' shutdown: Timer too close
Error Message: The MCU timer is too close, causing a system timeout.
Cause of Error: High load on the secondary controller (MCU), host response timeout, excessively high print speed, high micro-stepping, system time synchronization interference, or interference on the MCU communication line can all trigger this issue.
Solutions:
- Reduce the stepper motor micro-stepping to decrease the MCU's pulse processing load.
- Lower print speed and acceleration to see if the issue disappears.
- Check host load, power supply, and USB/CAN communication quality.
- After powering off, check if the communication line between the MCU and the host is routed near motor cables, heater cables, heat bed cables, or power cables. Re-route or replace with shielded communication cables if necessary.
- When checking machine grounding, only verify the grounding points provided by the manufacturer and the socket status. Do not disassemble the power supply or modify the mains ground wire yourself.
- If the issue occurs during the homing phase, please refer to Homing Timeout Issues.
- If the problem persists, consider re-flashing the host system or firmware.
Related Configuration References: Common Debugging Directives, Homing and Direction Calibration Guide.
MCU shutdown: Missed scheduling of next digital out event
Error Message: MCU 'xxx' shutdown: Missed scheduling of next digital out event.
Cause of Error: After the Klipper host turns on a digital output like a heater or fan, the MCU needs to receive subsequent scheduling and confirmation in time. If the host load is high, system scheduling is delayed, USB/CAN communication is unstable, or the CAN bus queue is abnormal, the MCU may not receive the next digital output event in time, entering a shutdown state.
This error is related to heater output scheduling. Do not bypass the error by disabling temperature protection, disabling verify_heater, or removing safety configurations. First, investigate host load and communication quality.
Solutions:
- First, check the
Statslines inklippy.logjust before this error to confirm if there are also records ofbytes_retransmit,bytes_invalid,Timer too close, or MCU disconnection. - Reduce host load by temporarily disabling camera streams, KlipperScreen, remote control plugins, or other high-usage services.
- Check USB/CAN communication quality; if using CAN, verify CAN0 queue length, termination resistors, wiring order, power supply, and firmware CAN bitrate.
- Reduce print speed, acceleration, and micro-stepping to see if the issue disappears.
- If the issue only occurs during heating, also check the load on the heat bed, hotend, fans, and power supply. Do not disassemble the power supply or check high-voltage mains heat bed wiring yourself.
- If the issue occurs on a CAN toolhead board, proceed with CAN Error Troubleshooting.
Related Configuration References: Common Debugging Directives, CAN Network and ID Search.
Rescheduled timer in the past
Error Message: Rescheduled timer in the past or a similar warning in the log.
Cause of Error: Issues with the host system clock or high CPU load cause the actual execution time of timed tasks to lag behind the scheduled time.
Solutions:
- If NTP synchronization is enabled, temporarily disable it for testing.
- Reduce the load from other services running on the host, such as closing unnecessary web interfaces, camera streams, etc.
- If running in a virtual machine, consider migrating to a physical machine or using a more stable clock source.
- Check the host CPU usage: use
htopto see if theklippyprocess has abnormally high CPU usage.
Related Configuration References: Common Debugging Directives.
Internal error on command
Error Message: Internal error on command:"XXX", Klipper enters a shutdown state.
Common Causes:
- A macro or G-code command triggers a Python exception within Klipper.
- Incorrect macro references or Jinja2 template syntax errors in the configuration file.
- Incompatibility between the Klipper version and the configuration file format.
- G-code filenames containing special characters leading to encoding errors.
Solutions:
- Check the full Python Traceback below the
Internal errorline inklippy.log. - Use the Traceback to identify which configuration file or macro caused the issue.
- Common causes include Jinja2 template syntax errors in
[gcode_macro], missing[respond]configuration, or incorrect[virtual_sdcard]path. - If the error relates to
SDCARD_PRINT_FILEand mentionsascii codec can't decode, rename the G-code file to use only English letters, numbers, underscores, or hyphens.
Related Configuration References: Macros Introduction, Configuration Modification Guide.
Unable to open file / SD busy
Error Messages: Unable to open file, Unable to get file list, SD busy, SD write not supported, SDCARD_RESET_FILE cannot be run from the sdcard.
Common Causes:
- The G-code file does not exist, the filename has been changed, or the upload is incomplete.
- The
[virtual_sdcard] pathpoints to the wrong directory. - Incorrect file permissions prevent the Klipper user from reading the file.
- Filenames contain special characters that cause issues with certain frontends or system path processing.
- Attempting to open, select, reset, or write to the virtual SD card while a file is being printed or read.
- Mistakenly setting the Klipper source code directory, configuration directory, or other non-G-code directories as the
[virtual_sdcard] path.
Solutions:
- Re-upload the G-code file via the web interface and ensure the filename matches the print command.
- Verify that
[virtual_sdcard] pathpoints to the actual G-code storage directory. - Check directory permissions:
ls -la ~/printer_data/gcodes/. - Rename the file to use only English letters, numbers, underscores, or hyphens, then test again.
- If you see
SD busy, pause or cancel the current print first, ensuring no other macro is operating on the virtual SD file. - Do not set
~/klipper,~/printer_data/config, or system directories as the G-code storage directory.
Related Configuration References: Configuration Modification Guide.
MCU CRC does not match config / Can not update MCU config
Error Messages: MCU 'xxx' CRC does not match config, Can not update MCU 'xxx' config as it is shutdown, Unable to configure MCU 'xxx'.
Key Diagnostic Point: Can not update MCU 'xxx' config as it is shutdown is usually not the root cause but a subsequent error that occurs when Klipper tries to reconnect or reconfigure an MCU that is already in a shutdown/error state. Do not just look at the last line of the log; scroll up to find the first real error.
Solutions:
- Execute
FIRMWARE_RESTART. If necessary, completely power off the machine for 10 seconds, then power on again. - Look in
klippy.logfor the first occurrence ofshutdown,Timer too close,Lost communication,Verify heater, TMC, or temperature errors. Fix the root cause of the shutdown first. - For multi-MCU machines, check the USB ID or CAN UUID for each
[mcu]and[mcu xxx]block individually. - If Klipper was just updated, recompile and re-flash the firmware for all MCUs.
- If using
[mcu host], check if theklipper-mcuservice started correctly, then restart Klipper. - If using a pre-installed or customized Klipper system, ensure the logs are complete and that the Klipper and MCU firmware versions are from a consistent source.
Shutdown due to M112 command / webhooks request
Error Messages: Shutdown due to M112 command or Shutdown due to webhooks request.
Solutions:
- Confirm if the emergency stop was triggered manually. If so, after eliminating the risk, execute
FIRMWARE_RESTART. - Search for
M112,action_emergency_stop,emergency_stopin your custom macros. - Check if a frontend, remote control plugin, or automation script is accidentally triggering the emergency stop interface.
Host Performance Issues Causing Print Stuttering
Error Message: No obvious error, but the printer pauses intermittently or extrusion becomes inconsistent during printing.
Solutions:
- Reduce print speed and acceleration.
- Disable unnecessary web services, camera streams, etc., on the host.
- Reduce
probe_countandmesh_ppsin[bed_mesh]. - If the slicer outputs
G2/G3arcs, refer to Arc Fitting Suggestions to adjust or disable them. - If the host's performance is genuinely insufficient, consider upgrading to a more powerful one.
Host Abnormal Reboot / System Crash
Error Messages: Klipper/Moonraker disconnects suddenly during a print. klippy.log cuts off abruptly without a clear shutdown root cause. Upon reconnection via Mainsail/Fluidd, it appears the host or Klipper has restarted.
Common Causes:
- Insufficient power supply to the host. Load changes from USB devices, cameras, screens, or fans during printing cause a power drop.
- Read/write anomalies on the system disk, TF card, or eMMC, causing the log to cut off or file corruption.
- Host CPU overheating, leading to protective throttling, freezing, or restarting.
- USB back-powering or abnormal peripheral power supply paths causing interference between the mainboard, screen, or host.
- Resource consumption by third-party services, camera streams, AI plugins, or excessive web connections.
Troubleshooting Methods:
Before checking the host power cable, USB cables, screen cables, fan cables, or reorganizing wiring, completely turn off the printer and disconnect the power supply. Do not disassemble the power supply or modify the mains wiring.
- First, check
klippy.log,moonraker.log, and system logs to determine if it was a Klipper error or a full host reboot. - Check the host power supply specifications. Avoid using power cables with insufficient current rating or significant voltage drop.
- Check the health of the system disk. Replace the TF card, eMMC, or re-flash the system if necessary.
- Check the host's cooling. Ensure the fan is working, the heatsink is properly attached, and the case is ventilated.
- Temporarily disable camera streams, KlipperScreen, remote control plugins, and other high-load services, then test printing again.
- If USB back-powering is suspected, prioritize using a quality, pre-made USB cable or a connection method with power isolation. Regular users should not attempt to modify cables themselves.
Pause, Resume, and State Save Prompts
Error Messages: Print already paused, Print is not paused, resume aborted, Unknown g-code state: PAUSE_STATE.
Common Causes:
- Executing
PAUSErepeatedly, or executingRESUMEafter a print has already been cancelled. - Mismatch between
SAVE_GCODE_STATE NAME=andRESTORE_GCODE_STATE NAME=names in custom pause/resume macros. - Duplicate definitions or logic conflicts between third-party macro packages and the default pause/resume macros in Mainsail/Fluidd.
- The previous pause state is lost after an emergency stop,
FIRMWARE_RESTART, or Klipper error.
Solutions:
- Confirm the current print state. Do not execute
RESUMEif the print is not paused. - Check if
[pause_resume]is enabled and ensure thePAUSE/RESUME/CANCEL_PRINTmacros are not defined multiple times. - Verify that the names used in
SAVE_GCODE_STATEandRESTORE_GCODE_STATEwithin your macros are exactly identical. - If Klipper has reported an error or an emergency stop has occurred, it is not recommended to attempt resuming the print. The risk should be eliminated, and the print should be started again.
Klipper Restarting Repeatedly (Klippy not connected Flashing)
Error Message: Mainsail/Fluidd shows Klippy not connected repeatedly. Klipper restarts automatically and exits within a few seconds each time. The log may show Klipper restarting too fast or each restart's klippy.log is very short.
Troubleshooting Methods:
-
First, check the end of the log file to confirm the reason for the last exit:
tail -100 ~/printer_data/logs/klippy.log -
If the end of the log shows a Python Traceback, it indicates a crash caused by a configuration parsing error or an internal exception.
-
Do not judge the root cause solely based on
Klipper restarting too fast; it is often just the result of systemd repeatedly failing to start the service. Prioritize handling the first real error found inklippy.log. -
If the log ends with
MCU Protocol error,Unknown command, etc., the firmware version is likely mismatched and needs to be recompiled and re-flashed. -
If the log is very short and no obvious error is present, try using a minimal configuration and binary search to locate the issue.
-
Check for circular includes in your configuration files.