USB vs CAN performance

So the new release from mellow sparked a discussion about the necessity of CAN

Mellow just released a toolhead board (Fly-sht) (and yes…great name)
It can be connected to CAN or directly with USB to the rpi

The product page stated that CAN is “better” and USB “signal stability is easily disturbed. It is recommended not to use too long usb cable.”

With the multi-mcu homing and probing feature it stated that there will be an overshoot that is derived from the latency

So the current word on the street is -
CAN - low latency low noise
USB - higher latency higher noise

Is that true?
Because overshooting can be a problem in the long run for tear and wear of the endstops and such, but it really depend on how much overshooting there is

So if USB latency is 25ms for a 2m cable, ya CAN is better
but if USB latency is ~5ms, not really a problem and will save money and wires

Anyone really tested the latency and noise of a long good USB cable?

Would be happy to hear your thoughts on that
Thanks!

Standard endstops can handle more than 0.5mm overshoot before any damage would occur. I don’t know what the latency is on my Huvud, but it’s not enough to concern me. I will say I tried using usb and had problems. CAN has been 100% reliable, and it’s the only way I would connect a toolhead board going forward.

Thank you!
0.5 overshoot - Is that from a datasheet? I never knew that, that’s great, can you share where you got the number from?

USB problems - can you expend on the problems did you had?

1 Like

Nothing from a datasheet. Just trigger an endstop and see how much further the arm can flex before it contacts the body of the switch. 0.5mm is a very conservative number.

On my Huvud 0.61 I connected it to usb over the microfit connector. It worked for a while, but now usb is entirely nonfunctional on the board. It’s possible I killed something by using an unshielded cable, but I don’t know. That board now requires flashing with an stlink, but it works great with CAN. I also have future plans to convert the AB motors on my 2.4 to CAN so I only need 4 wires in my Z chain. That isn’t possible with usb.

1 Like

No.

Klipper implements an internal system to validate that response time is kept within 25ms ( Multiple Micro-controller Homing and Probing - Klipper documentation ). That system is irrespective of the low-level communication method.

In general, USB is going to have lower latency, notably higher throughput, and lower system load than CAN. However, CAN provides more wiring flexibility and may be less susceptible to noise.

-Kevin

Got it, thanks!

3 follow-ups:

  1. What are the effects of a long USB cable (2m-3m) if any?
  2. What are the symptoms of a lot of noise on the cable? more packets retransmission? isn’t it solvable by a better USB cable?
  3. Any other reason to use CAN expect cable management? Giving that the bottom line of the USB option will be cheaper, will you recommend it over CAN?

If you’re asking me, I don’t know the answer to those questions. It’s not something I’ve tested. I use CAN for the toolhead and XY steppers on my Voron2.4 - it works in my setup - I haven’t tried USB on a toolhead.

-Kevin

Thanks
I’m gonna test it myself as soon as it arrives and we will see what happens

On my Huvud 0.61 I connected it to usb over the microfit connector. It worked for a while, but now usb is entirely nonfunctional on the board.

My guess is your custom wiring didn’t maintain impedance all the way through including the connectors. Losing the shielding would change the impedance for sure and the Microfit likely has a different impedance than a usb connector thus signal reflections would radiate from these points in both directions on the cable. The D+ D- differential signaling is great at eliminating common-mode currents but does little to nothing for impedance mismatches.

(edit: Did I miss-understand something? How did you even get usb over the microfit when the microfit is reserved for CAN…I feel like I missed something)

You can switch the microfit to USB by cutting a couple traces and adding solder bridges. See the top edge of the back of the board.

Oh I see, that’s neat.