So in general I am really happy with klipper, yet I have not been able to make it reliable enough so its usable . I am new to klipper yet I have several DIY machines I’ve build as a hobby, 3D printer, drawing bots and CNC machines. I’ve used several boards and programs and even built my own.
I tried to start with the most simple setup A Rpi 3B and an arduino UNO with a protoneer board shield. I have used this reliably with Grbl 0.9 and 1.1 for several months. I installed the 3 stepper drivers (TMC2208) and connected the motors.
I followed the installation instructions, installed a new fresh octoprint, added my klipper “test setup” configuration and after a couple of changes it was up and running. Until now just awesome…
Made some tests sending Gcodes through the octoprint terminal… Impressive how fast and smooth the motors move. No sound whatsoever. Can move up to F15000 without issues! Wow!
Then… I tried to do a print… I have several tests that I use as base drawings for my drawing bot. The Gcodes are only G0,G1,G2 and G3 commands but they are long files that do a complete drawing. I started with a small one that takes around 15mins. And my problems started…
Note: Skip to the end because from now on is just all issues and bla bla bla ----
My original config only had the steppers and seems when leaving the input ports disconnected and not used the print fails with error:
a) MCU ‘mcu’ shutdown: Move queue overflow
So searched around and changed all input/unused pins that are not connected to ^!ar##
Then there is a pullup an logical state inverted so there is always a Logical Enabled in the input. (Endstops for example)
So in octoprint terminal
->restart → FIRMWARE_RESTART-> and wait until status is ready
b) after that:
Lost communication with MCU ‘mcu’
So I find in the forums the following:
These “Lost communication with MCU” errors are typically due to some kind of system level or hardware event.
The host software stopped receiving
any data from the micro-controller for an extended period of time (5+ seconds).
Things to look at would be the usb cables
, the voltage levels (in particular
, make sure the rpi power adapter is powerful enough)
, electronic noise (eg, check for proper grounding), etc.Another thing to look at is the system logs in /var/log/ -
there may have been a system event that occurred at that time
Now, tried 4 different USB cables and 3 different power supplies (capable of 2.1A) when I looked at the command dmesg
through ssh it did not show any issue, but it seems to be triggering in the middle of the print the [ 9.357814] Under-voltage detected! (0x00050005)
message.
I thought the Arduino was taking the power out of the RPi. So I separated the power supplies. The Adruino has a 18V power supply for the motors,an indipendant 9V power supply for the board, and the Rpi was connected to the most powerful usb charger I had at home.
In the middle of the program running again under voltage, but now I noticed was the octoprint telling me in the icon. So now I went and connected a USB hub externally powered in between the Rpi and Arduino.
Finally I used the hub to supply the Rpi and direct short cable to Arduino and no more under voltage appeared. But now each time I have an error, it has a different message.
I think they come out of loosing communication in the middle.
c) MCU ‘mcu’ shutdown: Rescheduled timer in the past
Recv: // This generally occurs when the micro-controller has been
Recv: // requested to step at a rate higher than it is capable of
Recv: // obtaining.
Recv: // Once the underlying issue is corrected, use the
Recv: // “FIRMWARE_RESTART” command to reset the firmware, reload the
Recv: // config, and restart the host software.
Recv: // Printer is shutdown
Recv: !! MCU ‘mcu’ shutdown: Rescheduled timer in the past
d) MCU ‘mcu’ shutdown: i2c timeout
I do not even have an i2c device connected! → but
The error comes because there are pins floating in the air, by setting the pins as fixed output with value 1 should correct it.
I added to my config:
[static_digital_output my_output_pins]
pins: ar13, analog0,analog1,analog2,analog4,analog5
# A comma separated list of pins to be set as GPIO output pins. The
# pin will be set to a high level unless the pin name is prefaced
# with "!". This parameter must be provided.
e) MCU ‘mcu’ shutdown: Watchdog timer!
f) MCU ‘mcu’ shutdown: Missed scheduling of next digital out event
g) one with AVR thermal issue but I did not record the line in my log
printer.cfg (35.0 KB)
In conclusion: Technically is working but…
-Keeps disconnecting. Always after several minutes of running. (No under-voltage issue until disconnection in dmesg)
-Gives different issue, but most commonly the Lost communication with MCU 'mcu'
-So I have not been able to run the system to complete any file longer than 15min and this is too unreliable.
- There is no recovery from any error, so you have to start the print from the start because octoprint neither Klipper report last state, line of code or position before the error, and keeps spamming with temperature responses, so if you are not there, the information is lost.
Until now I’ve tried:
-using different power supplies (4 different ones, including USB hub).
-Using the hub between the arduino and the RPi
-Just running it only the arduino and the RPi (No motors, no cables, nothing around)
-Changing the USB cable, Tried 4 different types, best result with the first one I had.
-Using a separate power supply for each component.
-Changed configuration to set all pins static except the ones used for driving the motors
Does someone have an idea what else can I do? Or why it can be loosing the communication?
I have other Rpi3, Zero and RPi4 available if the issue could be the board (I doubt it), other arduino UNO boards too. I also have SKRmini v2 and SKR1.4 but they are fully functional and configured with Marlin and it would take too much effort to bring them back to that state.