Disclaimer: This is an independent resource site. Not affiliated with the Voron project or its development team.

Voron Klipper Expander and Secondary MCU Guide

Electronics Klipper Guide

Modern Voron builds rarely use a single microcontroller. Between CANBus toolhead boards, chamber controllers, RGB LED drivers, and sensor expansion boards, most Vorons run 2-5 MCUs simultaneously. This guide covers the most popular expander and secondary MCU options for Voron printers: EBB CAN toolhead boards, the Pi's built-in GPIO expander, USB-to-CAN adapters, sensor breakouts, and how to configure them all in Klipper. Last updated: May 2025.

Why Secondary MCUs?

There are several compelling reasons to add secondary MCUs to your Voron:

EBB CAN Toolhead Boards

EBB (EBB = ErCan Bridge Board) toolhead boards are the most popular secondary MCU for Voron printers. They mount directly on the toolhead and handle all local I/O.

EBB36 (CAN v1.1)

EBB42 (CAN v1.1)

SB2040 (Stealthburner CAN board)

USB-to-CAN Adapters

To connect your CAN toolhead board to the Raspberry Pi (or other SBC), you need a USB-to-CAN adapter. These boards translate USB to CAN bus protocol.

BTT U2C (v1.0 / v2.0)

Fysetc UCAN

CANBus Wiring

Proper CANBus wiring is critical for reliable communication. Here are the essential rules:

Wiring Basics

Termination Resistors

CANBus requires a 120 ohm termination resistor at each end of the bus. In a typical Voron setup:

Without proper termination, you'll get intermittent communication errors, retransmissions, and print failures. Check with a multimeter between CAN_H and CAN_L at the bus ends — you should read approximately 60 ohms (two 120 ohm resistors in parallel).

Klipper Config for Multiple MCUs

Klipper natively supports multiple MCUs. Each MCU gets its own section in printer.cfg:

Main MCU (controller board)

[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_12345-if00
restart_method: command

Secondary CAN MCU (toolhead board)

[mcu canbus_uuid]
canbus_uuid: 123abc456def
canbus_interface: can0

To find your toolhead board's UUID, use:

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

This returns a list of all CAN devices on the bus. The UUID is a hexadecimal string like 123abc456def.

Flashing CANBoot / Katapult on Secondary MCU

Katapult (formerly CANBoot) is a bootloader that enables firmware updates over CANBus — no USB cable needed once installed. Here's how to set it up:

Step 1: Build Katapult

cd ~/Katapult
make menuconfig
make clean
make

Step 2: Flash Katapult via USB/ST-Link

make flash FLASH_DEVICE=/dev/serial/by-id/usb-Katapult_...

Step 3: Flash Klipper over CAN

python3 ~/klipper/scripts/flash_can.py -i can0 -f ~/klipper/out/klipper.bin -u 123abc456def

Once Katapult is installed, all future firmware updates can be done over CAN without touching the hardware.

Sensor Boards

MAX31865 for PT100

The MAX31865 is a PT100/PT1000 RTD-to-digital converter. It reads a resistance temperature detector (PT100) and communicates over SPI. Use it when your hotend has a PT100 thermocouple that the mainboard can't read directly. Wire it to spare pins on your secondary MCU and add this to Klipper:

[thermistor pt100]
sensor_type: MAX31865
sensor_pin: mcu:spi_cs0
spi_speed: 4000000

BME280 for Chamber Temp/Humidity

The BME280 is a temperature, humidity, and barometric pressure sensor. It connects over I2C. Mount it inside your Voron enclosure to monitor chamber conditions. Klipper config:

[temperature_sensor chamber]
sensor_type: BME280
i2c_address: 118
i2c_mcu: mcu

The BME280 appears in Mainsail/Fluidd as a chamber temperature reading alongside your other temperatures.

Daisy-Chaining EBB Boards

You can connect multiple CAN boards on the same bus. Each board has a unique UUID and Klipper communicates with each independently. A typical chain:

[Pi USB] → [U2C CAN adapter] → [EBB36 toolhead] → [EBB42 chamber controller]

Each board needs its own [mcu canbus_uuid] section in printer.cfg with its unique UUID. The termination resistor should only be enabled on the first and last devices on the bus.

Troubleshooting CAN Communication

SymptomLikely CauseFix
"No CAN devices found" CAN interface not up, or no termination Run ip link set can0 up type can bitrate 500000. Check termination resistors with multimeter.
Intermittent disconnects Bad wiring, loose connector, or missing termination Verify CAN_H/CAN_L are twisted pair. Check all crimps. Measure 60 ohms between CAN_H and CAN_L.
"MCU 'canbus_uuid' shutdown" Power issue or communication timeout Check 24V supply to toolhead. Add a capacitor near the EBB board if voltage dips during acceleration.
USB-CAN adapter not detected Missing udev rules or kernel module Run sudo modprobe gs_usb. Verify with lsusb and dmesg | grep can.
High bus error rate CAN bus speed mismatch or noise Verify all devices use 500kbps. Shorten cable runs. Use shielded twisted pair.

CANBus may seem intimidating at first, but once it's working, it's rock-solid. The reduced wiring complexity is transformative for Voron builds — especially on toolheads where every gram of wire drag matters for print quality at high speeds.

🚨

Voron LDO 商标 · 域名 打包出售

Trademark & domains sold as one package

Voron LDO 商标 (中国区 · China)
voron.cn
voronldo.com
ldovoron.com

有意者请联系 · Contact us:

📧 346290742@qq.com
📞 +86 13522926174