I have been communicating with Klipper Devs to get CAN and USB information that I am seeking. Since I have answers to these difficult questions, I am going to compile this information here for CAN and USB.
EDIT: Please see koconnor’s very concise post below which I marked as the solution.
CAN
Baud rate for CAN MCU’s (toolboards and other CAN devices) is set when configuring the
make menuconfig
command for making Klipper firmware. The MCU portion of the printer.cfg file must also match the baud rate that was defined when making the firmware. If the default baud rate is used during the firmware make process, which is 250Kbits/s, then the printer.cfg file does not need to define the baud rate for that MCU, since 250Kbits/s will be assumed if not defined by default.
Interesting fact, all MCU’s have the same default baud rate of 250Kbits/s no matter which serial communication type is used (CAN, USB, UART, SPI, I2C…).
The maximum baud rate for CAN is 1Mbits/s which supports CAN 2.0. Interesting note: CAN-FD and CAN-XL will not be implemented into Klipper due to much work is needed to implement faster versions of CAN but there is little gain in speed for this work.
With that said, one developer has confirmed his EBB CAN toolboard uses about 20Kbits/s of bandwidth, therefore faster versions of CAN should not be needed no matter how many MCU’s are using the same CAN-Bus.
* It is recommended to first read this information before setting up CAN on your printer.
* If you are experiencing problems with CAN, then it is recommended to read this troubleshooting information.
USB
USB functions just as any other USB device from the device to the Raspberry Pi (USB 2.0 or USB 3.0 speeds available depending on how the Pi is equipped). BUT, from the Raspberry Pi to Klipper, the MCU baud rate is set to 250Kbits/s as a default of Klipper. If you want to increase the baud rate of a USB MCU, then you only need to change the baud rate in the printer. cfg file.
If you have a use case that uses five tool changers which use USB toolboards (Orbiter), then you will need to use any high quality USB hub. This USB hub should work very well with a Raspberry Pi 3 or 4. If you add too many devices to the USB hub (like a camera and five Orbiter toolboards), then you will likely want to use a Raspberry Pi 4 since the Raspberry Pi has two USB chips that separate USB load between USB 2.0 and USB 3.0. Note: Raspberry Pi 3 only has one USB chip to support the four USB 2.0 ports on the Pi.
Key differences between CAN and USB with regard to baud rate
* You should never need to increase the baud rate of a USB toolboard. USB is more than fast enough communicate between the USB toolboard thru the USB hub then to the Raspberry Pi and back. Adjusting the baud rate of a USB device only changes the speed between the Pi and Klipper. If the baud rate needs to be increased, then the config settings from the toolboard manufacturer should state the recommended baud rate.
* All CAN MCU’s on a single CAN-Bus must be configured to the same baud rate. This baud rate configuration is performed when making the Klipper firmware for that MCU as well as the MCU definition within the printer.cfg file should also match the baud rate of the firmware.
* In most cases, the default baud rate for CAN (250Kbits/s) should be sufficient for multiple toolboard MCU’s on a single CAN-Bus. If the default baud rate is not sufficient, Klipper will alert you with plenty of errors. Changing the baud rate of a CAN network is undesirable since each MCU on the CAN-Bus will need the firmware remade and reinstalled. Therefore, most people will setup their CAN MCU’s at the maximum baud rate of 1Mbits/s if they will have multiple MCU’s on a single CAN-Bus.