Skip to main content

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.
Power Off Operation

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.

Add Multiple Toolboards One at a Time

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 MethodConfiguration ItemExample
USB Firmwareserial:serial: /dev/serial/by-id/usb-Klipper_xxxxxxxxxxxx
CAN Firmwarecanbus_uuid:canbus_uuid: xxxxxxxxxxxx
RS232 Deviceserial:serial: /dev/serial/by-path/xxxxxxxxxxxx
Host MCUserial:serial: /tmp/klipper_host_mcu

Filling Rules:

  1. The mainboard uses [mcu] by default, while tool boards or expansion boards use custom names such as [mcu tool] or [mcu toolboard].
  2. For USB firmware, only fill in serial:; for CAN firmware, only fill in canbus_uuid:; do not include both items in the same [mcu] section.
  3. In multi-MCU machines, each [mcu xxx] must use its own real ID; do not copy the same USB ID or CAN UUID.
  4. The name of [mcu xxx] affects the pin prefix. For example, pins for [mcu tool] should be written as tool:gpio13; the case of the name must remain consistent.
  5. The xxxxxxxx in the documentation examples cannot be used directly and must be replaced with the actual ID found.
  6. For RS232 devices, in addition to serial:, baud: 250000 and restart_method: command are usually also required; refer to the corresponding product documentation.

Common Mistakes:

  • Using a flashing mode ID (such as an ID containing katapult or canboot) as the Klipper firmware ID.
  • Configuring canbus_uuid: for USB firmware, or retaining the old serial: for CAN firmware.
  • For RS232 devices, only filling in the path and omitting the required baud: or restart_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 as tool: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:

[mcu toolboard]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_54321-if00
Naming Rules
  • 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], write toolboard: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:

  1. Open the Fluidd interface and click System in the left menu.
  2. Under Mcu Information, confirm that the main MCU and all toolboards are correctly recognized and shown as connected.
Loading...

Check Firmware Versions

After all MCU connections are complete, verify firmware version compatibility:

  1. Open the Fluidd interface and click System in the left menu.
  2. Under Mcu Information, find the Version field.
  3. Confirm that the firmware versions of all MCUs match the host Klipper version.
Version Compatibility Notes
  • 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.

Core Principle

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.
Example Pins Cannot Be Copied Directly

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
Pin Naming Rules
  • 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

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>
Notes
  • 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 referencing toolboard:PA0 will 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

IssueTroubleshooting Direction
Toolboard offlineAfter 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 conflictsThe name and ID of each [mcu] must be unique; refer to MCU ID Configuration
Pin prefix mismatchThe pin prefix for [mcu toolboard] should be toolboard:, and the name casing must be consistent
Firmware version incompatibilityRecompile the firmware to match the host Klipper version
CAN UUID not foundRefer to CAN Network and ID Search
RS232 communication failureCheck whether baud: 250000 and restart_method: command are configured
Loading...