MCU 'EBBCan' shutdown: Missed scheduling of next digital out event

Basic Information:

Printer Model: Ender 3 Pro (Modified)
MCU / Printerboard: Manta M4P
klippy.log
klippy.log (5.5 MB)

Describe your issue:

Hey all! This one’s been on my plate for awhile now, and I’m about at my wit’s end toying with CanBus. Ever since deciding to make the switch using the U2C and the EBB36, I’ve been experiencing a rather frustrating issue when attempting to print. Upon booting the system, everything’s fine. I’m able to perform all actions pre-printing, including homing, probe calibration, bed mesh, etc. etc. with this configuration. When firing up a print, everything runs as anticipated as well, with both the nozzle and the bed heating up to the intended temperature, and the printer moving into its head into position to perform the filament extrude on the leftmost side of the bed.

However, upon a minute or two passing into printing, I hear the printer come to a halt, the toolhead stops moving, and within Klipper, I most commonly receive the following message:

MCU ‘mcu’ shutdown: Missed scheduling of next digital out event
This is generally indicative of an intermittent
communication failure between micro-controller and host.
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

Here’s the steps I’ve already taken so far to try to either troubleshoot, or better understand what’s going on here:

  • Tried multiple USB C Cables from the Manta M4P to the U2C

  • Inspecting dmesg
    Here’s dmesg’s output, these are reported live during a print:
    [ 6603.535376] gs_usb 1-1.2:1.0 can0: usb xmit fail 1
    [ 6789.714634] gs_usb 1-1.2:1.0 can0: usb xmit fail 3
    [ 6790.108197] gs_usb 1-1.2:1.0 can0: usb xmit fail 5
    [ 6798.437375] gs_usb 1-1.2:1.0 can0: usb xmit fail 9
    [ 6801.063411] gs_usb 1-1.2:1.0 can0: usb xmit fail 8
    [ 6807.275245] gs_usb 1-1.2:1.0 can0: usb xmit fail 7

  • Viewing the events from lastlog
    Interestingly enough, when attempting to perform a “Firmware Restart” after a failure, I notice FluiddPi kick off the following, and never actually fully restart (it hangs):

Feb 27 02:56:55 fluiddpi python[1784]: [klippy_connection.py:_do_connect()] - Klippy Connection Established
Feb 27 02:58:26 fluiddpi python[1784]: [klippy_connection.py:_request_initial_subscriptions()] - Webhooks Subscribed
Feb 27 02:58:26 fluiddpi python[1784]: [klippy_connection.py:_request_initial_subscriptions()] - GCode Output Subscribed
Feb 27 02:58:26 fluiddpi python[1784]: [klippy_connection.py:_check_ready()] -
Feb 27 02:58:26 fluiddpi python[1784]: mcu ‘EBBCan’: Unable to connect
Feb 27 02:58:26 fluiddpi python[1784]: Once the underlying issue is corrected, use the
Feb 27 02:58:26 fluiddpi python[1784]: “FIRMWARE_RESTART” command to reset the firmware, reload the
Feb 27 02:58:26 fluiddpi python[1784]: config, and restart the host software.
Feb 27 02:58:26 fluiddpi python[1784]: Error configuring printer
Feb 27 02:59:02 fluiddpi dhcpcd[828]: eth0: adding address 2600:2b00:8a38:e92b:12ca:6a99:91d6:b830/56
Feb 27 02:59:02 fluiddpi dhcpcd[828]: ipv6_addaddr1: Invalid argument

  • Adjusting the CANBus interface configuration, bumping the baud rate from 250k to 500k and allowing hot-plug
  • Adjusting the TRSYNC_TIMEOUT in mcu.py from 0.025 to 0.050
  • Testing continuity with the DIY CanBus Cable (it rang fine across all 4 lines)

No matter what the change is, I’ve unfortunately been experiencing the same issue consistently occurring around the time of the first layer, every time. I’m fairly proficient with Linux and Unix systems and believe I’ve covered a majority of the potential logs that I thought might had some critical information I’ve been missing, however nothing in any of these is standing out. I do notice in the klippy logs the variation in ready_bytes, often fluctuating from 0-55 at times, however outside of that there’s not much else I’m coming across in my system’s logs that points to one particular thing being an issue.

The cable I used for CANBus communication is simply made of 22AWG Stranded Hookup Wire and runs maybe 2-3ft from the U2C, up the 2020 extrusion, out a cable guide, and down to the EBB36.

Is there anything else I could be missing when checking for issues on my system/printer?

I would flash new firmware on the U2C if you haven’t already done that.

If your U2C is a V2 then use this firmware that BTT provided to fix issues with CanBoot when loading Klipper firmware.

G0B1_U2C_V2.zip

Also, Make sure the CAN wires are not running next to stepper motors or their wires.

Good call! After checking the page, I do see a new-er firmware out there I could potentially flash. I’ll give that a shot now.

Here’s the printer currently:

As it currently stands, for testing I just have a USB cable fully extended, just to ensure there’s no crosstalk or any odd potential interference with it being wound up. From the U2C on the rail, it runs up the 4x 22awg wires and through the shroud/blue cable guide, and back down to the toolhead.

Update… Definitely not trying to jinx myself quite yet here, but it does seem like after flashing the newer firmware, the issues I’d been seeing the other day regarding TX failures are now gone!! Thank you so much for suggesting this one.

I think being in the troubleshooting scene the last 10 years or so with IT that even now, it’s starting to show that I shouldn’t be putting the basics of troubleshooting behind me :sweat_smile: I’ll keep the thread open for the remainder of today while I run through a few more prints and confirm that it’s no longer an issue, and if nothing comes up I think I’ll be safe to close this one out.

Thanks again!

1 Like

Hi, i have the same issue but nothing helps

Printer Model: Voron 2.4
MCU / Printerboard: Octopus + SB2240 via CAN

I have done everything now :confused:
shortened CAN wire as much as possible
moved it away from motor lines
flashed the BTT U2C board with the latest Firmware from the Github repo

dmesg does not give any error information

i have sporadic issues that the SB2040 ECU is missig its shedule … dont know what to do any ideas?

btw. “FIRMWARE_RESTART” does not reconnect the ecu it looks like the ECU looks up … But the hotend FAN keeps cooling :wink:

Hi there. Same problem.
2 days ago changed all can setting to 250000 instead of 1000000. Flashed latest klipper firmware. No failed prints for now. Can load during homing and bed meshing only 26% of bandwidth.

Maybe it helps.

ill give it a try thx for the tip

EDIT:
did reduce to 250000, no change from time to time i get that error
all ECUs are up to date wit canboot(katapult) and klipper firmware, the BTT U2C is on the latest binary from there repo :confused:

i see no can errors in the dmesg, no errors in the klipperlog except this one error msg, after that it seems the ECU is dead … no response over can, no changes … even after 1h the hotendfan is still running …

any further debugging ideas?

Printer Model: Voron 2.4
MCU: M8P V2.0 + SB2209 RP2040 via CAN

i have also the same issue, i think it was after the last update from klipper, mainsail and moonraker

Hello @flo.make !

For the thread is solved and for it’s age, please open a new one with all requested information.