EBB 36 CAN Board as USB mcu randomly loosing connection

Basic Information:

Printer Model: DIY CoreXY (Hypercube Evolution highly modified)
MCU / Printerboard: SKR 1.3 and EBB 36 1.2
Host / SBC: RPi 3B
klippy.log klippy(6).log (1.1 MB)

Describe your issue:

I upgraded my printer with a BTT EBB 36 Can toolhead board. As I did not have a USB to CAN board (bus converter U2C) I wanted to use the board as a normal USB mcu.
To do so, I followed these instructions: Lab4450.com - Upgrade CAN EBB36 to a USB Toolhead

How I created my cable

  • dismantled a USB-C to USB-A cable
  • used a flexible, good quality cable with 11 individual conductors (LAPP Ă–lflex Servo FD 798 CP; obviously I only used 4 out of the 11 conductors)
  • connected one end to the CAN-Molex connector and the other one to 24V, ground and the data lines of the USB-A connector
  • USB-C data lines to Dupont Connectors as per instructions
  • so there is no 5V connection between my RPi and the EBB 36 board

Firmware

  • I flashed the board with the current klipper firmware via this self-created cable successfully
  • Added it to the klipper config and set everything up as per BTT instructions
  • Mainsail also recognizes the board (next to my original SKR 1.3)

My issue

When starting a print, the machine sometimes suddenly stops and Mainsail reports a connection loss to the EBB mcu. (see klippy.log: Lost communication with mcu) But this happens randomly. For example, I was able to finish a pressure advance tuning pattern and one stringing test, but since then every print already failed during the purge line.
When I first tried the board after installation, I also got those dropouts when only testing the part fans without even having started a print. But I cannot reproduce this at all now. Wiggling the connections on the print head does not lead to a dropout.

What I tried so far

  • Increased TRSYNC_TIMEOUT; I suspected that my cable might cause some additional delay. This did nothing
  • Checked cabling, but found no obvious bad connection
  • update klipper to the newest version (the log is from a previous patch version)

Things ruled out

  • I would rule out a software/firmware configuration issue, as I already got some finished prints out of it.
  • The G-Code is probably also not the issue, as I once had it stop during the skirt and the same file a few minutes later already stopped during the purge line.
  • There could be an issue with the ebb 36 itself, but I do not really know how I would eliminate this as an issue. So exchanging the board will be my last step.

Next steps

I would like to debug the issue further, by understanding the information from the klippy.log. Ideally, I would like to find out if there is some latency issue with my cable or a bad connection. From reading the logs I did not figure out where the timeout occurred and what the specific timeout was. I expected to find something in the terms of: EBB mcu did not respond in time. Last connection: Current Time: or something like that.
Can anybody assist?
Or do you think that it is probably the cable and the simplest step would be creating a new one? How would you go about that to not create a similar issue with the new cable again?
Do you have any recommendations for a good USB-C cable? And how would you go about severing the 5V and GND connections without breaking the cable? Are there maybe some adapters?

Please let me know if I missed anything.

You don’t have to tear apart a USB C to A cable. If you’re running 24V to the Molex connector then all you have to do is pull the “VSUB” jumper (JP3 on the schematics) so that there is no +5V power connection between the host and the EBB36:

How did you wire your Ground? It might be a bit tricky in your system and ground shifts could be the cause of your connection loss.

Can you draw out your system and how power is wired?

1 Like

Thank you for your fast response. I created the following diagram. Is that what you had in mind?

I also just tried a handwritten gcode file that simply moves the print head in circles without printing anything. That did not cause a dropout. But the printer was cold during that test.
So this might be something connected to real current draw when the orbiter is pushing the filament.

Edit: Regarding your suggestion: so without the 5V Jumper the EBB will not see anything from the 5V of the RPI USB? In that case, I can try with any USB-C cable, correct? That is a simple test case. I will try that tomorrow.

The drawing is exactly what I was looking for.

In answer to your question, pulling the 5V jumper will isolate the EBB36’s electronics from the Raspberry PI 3B’s. When I look at the SKR 1.3’s schematic, there is a diode on the VBUS (USB power line) between it and the SKR-1.3’s 5V supply, so you should be okay there.

How are the outputs labeled on the “No Name PSU 5V”? Are they “+V” and “-V” like on the Meanwell?

You need to have a single common ground on the USB Data Lines, which you don’t have now and if you add unmodified USB cables you’ll have a Ground loop (which is never good) from the EBB36 to the rPi to the SKR1.3 and back to the EBB26.

As a first step, why don’t you try replacing the two modified USB cables with stock ones and see how things work for you. There’s a good chance you’ll be fine.

If not then we’ll look at eliminating the Ground loop.

My fingers are crossed for you.

???

This is the USB port attached to what looks like the JP2 jumper on the board which provides the PT1000 selection.

This cable from aliexpress. For usb connection (d+ and d-) ebb board via can cable.

Can you point to a reference to this and what this connection is supposed to do?


I still can’t find the link, but you can make the cable yourself :slight_smile:

https://vi.aliexpress.com/item/1005007436228537.html

Okay, I don’t know if I would recommend it and I’m not sure you’re on the right jumper - Shouldn’t it be JP1 which is marked 120?

Unfortunately, the BTT documentation isn’t clear on the jumpers (other than the +5V to VBUS) and I don’t have a board to confirm the wiring on.


Two 120om resistors - this is can bus requirement

must be short

https://www.klipper3d.org/CANBUS_Troubleshooting.html

For usb connections not need.

None of this is convincing me that this is the right thing to do - I guess what I thought was a jumper you’re connecting to in the first image is “P6” as per the EBB 36 schematic:

You’re connecting USB, which is 90Ω and has its own termination requirements (satisfied within the STM32 MCU) to a CAN driver with common mode choke in series with 120Ω trace impedances. Along with that, you’re repurposing a cable meant for a tower PC and I can’t see the actual wiring used - which is why I asked for a reference on what you’re proposing.

This approach may work but I would not recommend it without reviewing an analysis of the wiring used along with the impedances all along the USB lines.

I just got around to check this. The No-Name supply labels the output GND and +5. I also checked continuity between the ground on my SKR 1.3 and the No-Name PSU. And they are indeed connected, meaning that neither the Meanwell nor the No-Name PSU isolate the output from the input.
I also replaced my selfmade cable with a stock USB-c cable and started a print. Right now it is printing and I already got further then I was before. I’m printing the same gcode file.

This image is actually from the guide I used and mentioned in my first post. The USB data lines connect to the CAN L and CAN H pins. These are directly the ones behind the Molex connector. The image shows the dismantled USB-C cable where the data lines are terminated with a Dupont connector to put them onto the to CAN pins. They are doing this to use the same cable as was used for the CAN connection. I only replicated this because I liked that everything was contained in one cable.

I did not put a jumper onto the pins designated for the 120Ohm resistor (CAN Terminator), as I am not using CAN. Using the USB cable from the tower pc probably also would require dissecting.

However, the print is still running - so I’m feeling slightly optimistic. This means I will now permanently replace my modified cable with a stock one. In summary, I will then have one USB-C cable and one power cable as well as a reverse bowden tube to my print head, which is ok too.

I will let you know when everything works out after a few prints. Then I can be quite certain that it was the USB cable. (This is also the first suggestion in the FAQs)

Glad to hear you’re working.

If you have any more issues, I’ll have you check the impedance between the No-Name Power Supply “GND” output and the AC lines. They should be isolated but unless there’s problems let’s let sleeping dogs lie.

Still thinking about the USB/CAN cable modification and maybe it would work for short runs with USB 1.0 “Full-Speed” (12MHz with a 3m maximum cable length) signals. It definitely wouldn’t for USB 2.0 and later. I’m also not sure how the Raspberry Pi recognizes the part as there are no CC pin termination at the connector.

Anyway, I’m glad that you’re working and please be skeptical if somebody tells you to wire your own USB cable.

I’m running the same on my Voron v0 and was using it on another printer.
Works fine if done properly.
Only if the 24 V breaks away it can damage the EBB36 and the SBC…
There is no termination needed in either side of the cable. You connect the data lines with USB on the SBC.

I’d glad it works for you but it’s a really iffy connection in terms of reliability.

Wouldn’t it just be simpler to go with CAN?

1 Like