Background
As explained in Klipper Architecture / Ecosystem, the “Klipper core” actually consists of 3 different components:
Component | Function | Typical Way to Update |
---|---|---|
Host Process | Running on the SBC. Core management functions | Update Manager of the web interfaces |
MCU | Firmware running on the printer board | make menuconfig followed by make flash ... |
Host MCU | MCU-like functions on the SBC | make menuconfig followed by make flash ... |
As shown in the table above, only the Host Process can be easily updated from the web interfaces, but the other critical components require manual intervention.
Depending on the changes or updates to the Host Process, it may be necessary to update the other components as well.
Since this is rarely necessary, Klipper will notify this with an error message. In the klippy.log
file and in the web interfaces, the error will look similar to the following:
Klipper reports: ERROR
MCU Protocol error
This is frequently caused by running an older version of the
firmware on the MCU(s). Fix by recompiling and flashing the
firmware.
Your Klipper version is: v0.11.0-271-g5f990f93
MCU(s) which should be updated:
mcu: Current version v0.10.0-478-g78454dd3
rpi: Current version v0.10.0-364-g4d4c8d8f
Up-to-date MCU(s):
- The line
Your Klipper version is
shows the version of the Host Process - The
mcu
line(s) lists all printer-boards and their current versions that need to be updated. Since Klipper supports multiple concurrent printer-boards, e.g. a main MCU and various additional (CAN) MCUs, there might be multiple entries. rpi
corresponds to the Host MCU running on the SBCUp-to-date MCU(s)
would list these that do not require an update
Reasons
One or multiple MCUs or the SBC’s Host MCU are outdated compared to the currently running Host Process and lack support for some of its features.
Potential solutions
- Build and flash a new firmware for the affected printer boards, according to Building and flashing the micro-controller and the instructions for the respective board types.
- Build and install a new Host MCU according to Building the micro-controller code