'EBBCan': Unable to connect - After FW updates

Basic Information:

Printer Model: Custom Built
MCU / Printerboard: SKR2 + U2C + EBB36
klippy3.log.zip (9.0 KB)

Describe your issue:

After upgrading all the things via “update all” in the Machine tab of MainSail, I got the dreaded Firmware out of date messages.

and after updating them all to the latest versions, Klipper can no longer connect to my EBB36.

I can re-flash it over CAN without issues, so I know it’s still working - but Klipper is choking on it and I dont understand what the logs are telling me.

mcu 'EBBCan': Starting CAN connect
Created a socket
webhooks client 1962710992: New connection
webhooks client 1962710992: Client info {'program': 'Moonraker', 'version': 'v0.8.0-310-g67c98f6'}
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
mcu 'EBBCan': Timeout on connect
Created a socket
mcu 'EBBCan': Unable to open CAN port: Failed to transmit: [Errno 105] No buffer space available
mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed
Created a socket
mcu 'EBBCan': Unable to open CAN port: Failed to transmit: [Errno 105] No buffer space available
Created a socket
mcu 'EBBCan': Unable to open CAN port: Failed to transmit: [Errno 105] No buffer space available
Created a socket
mcu 'EBBCan': Unable to open CAN port: Failed to transmit: [Errno 105] No buffer space available
Created a socket
mcu 'EBBCan': Unable to open CAN port: Failed to transmit: [Errno 105] No buffer space available
Created a socket
mcu 'EBBCan': Unable to open CAN port: Failed to transmit: [Errno 105] No buffer space available

Interesting, I’m now seeing the same type of errors via ssh when using the can0 query:

~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

The can0 network adaptor (U2C) does seem to be operating normally:

For reference - /etc/network/interfaces.d/can0 looks like this:

# auto can0
allow-hotplug can0
iface can0 can static
    bitrate 1000000
    up ifconfig $IFACE txqueuelen 128

and I am using 1Mbit across the board, that hasn’t changed.

Any ideas chaps?

There was a Bug in the debian distro that reared its head, causing problems creating /dev/serial/ nthat passed through some upgrades from 5/12/23 I believe then shou;d have been fixed in 11/12/23 release . may be connected?

I didnt upgrade until yesterday, so I hope the issue was fixed - if not I’ve just wasted a ton of time and effort tearing my printer and CAN cable apart only to find it in perfect working order. I was hoping I’d just had a bad connection or something, but no. :tired_face:

Just in case my EBB36 is the issue, I’ve ordered another one.

I’m not convinced it’s broken tho - I can still update the FW via USB without issues.

look on youtube for /dev/serial its fecked up gps to fix on rhere to try

1 Like

Update-Tool breaks Ublox GPS device because of missing /dev/serial/by-id link · Issue #517 · km4ack/pi-build · GitHub old but looks relevant

Thanks I’ll do that.

@koconnor is there any way this issue would impact CAN?

This issue is well described since long here and here. As far as our knowledge goes this only affects the creation of the USB serial path and as such pretty sure unrelated.

The No buffer space available error is raised by Linux network stack CAN. It means that the controller fails to send CAN frames, this is consistent with your ifconfig output. Make sure you have a working CAN bus, proper Termination and same bitrate on all stations.

It was working 100% before I upgraded, physically nothing changed.

Once I’ve got my cabling back together, I’ll try flashing it without CanBoot.

Reflash your board(s) and make triple sure to use the correct settings during make menuconfig also especially making sure to use the same CAN bitrates everywhere.

I did this multiple times - I’m not a CanBus noob, I helped Michael from teaching tech create this video guide a year ago (attribution at 30 seconds in).

After replacing my cabling, Im not even able to flash the EBB36 via CAN anymore - but I can via USB:

Result: :tired_face:

FWIW, my setup is simple, just an Pi 3B+ connected viaUSB to the U2C (running CandleLight FW) → EBB36.

if distro not creating /dev/serial correctly you will not be able to use ls /dev/serial/by-id to see, it may show in lsusb, as my oct pro h723 board does as a can adapter, but ebb42 only available connected directly to usb.

I realised that I have updated the firmware on my U2C, and I’m beginning to suspect that may be the cause of my issues.

After making the following changes (from Voron Tools):

I’m seeing some improved results:

Next step is to put the OG BTT firmware back on my v1.1 U2C and see what happens.

Nope


mcu 'EBBCan': Wait for identify_response
Traceback (most recent call last):
  File "/home/pi/klipper/klippy/serialhdl.py", line 68, in _get_identify_data
    params = self.send_with_response(msg, 'identify_response')
  File "/home/pi/klipper/klippy/serialhdl.py", line 261, in send_with_response
    return src.get_response([cmd], self.default_cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 319, in get_response
    cmd_queue)
  File "/home/pi/klipper/klippy/serialhdl.py", line 253, in raw_send_wait_ack
    self._error("Serial connection closed")
  File "/home/pi/klipper/klippy/serialhdl.py", line 61, in _error
    raise error(self.warn_prefix + (msg % params))
serialhdl.error: mcu 'EBBCan': Serial connection closed

And solved!!!

The issue was CanBoot - I got rid of it:

rm -rf CanBoot

and install Katapult as per the Voron Tools Guide:

I do appreciate the help folks and here are my key learnings:

  • dont update the U2C firmware (it doesnt run a Klipper MCU anyway)
  • get rid of CanBoot and replace it with Katapult

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