What does an MCU timeout mean in Klipper?

By Asked 3D Content TeamPublished Last verified

What does an MCU timeout mean in Klipper?

The Klipper host (the Raspberry Pi or similar computer running klippy) stopped hearing from a microcontroller board (MCU) for about 4 to 6 s and shut the printer down. That board is the printer’s mainboard or a toolhead board. Klipper’s FAQ points first at the USB connection: the cable, loose plugs, unstable power and electrical noise.

The number

What Klipper does Value (Klipper v0.13.0) Where it is set
Host asks each MCU for its clock Every 0.9839 s clocksync.py
Unanswered clock queries allowed 4; the 5th in a row trips the timeout clocksync.py, is_active()
Host checks for the timeout Once a second statistics.py, toolhead.py, mcu.py
Silence before Lost communication with MCU About 4 to 6 s after the board’s last reply The three rows above
Host’s attempts to reconnect at startup 90 s, then Unable to connect serialhdl.py
Board turns its heaters off without host confirmation After 5 s in v0.13.0; 3 s in current Klipper heaters.py, Klipper FAQ

The values come from the klippy source of the Klipper v0.13.0 release on GitHub. The 3 s heater figure is from Klipper’s current FAQ.

Why does Klipper lose communication with the MCU mid print?

The host calculates when each stepper motor should step and sends them in advance; the MCU runs Klipper’s microcontroller code and executes each one at the requested time. To keep the two clocks in sync, the host asks every board for its clock about once a second. When five queries in a row go unanswered, the host shuts down with this message:

Lost communication with MCU 'mcu'

The name in quotes tells you which board. mcu is the [mcu] section of printer.cfg, the main control board. A toolhead board or any other extra board shows the name from its [mcu <name>] section.

A Raspberry Pi host and a printer control board joined by a USB cable whose plug has worked half out of the board's socketWhen the link between the host and the board breaks, the host stops getting replies to its clock queries and shuts the printer down.1Host: Raspberry Pi running klippy2MCU: printer control board3Plug half out of the socket
  1. Host: Raspberry Pi running klippy
  2. MCU: printer control board
  3. Plug half out of the socket
When the link between the host and the board breaks, the host stops getting replies to its clock queries and shuts the printer down.

Klipper’s FAQ lists these causes:

  • The USB cable or a loose plug.
  • Raspberry Pi undervoltage from a poor supply or supply cable.
  • An overloaded printer supply. Power fluctuations can reset the board’s USB chip.
  • A crimped or frayed stepper or heater wire. Printer movement stresses it until it loses contact, shorts or makes noise.
  • Mixed 5 V supplies. Noise rises when the printer supply and the USB cable both power the board.
  • ModemManager. Some Linux distributions enable it, and it can disrupt serial communication.

Is it the same as “Timer too close” or “MCU shutdown”?

No. Lost communication means the host heard nothing back. A message starting MCU 'mcu' shutdown: means the board is still talking: it halted itself and reported why. Klipper adds a hint for the common reasons:

  • Timer too close: the host computer is overloaded. Check CPU load, swap, disk errors, overheating and unstable voltage.
  • Missed scheduling of next: an intermittent communication failure between the board and the host.
  • ADC out of range: a heater temperature beyond its configured min_temp or max_temp (ADC is the analog-to-digital converter behind the reading; see MINTEMP errors).

MCU 'mcu' spontaneous restart means the board rebooted by itself during the job.

Will my heaters stay on after the error?

No. The host has to reconfirm each heater it turns on, and a board that stops hearing it shuts down with heaters and motors off. The print is lost, though: Klipper halts rather than pausing.

How do I restart Klipper after a shutdown error?

Type FIRMWARE_RESTART in the console. Klipper’s message ends with that instruction:

Once the underlying issue is corrected, use the
"FIRMWARE_RESTART" command to reset the firmware, reload the
config, and restart the host software.
Printer is shutdown

RESTART only reloads the config and restarts the host software. It leaves the board’s error state in place, which is why a lost connection or an MCU shutdown needs FIRMWARE_RESTART.

Why does Klipper stay disconnected after a restart?

It still cannot reach the board. At startup the host retries the port for 90 s, then reports mcu 'mcu': Unable to connect and stops at Error configuring printer. Fix the cable, the board’s power or the serial path, then send FIRMWARE_RESTART again.

How to check it on your own printer

  • Reseat or replace the USB cable at both ends with the printer off.
  • Run vcgencmd get_throttled on a Raspberry Pi. Bit 0x1 means undervoltage now; 0x10000 means it happened earlier.
  • Unplug the printer’s supply and leave USB in. If the board still powers on, set it to take power from one source only.
  • Flex the moving harnesses and replace any crimped or frayed wire.
  • Disable ModemManager if your Linux distribution runs it.
  • Use the stable port name. Set serial: in [mcu] to the path from ls /dev/serial/by-id/* so a reset cannot change it.
  • On a CAN bus toolhead board, check for exactly two 120 Ohm terminating resistors, twisted CANH and CANL wires and secure crimps. ip link show can0 should report qlen 128.
  • Watch bytes_invalid in klippy.log. On a CAN bus board, a count that climbs every few hours points to software, not wiring. Klipper’s guide starts with Linux kernel 6.6.0 or later.

Sources

  1. klippy/clocksync.py at v0.13.0, Klipper on GitHub (accessed October 20, 2026)
  2. klippy/mcu.py at v0.13.0, Klipper on GitHub (accessed October 20, 2026)
  3. klippy/toolhead.py at v0.13.0, Klipper on GitHub (accessed October 20, 2026)
  4. klippy/extras/statistics.py at v0.13.0, Klipper on GitHub (accessed October 20, 2026)
  5. klippy/serialhdl.py at v0.13.0, Klipper on GitHub (accessed October 20, 2026)
  6. klippy/extras/error_mcu.py at v0.13.0, Klipper on GitHub (accessed October 20, 2026)
  7. klippy/extras/heaters.py at v0.13.0, Klipper on GitHub (accessed October 20, 2026)
  8. Features, Klipper documentation (accessed October 20, 2026)
  9. Frequently Asked Questions, Klipper documentation (accessed October 20, 2026)
  10. G-Codes, Klipper documentation (accessed October 20, 2026)
  11. Configuration reference, Klipper documentation (accessed October 20, 2026)
  12. CANBUS Troubleshooting, Klipper documentation (accessed October 20, 2026)
  13. Raspberry Pi OS (vcgencmd get_throttled), Raspberry Pi Documentation (accessed October 20, 2026)