# Timer too close

**URL:** <https://klipper.discourse.group/t/timer-too-close/6634>\
**Category:** Knowledge Base\
**Created:** [February 13, 2023, 11:17am UTC](https://klipper.discourse.group/t/timer-too-close/6634 "2023-02-13T11:17:28Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![Sineos](https://yyz2.discourse-cdn.com/free1/user_avatar/klipper.discourse.group/sineos/32/18_2.png) [@Sineos](https://klipper.discourse.group/u/Sineos)\
**Post date:** [February 13, 2023, 11:17am UTC](https://klipper.discourse.group/t/timer-too-close/6634/1 "2023-02-13T11:17:28Z")

</div>

# Timer too close

## Background

A “Timer too close” error occurs when the MCU is asked to schedule an action at a time that is already in the past. This typically results from delayed communication between the host and the MCU - for instance, if the host was busy or the message was blocked en route.

> ⚠ **Important:**  
> Klipper can identify _what_ command was too late, but cannot determine _why_ the delay occurred. The root cause is often external - such as USB congestion from a webcam or high system load - and beyond Klipper’s direct control.

## Causes and Potential Solutions

The `klippy.log` will mostly contain the fact that this issue occurred, but cannot offer a direct pointer to the cause. Carefully analyzing and working through the points listed below is needed to pinpoint it.

- **High CPU or system load on the host (e.g. Raspberry Pi)**  
Close or disable other resource-intensive processes (e.g., locally running interfaces or services, webcam streaming, browser tabs). Simplify your setup to reduce the load. The host computer should be dedicated to running only Klipper and its official environment for the best results.

- **High disk activity or SD card issues**  
Check the SD card for errors and performance degradation. Replace aging or low-quality cards. Use high-speed, reliable storage.

- **Memory swapping due to low free RAM**  
Monitor memory usage (`htop`, `free -m`) and avoid situations that trigger swapping. Reduce unnecessary services or increase RAM.

- **Overheating and CPU throttling**  
Ensure the SBC (e.g. Raspberry Pi) has proper cooling. Use heat sinks and fans where appropriate to prevent CPU slowdowns.

- **Undervoltage conditions**  
Look for `Under-voltage detected!` messages in system logs. Use a stable and sufficient power supply for the SBC and MCU.

- **USB, UART, or CAN wiring faults**  
Avoid running communication lines (USB, UART, CAN) alongside current-carrying cables like heater or stepper wires. Use shielded cables, ferrite cores, and keep data cables short and well-routed. Carefully inspect all wiring for potential damages.

- **ElectroMagnetic Interference (EMI)**  
EMI can corrupt or delay messages. Improve grounding, avoid wire bundles that mix power and signal, and shield vulnerable cables.

- **Conflicting USB devices (e.g. webcams, displays, hubs)**  
Remove unnecessary peripherals that may overload the USB bus. Webcams in particular can monopolize bandwidth and delay message delivery.  
Using an (external) powered USB hub can improve the situation, but it can also make it worse. Some host computers and USB hubs do not work well together.

- **Incorrect firmware `Clock Reference` setting**  
Ensure the correct `Clock Reference` is selected in `make menuconfig` when building Klipper for your MCU. Boards with multiple hardware revisions may require different settings.

- **Running Klipper inside a Virtual Machine (VM)**  
VMs introduce latency and timing inconsistencies. Run Klipper directly on the host hardware for best reliability.

- **Poorly written macros or command spam from slicers**  
Identify macros that flood Klipper with frequent updates (e.g. unnecessary `SET_FAN_SPEED` commands or returning additional values like temperatures at a high frequency).  
Review your slicer’s G-code for high-frequency commands (e.g. dozens of `M106` commands per second) and reduce them.

- **Unofficial modules or patched Klipper forks**  
Remove custom modifications or third-party modules not part of the official Klipper repository, as they can cause instability or overload the command queue.

---

_[View the full topic](https://klipper.discourse.group/t/timer-too-close/6634)._
