Internal error on command:"G3" / MCU connection lost

Basic Information:

Printer Model: Voron 0
MCU / Printerboard: BTT SKR mini e3 V2.0 / BTT EBB36 v1.2
Software: latest Klipper version on both MCUs, latest Octoprint on Pi 4


I recently ran into issues with a previously perfectly working Voron 0. The Error message I get is: internal error on command:“G3”.
The error usually shows up after the printer ran for some minutes, so initially everything works fine. It also doesn’t seem to occur on the same G-Code line or layer height all the time. Sometimes it takes longer to interrupt my print, sometimes it happens pretty fast. In Idle, Klipper never loses it’s connection to the MCU. Also, before the error showed up for the first time, I regularly printed the files that fail now.
The error results in a lost connection to my EBB36 CAN MCU on the printhead. I initially thought this to be a CAN problem, but after switching to serial connection to the EBB36, the problem persists. After performing a FIRMWARE_RESTART, Klipper can immediately reconnect to the EBB36.

Attached is the klippy.log of a print that failed this morning along with a screenshot of the error message in Octoprint’s Klipper log.

I am at a loss on how to proceed debugging this error. Grateful for any input :slight_smile:

klippy.log (3.1 MB)

Your initial error is

Timeout with MCU 'can0' (eventtime=3706.989758)
Transition to shutdown state: Lost communication with MCU 'can0'

The rest you can disregard.
See Timeout with MCU / Lost communication with MCU

1 Like

Damn. I was hoping for a solution that does not involve redoing my wiring. Since my prints fail even with PLA prints (and ASA was previously working fine), I think I can rule out everything PSU related. Then it must be the USB/CAN cables. Thanks for your help nevertheless.

Maybe think about connecting the EBB36 via USB-C with additional power wires.
I use this now on my bigger CoreXY and it seems to work flawlessly. Was running on CAN before and had little hickups at odd times.

I’m planning to use it on my V0.1 as well but have to check whether the current mounting and everything else fits just fine.

I do that already. This is what I meant with switching to serial connection. I followed this tutorial which allowed me to reuse my CAN wiring, but the connection is serial, not CAN anymore. I didn’t bother to rename my MCU in the klipper config, so in the log it still pops up as can mcu, but it is not can anymore :slight_smile:

1 Like

This is a nice little guide to change from CAN to USB.
Thanks for that! Maybe I’ll adapt it for my CoreXY as I kept the four CANbus wires still… :smiley:
But I will check this definitely on my V0!

If you already have a running CAN setup, wiring may even be easier. My CAN setup consisted of the EBB36 and a BTT U2C. The U2C has multiple CAN in-/outputs that are all wired in parallel. I simply cut a USB-A to USB-C cable, cut all wires except the DATA+ and DATA -, plugged the USB-C end to the EBB36 (as in the tutorial), crimped ferrules to the USB-A side of the cable and connected USB-A to Pi and the crimped side to the screw terminal CAN_H/CAN_L of the U2C. And that’s it. Sacrificing one USB cable, I switched from CAN to Serial. The only other thing I had to watch out for, is to remove the 120 Ohm terminator on the U2C.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.