Toolboard MCU Addition and Cross-Board Configuration
This page covers adding a toolboard, verifying multi-MCU status, and configuring cross-board pins after the main MCU has been successfully connected. If you have not yet completed the main MCU connection verification, please first follow the MCU Connection Guide.
Prerequisites
Before starting to add a toolboard, ensure:
- The main MCU has been connected and verified according to the MCU Connection Guide.
- The toolboard firmware has been flashed.
- The toolboard's data cable is connected to the corresponding interface (CAN/USB/RS232) on the host computer or mainboard.
Querying the Toolboard ID
The method to query the toolboard ID depends on its communication interface. For complete rules on filling in the MCU ID, please refer to MCU ID Configuration. The following is a quick operation guide:
USB Toolboard
SSH into the host computer and run the following command to list all USB serial devices:
ls /dev/serial/by-id/*
Example output:
/dev/serial/by-id/usb-Klipper_stm32f446xx_54321-if00
IDs in flash mode usually contain katapult or stm32duino (e.g., usb-katapult_stm32f446xx_...). Ensure you use the ID from Klipper firmware mode, not the flash mode ID.
CAN Toolboard
- SSH Command Line
- FlyOS-FAST / FLY Host
SSH into the host computer and run the following command to search for CAN device UUIDs:
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
Example output:
Found canbus_uuid=688e89f0e402, Application: Klipper
For FAST or FLY hosts, use python3 to perform the search:
python3 ~/klipper/scripts/canbus_query.py can0
CAN0 on FAST systems is preset to 1M baud rate and 1024 buffer, typically requiring no manual configuration.
The Klipper firmware UUID for a CAN toolboard is different from the CANBoot flash UUID. If the Application displays as CANBOOT or Katapult, the device is in flash mode. For detailed troubleshooting, refer to CAN Network and ID Search.
RS232 Toolboard
SSH into the host computer and run the following command to view the USB-to-serial device path:
ls -l /dev/serial/by-path/
Example output:
/dev/serial/by-path/platform-3f980000.usb-usb-0:1.2:1.0-port0
Toolboards communicating via RS232 must have the baud: 250000 and restart_method: command parameters configured; otherwise, communication will fail.
Adding a Toolboard MCU
After obtaining the toolboard ID, add the corresponding MCU configuration section at the end of printer.cfg:
- 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.; they just need to be unique within the configuration. - The MCU name will be used as the prefix for cross-board pins. For example, with
[mcu toolboard], references usetoolboard:PA0. Consistent capitalization is required. - Each MCU's name and ID must be unique and cannot duplicate the main MCU or other toolboards.
- When configuring multiple toolboards, assign a different name to each device for clarity.
After configuration, click SAVE & RESTART to save and restart Klipper.
Verifying All MCU Connections
After adding the toolboard and restarting Klipper, confirm that all MCUs are online:
- Open the Fluidd interface and click
Systemin the left menu. - Under
Mcu Information, verify that the main MCU and all toolboards are correctly recognized and show a connected status.
Checking Firmware Versions
After connecting all MCUs, verify firmware version compatibility:
- Open the Fluidd interface and click
Systemin the left menu. - Under
Mcu Information, find theVersionfield. - Ensure the firmware version of all MCUs matches the Klipper version on the host computer.
- Except for pre-configured custom devices, all self-compiled firmware must be consistent with the Klipper version on the host computer.
- The firmware version for FAST systems matches the system version; compiled Klipper firmware will be consistent with the system version.
- Mismatched firmware versions can cause functional anomalies, communication failures, or system instability.
Updating the Main Configuration File
If you backed up printer_Backup.cfg as instructed in the MCU Connection Guide, this section is for writing the verified MCU IDs back into the full configuration. If you are already using a finalized configuration file, you can skip this section.
After confirming all MCU connections are normal:
- In the configuration file manager, delete the current temporary
printer.cfg. - Rename the previously backed up
printer_Backup.cfgtoprinter.cfg. - Open the restored
printer.cfg, locate the original[mcu]and[mcu <name>]sections, and update them with the verified real IDs. - Click SAVE & RESTART to save and restart Klipper.
- Ensure you use the correct IDs actually found during this connection test.
- RS232 toolboards must include the
baud: 250000andrestart_method: commandparameters. - After restoring the configuration, the original printer parameters (such as stepper motor and endstop settings) will remain unchanged.
Multi-Toolboard Cross-Board Pin Configuration
When using multiple toolboards, you may encounter the need to assign pins across boards. For example, using the heating port on the first toolboard but connecting the temperature sensor to the mainboard or a second toolboard.
In Klipper multi-MCU configurations, pins in any configuration section can reference pins on any defined MCU directly using the <mcu_name>:<pin_number> format, without additional configuration. Klipper will automatically send the instruction to the corresponding MCU via the communication bus (CAN/USB/Serial).
Typical Scenario: Heater on Toolboard, Temperature Sensor on Mainboard
Assume the system is configured as follows:
- Main MCU: Runs the host Klipper firmware, temperature sensor connected to the mainboard.
- toolboard1: Toolboard, heater cartridge and extruder stepper connected to the toolboard.
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 mainboard pin
sensor_type: ATC Semitec 104GT-2
sensor_pin: <sensor_pin>
rotation_distance: 22.44
gear_ratio: 50:17
microsteps: 16
full_steps_per_rotation: 200
nozzle_diameter: 0.400
filament_diameter: 1.75
min_temp: -235
max_temp: 350
max_power: 1.0
min_extrude_temp: 170
control: watermark
- Toolboard pin format is
<mcu_name>:<pin_number>, e.g.,toolboard1:<heater_pin>. - Main MCU pins can be written using the actual pin name directly, without a prefix.
- Pins within the same configuration section can originate from different MCUs; Klipper handles the cross-board communication automatically.
Further Cross-Board Configuration Examples
- Temperature Sensor on Second Toolboard
- Multiple Extruders on Different Toolboards
- Cross-Board Fan Control
Heater on first toolboard, temperature sensor on second toolboard:
[extruder]
step_pin: toolboard1:<step_pin>
heater_pin: toolboard1:<heater_pin>
sensor_type: ATC Semitec 104GT-2
sensor_pin: toolboard2:<sensor_pin>
Two extruders connected to different toolboards:
[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 toolboard, part cooling fan on mainboard:
[fan]
pin: <fan_pin>
[heater_fan throat_fan]
pin: toolboard1:<fan_pin>
heater: extruder
heater_temp: 50
fan_speed: 1.0
- When referencing pins across boards, ensure the corresponding MCU is properly defined in the configuration file via
[mcu <name>]. - MCU name capitalization must be consistent;
[mcu ToolBoard]and referencingtoolboard:PA0will cause an error. - It is recommended to connect functionally related devices (e.g., heater cartridge and temperature sensor) to the same toolboard for optimal response speed and reliability.
Frequently Asked Questions
| Issue | Troubleshooting Direction |
|---|---|
| Toolboard offline | Check the data cable connection, verify the ID is correct, differentiate between Klipper firmware ID and flash mode ID |
| Multi-toolboard name/ID conflict | Each [mcu] name and ID must be unique; refer to MCU ID Configuration |
| Pin prefix mismatch | The pin prefix for [mcu toolboard] should be toolboard:, ensure case consistency |
| Firmware version incompatibility | Recompile the firmware to match the Klipper version on the host computer |
| CAN UUID not found | Refer to CAN Network and ID Search |
| RS232 communication failure | Check that baud: 250000 and restart_method: command are configured |