Toolboard MCU Addition and Cross-Board Configuration
This page is used to add toolboards, verify multi-MCU status, and configure cross-board pins after the main MCU has been successfully connected. If you have not yet completed the main MCU connection verification, please first complete the MCU Connection Guide.
Step 1: Prepare and Connect the Toolboard
Before adding a toolboard, ensure:
- The main MCU has been connected and verified following the MCU Connection Guide.
- The toolboard firmware has been flashed.
- You have confirmed which communication method the toolboard uses: CAN, USB, or RS232.
Before starting, completely turn off the printer and disconnect the power supply. Do not plug or unplug cables, rearrange interface wiring, or touch terminals while the system is powered on.
After fully powering off, connect the toolboard data cable to the host machine or the corresponding interface on the mainboard. Do not disassemble the power supply, modify mains wiring, or touch exposed terminals. Reconnect power only after confirming the connection is secure.
When connecting multiple toolboards of the same type simultaneously, it is difficult to distinguish their IDs. It is recommended to connect and record only one toolboard at a time; you must completely power off before adding or removing any toolboard.
Step 2: Query and Record the Toolboard ID
Toolboards and mainboards use the same MCU ID filling rules:
MCU ID Configuration Description
In Klipper, the MCU ID refers to the identification information used to connect to the control board within the [mcu] or [mcu xxx] configuration sections. Different communication methods require different syntax:
| Connection Method | Configuration Item | Example |
|---|---|---|
| USB Firmware | serial: | serial: /dev/serial/by-id/usb-Klipper_xxxxxxxxxxxx |
| CAN Firmware | canbus_uuid: | canbus_uuid: xxxxxxxxxxxx |
| RS232 Device | serial: | serial: /dev/serial/by-path/xxxxxxxxxxxx |
| Host MCU | serial: | serial: /tmp/klipper_host_mcu |
Filling Rules:
- The mainboard uses
[mcu]by default, while tool boards or expansion boards use custom names such as[mcu tool]or[mcu toolboard]. - For USB firmware, only fill in
serial:; for CAN firmware, only fill incanbus_uuid:; do not include both items in the same[mcu]section. - In multi-MCU machines, each
[mcu xxx]must use its own real ID; do not copy the same USB ID or CAN UUID. - The name of
[mcu xxx]affects the pin prefix. For example, pins for[mcu tool]should be written astool:gpio13; the case of the name must remain consistent. - The
xxxxxxxxin the documentation examples cannot be used directly and must be replaced with the actual ID found. - For RS232 devices, in addition to
serial:,baud: 250000andrestart_method: commandare usually also required; refer to the corresponding product documentation.
Common Mistakes:
- Using a flashing mode ID (such as an ID containing
katapultorcanboot) as the Klipper firmware ID. - Configuring
canbus_uuid:for USB firmware, or retaining the oldserial:for CAN firmware. - For RS232 devices, only filling in the path and omitting the required
baud:orrestart_method:. - Configuring the tool board as
[mcu], thereby overriding the mainboard MCU configuration. - The pin prefix does not match the MCU name, for example, the configuration is
[mcu toolboard]but the pin is written astool:gpio13.
USB ID Query: For USB firmware, execute
ls /dev/serial/by-id/*to obtain the ID.
CAN ID Query: CAN Network and ID Search
RS232 Path Query: Execute
ls -l /dev/serial/by-path/to obtain a stable device path.
Tool Board Configuration: Tool Board MCU Addition and Cross-Board Configuration
USB, CAN, RS232 query commands and result descriptions: MCU ID Configuration
When recording the ID, also assign a unique, short MCU name, such as toolboard, toolboard1, or toolboard2, and confirm:
- The USB ID contains
usb-Klipper_...and is not a Katapult/Bootloader flashing mode ID. - The CAN query result shows
Application: Klipper. - RS232 uses a stable path under
/dev/serial/by-path/, and fill in the baud rate and restart method as required by the product. - The toolboard ID does not duplicate that of the mainboard or other toolboards.
Step 3: Add the Toolboard MCU
After obtaining the toolboard ID, back up your complete current printer.cfg first, then add the corresponding MCU configuration section:
- USB Toolboard
- CAN Toolboard
- RS232 Toolboard
[mcu toolboard]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_54321-if00
[mcu toolboard]
canbus_uuid: 688e89f0e402
[mcu toolboard]
serial: /dev/serial/by-path/platform-3f980000.usb-usb-0:1.2:1.0-port0
baud: 250000
restart_method: command
- MCU names are fully customizable, e.g.,
toolboard,tool,extruder_mcu, etc., as long as they remain unique in the configuration. - MCU names will be used as the prefix for cross-board pins, e.g., when referencing
[mcu toolboard], writetoolboard:PA0. Keep the case consistent. - Each MCU's name and ID must be unique and must not duplicate the main MCU or other toolboards.
- When configuring multiple toolboards, assign a different name to each device for easy identification.
After configuration, click SAVE & RESTART to save and restart Klipper.
Step 4: Verify All MCU Connections
After adding the toolboard and restarting Klipper, you need to confirm that all MCUs are online:
- Open the Fluidd interface and click
Systemin the left menu. - Under
Mcu Information, confirm that the main MCU and all toolboards are correctly recognized and shown as connected.
Check Firmware Versions
After all MCU connections are complete, verify firmware version compatibility:
- Open the Fluidd interface and click
Systemin the left menu. - Under
Mcu Information, find theVersionfield. - Confirm that the firmware versions of all MCUs match the host Klipper version.
- Except for pre-configured custom devices, all self-compiled firmware must match the host Klipper version.
- FAST system firmware versions remain consistent with the system version; the compiled Klipper firmware matches the system version.
- Mismatched firmware versions may cause functional errors, communication failures, or system instability.
Step 5: Configure Cross-Board Pins
When using multiple toolboards, you may encounter the need to assign pins across boards. For example, the heater function uses the heater port on the first toolboard, but the temperature sensor is connected to the mainboard or a second toolboard.
In Klipper multi-MCU configurations, pins in any configuration section can be directly referenced from any defined MCU using the format <mcu name>:<pin number> without additional configuration. Klipper automatically sends commands to the corresponding MCU through the communication bus (CAN/USB/serial).
Typical Scenario: Heater on Toolboard, Temperature Sensor on Mainboard
Assume the system is configured as follows:
- Mainboard MCU: The mainboard connects via USB, and the temperature sensor is connected to the mainboard.
- toolboard1: The toolboard has the heater cartridge and extruder stepper connected.
The <step_pin>, <heater_pin>, <sensor_pin> items below are placeholder positions. They must be replaced with the actual pins according to the corresponding FLY mainboard or toolboard product documentation, and confirm whether the ! inversion logic applies to your actual hardware.
Step 1: Define All MCUs
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32h723xx_12345-if00
[mcu toolboard1]
canbus_uuid: e51d5c71a901
Step 2: Reference Pins Across Boards Directly in the Configuration
[extruder]
# Stepper and heater use toolboard pins
step_pin: toolboard1:<step_pin>
dir_pin: toolboard1:<dir_pin>
enable_pin: !toolboard1:<enable_pin>
heater_pin: toolboard1:<heater_pin>
# Temperature sensor uses a mainboard pin
sensor_type: <sensor_type>
sensor_pin: <sensor_pin>
# rotation_distance, temperature ranges, and other parameters are configured according to the actual hardware
- Toolboard pin format is
<mcu name>:<pin number>, e.g.,toolboard1:<heater_pin>. - Main MCU pins can be written directly with the actual pin name, without a prefix.
- Pins in the same configuration section can come from different MCUs; Klipper handles cross-board communication automatically.
More Cross-Board Configuration Examples
- Temperature Sensor on the Second Toolboard
- Multiple Extruders on Different Toolboards
- Cross-Board Fan Control
Heater on the first toolboard, temperature sensor on the second toolboard:
[extruder]
step_pin: toolboard1:<step_pin>
heater_pin: toolboard1:<heater_pin>
sensor_type: <sensor_type>
sensor_pin: toolboard2:<sensor_pin>
Two extruders each connected to a different toolboard:
[extruder]
step_pin: toolboard1:<step_pin>
heater_pin: toolboard1:<heater_pin>
sensor_pin: toolboard1:<sensor_pin>
[extruder1]
step_pin: toolboard2:<step_pin>
heater_pin: toolboard2:<heater_pin>
sensor_pin: toolboard2:<sensor_pin>
Extruder on the toolboard, model fan connected to the mainboard:
[fan]
pin: <fan_pin>
[heater_fan throat_fan]
pin: toolboard1:<fan_pin>
heater: extruder
heater_temp: 50
fan_speed: 1.0
- When using pins from another board, ensure the corresponding MCU has been properly defined in the configuration file via
[mcu <name>]. - MCU names must be case-consistent;
[mcu ToolBoard]and referencingtoolboard:PA0will cause errors. - It is recommended to connect devices with closely related functionality (such as heaters and temperature sensors) to the same toolboard whenever possible for optimal response speed and reliability.
FAQ
| Issue | Troubleshooting Direction |
|---|---|
| Toolboard offline | After power off, check data cable connections, confirm the ID is correct, and distinguish between the Klipper firmware ID and the flashing mode ID |
| Multiple toolboard name/ID conflicts | The name and ID of each [mcu] must be unique; refer to MCU ID Configuration |
| Pin prefix mismatch | The pin prefix for [mcu toolboard] should be toolboard:, and the name casing must be consistent |
| Firmware version incompatibility | Recompile the firmware to match the host Klipper version |
| CAN UUID not found | Refer to CAN Network and ID Search |
| RS232 communication failure | Check whether baud: 250000 and restart_method: command are configured |