MCU 连接指南
本指南用于排查和解决 MCU 无法与 Klipper 正常连接的问题。
准备工作与注意事项
- 不推荐的上位机设备:避免使用红米手机、WiFi 棒子、机顶盒等设备。它们通常采用定制或修改过的系统,可能导致无法正确识别 MCU。
- 确认下位机数量:请提前确认您使用的下位机(如工具板)数量,多个下位机可能影响连接。
- 简化接线:建议暂时移除主板和工具板上除数据线外的所有接线,仅保留必要的数据连接以排除干扰。
- 推荐操作界面:推荐使用 Fluidd 界面,它能更直观地显示 MCU 连接状态。
第一步:备份并重置配置
1. 访问上位机界面
在浏览器中输入上位机的 IP 地址(例如:192.168.101.179)进行访问。
2. 定位配置文件
进入 WEB 界面,在左侧边栏中找到配置选项:
Fluidd 用户:点击 Loading... | Mainsail 用户:点击 Loading... |
3. 备份配置文件
右键点击 printer.cfg 文件,选择 Duplicate 进行复制,并将副本重命名为:
printer_Backup.cfg
Fluidd 操作示例: Loading... | Mainsail 操作示例: Loading... |
4. 重置配置文件
重新打开 printer.cfg,清空所有内容,并粘贴以下基础配置:
[mcu]
serial: /tmp/klipper_host_mcu
[printer]
kinematics: none
max_velocity: 200
max_accel: 1000
5. 保存并重启
- 点击右上角的 SAVE & RESTART,Klipper 将保存配置并重启服务。
- 如出现报错,请暂时忽略。
- 随后,请将所有设备(包括上位机和所有下位机)完全断电。
- 重要:必须确保彻底断电,否则无法进行后续步骤。
第二步:检测设备并确认固件类型
前提条件
- 主设备顺序:第一个
MCU必须是主板,不能是工具板。 - 固件类型:确认您的 FLY 主板固件为 USB 固件 或 USB 桥接 CAN 固件,本指南不适用于其他类型。
- 连接方式:请先 连接 SSH,此操作需通过网络进行。
操作步骤
-
执行设备检测
- 成功连接 SSH 后,执行以下命令:
lsusb
- 系统将列出所有已识别的 USB 设备。
- 成功连接 SSH 后,执行以下命令:
-
处理命令异常
- 若提示
lsusb命令不存在,请先安装:sudo apt-get install usbutils - 若执行后无任何设备显示,建议更换上位机。
- 若提示
-
识别设备信息 根据下方图示,在
lsusb的输出结果中识别您的设备:Loading...Loading... -
验证固件类型
- 请根据您刷入的固件,在
lsusb结果中核对以下关键信息:- USB 固件:应显示
1d50:614e - USB 桥接 CAN 固件:应显示
1d50:606f - USB Katapult 固件:应显示
1d50:6177 - RS232 适配器 (搭配 UTOR 或者使用 D8 与 D8PRO 主板):应显示
1a86:7523(搭配 G2T 则无需此步骤)
- USB 固件:应显示
- 请根据您刷入的固件,在
第三步:搜索设备 ID
重要说明
- USB ID 搜索:仅适用于 USB 固件,无法用于 CAN 或 RS232。
- CAN ID 搜索:仅适用于 CAN 总线设备,无法用于 USB 或 RS232。
- RS232 ID 搜索:仅适用于 RS232 固件,无法用于 USB 或 CAN。
- RS232 专用性:RS232 固件通常仅用于工具板,不适用于主 MCU。
根据固件类型选择方法
USB 固件设备 执行以下命令搜索 USB 设备 ID:
ls /dev/serial/by-id/*
USB 桥接 CAN 设备 根据您的系统类型,选择对应的命令搜索 CAN ID:
- 普通上位机
- Fly_FAST 系统
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
python ~/klipper/scripts/canbus_query.py can0
RS232 固件设备 执行以下命令搜索 RS232 设备路径:
ls /dev/serial/by-path/*
结果解读与处理
USB ID 搜索结果
执行命令后,终端将显示类似下方的设备 ID(此为示例):
-
✅ 可直接使用:如果 ID 在
usb-字段后标注为Klipper -
⚠️ 需刷写固件:如果 ID 在
usb-字段后标注为katapultLoading...
CAN ID 搜索结果
执行命令后,请根据实际情况判断:
- ✅ 可直接使用:如果显示的 ID 在末尾
Application:字段中标注为Klipper。 - ⚠️ 需刷写固件:如果显示的 ID 在末尾
Application:字段中标注为CANBOOT或Katapult。 - ❌ 未找到设备:如果显示
Total 0 uuids found,可能原因包括:- CAN 网络配置错误
- CAN 速率不匹配(请确保上位机、主板、工具板速率一致)
- 该 ID 已被占用(需在配置中屏蔽,然后关机、断电并重启)
RS232 ID 搜索结果
执行命令后,终端将显示 RS232 设备路径(此为示例):
/dev/serial/by-path/platform-3f980000.usb-usb-0:1.2:1.0-port0
RS232 设备在配置时必须指定波特率和重启方法:
[mcu toolboard]
serial: <这里替换为查询到的RS232设备路径>
baud: 250000
restart_method: command
第四步:配置主 MCU 的 ID
在开始配置前,请确保工具板与上位机或主板的连接已断开,以避免设备识别冲突。
重新打开 printer.cfg 文件,找到 [mcu] 部分中的 serial: /tmp/klipper_host_mcu 配置行。
根据您的连接方式,参照下方对应的方法进行配置:
- USB 连接配置
- CAN 连接配置
将 serial: 后面的 /tmp/klipper_host_mcu 替换为搜索到的 USB ID。
配置示例:
# 搜索到的 USB ID 为:
# /dev/serial/by-id/usb-Klipper_stm32h723xx_12345-if00
# 修改配置为:
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32h723xx_12345-if00
将 serial: /tmp/klipper_host_mcu 配置项替换为 canbus_uuid:,并填入搜索到的 CAN ID。
配置示例:
# 搜索到的 CAN ID 为:
# 688e89f0e401
# 修改配置为:
[mcu]
canbus_uuid: 688e89f0e401
保存配置并重启 Klipper 服务。
第五步:验证主 MCU 连接
完成主 MCU 配置后,需要验证连接是否成功:
- 打开 Fluidd 界面,点击左侧菜单中的
System - 查看 MCU 信息:在
Mcu Information下方找到Micro-Controller信息 - 核对主控型号:确认显示的型号与您的主板实际主控型号一致
- 如果您的主控是 STM32H723,那么
Micro-Controller必须显示为 H723 相关型号 - 如果显示不正确或无法识别,请检查前面的配置步骤
第六步:添加工具板 MCU
主 MCU 验证成功后,即可添加工具板:
- 重新连接工具板:将工具板的数据线重新连接到上位机或主板上
- 编辑配置文件:在
printer.cfg文件的最下方添加工具板配置 - 配置工具板 ID:根据工具板的固件类型,在新增的配置段中添加对应的 ID
配置中的 mcu1、mcu2 等名称仅用于临时区分不同设备,您可以完全自定义这些名称,只需确保在配置文件中保持唯一性即可。
配置格式:
[mcu mcu1]
# 在此处添加工具板的 ID 配置
配置示例:
- USB 工具板
- CAN 工具板
- RS232 工具板
[mcu mcu1]
serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_54321-if00
[mcu mcu1]
canbus_uuid: 688e89f0e402
[mcu mcu1]
serial: /dev/serial/by-path/platform-3f980000.usb-usb-0:1.2:1.0-port0
baud: 250000
restart_method: command
注意事项:
- 每个 MCU 必须使用唯一的 ID,请确保工具板 ID 与主 MCU 及其他设备均不相同
- MCU 名称可完全自定义(例如
toolboard、extruder_mcu等),只需在配置中保持唯一性 - 请务必使用通过前述步骤验证有效的工具板 ID
- RS232 设备必须配置
baud: 250000和restart_method: command参数 - 配置多个工具板时,请为每个设备设置不同的名称以便区分
多工具板跨板引脚配置
当使用多个工具板时,可能会遇到引脚跨板分配的需求。例如:加热功能使用第一个工具板的加热口,但温度传感器连接到主板或第二个工具板。
在 Klipper 多 MCU 配置中,任何配置段的引脚都可以直接通过 <mcu名称>:<引脚号> 格式引用任意已定义 MCU 上的引脚,无需额外配置。Klipper 会自动通过通信总线(CAN/USB/串口)将指令路由到对应的 MCU。
典型场景:加热在工具板,温度传感器在主板
假设系统配置如下:
- 主 MCU:运行上位机 Klipper 主机固件,温度传感器接在主板上
- toolboard1:工具板,加热棒和挤出机步进接在工具板上
步骤一:定义所有 MCU
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32h723xx_12345-if00
[mcu toolboard1]
canbus_uuid: e51d5c71a901
步骤二:在配置中直接跨板引用引脚
[extruder]
# 步进和加热使用工具板引脚
step_pin: toolboard1:gpio9
dir_pin: toolboard1:gpio10
enable_pin: !toolboard1:gpio7
heater_pin: toolboard1:gpio6 # 加热棒在 toolboard1
# 温度传感器使用主板引脚(直接写 gpio 或 mcu:gpio)
sensor_type: ATC Semitec 104GT-2
sensor_pin: PA0 # 温度传感器接在主板上
# 其余参数
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
- 工具板引脚:格式为
<mcu名称>:<引脚号>,例如toolboard1:gpio6 - 主 MCU 引脚:可以直接写引脚名(如
PA0) - 同一个配置段中的引脚可以来自不同的 MCU,Klipper 会自动处理跨板通信
更多跨板配置示例
- 温度传感器在第二工具板
- 多挤出机分属不同工具板
- 风扇跨板控制
加热棒在第一工具板,温度传感器在第二工具板:
[extruder]
step_pin: toolboard1:gpio9
heater_pin: toolboard1:gpio6 # 加热在第一工具板
sensor_type: ATC Semitec 104GT-2
sensor_pin: toolboard2:gpio26 # 温度传感器在第二工具板
# ... 其余挤出机参数
两个挤出机分别连接在不同工具板上:
[extruder]
step_pin: toolboard1:gpio9
heater_pin: toolboard1:gpio6
sensor_pin: toolboard1:gpio27
# ... 第一挤出机参数
[extruder1]
step_pin: toolboard2:gpio9
heater_pin: toolboard2:gpio6
sensor_pin: toolboard2:gpio27
# ... 第二挤出机参数
挤出机在工具板,模型风扇接在主板上:
[fan]
pin: PB5 # 模型风扇接在主板
# 主 MCU 引脚直接写引脚名即可
[heater_fan 喉管散热]
pin: toolboard1:gpio14 # 喉管风扇接在工具板
heater: extruder
heater_temp: 50
fan_speed: 1.0
- 跨板引用引脚时,请确保对应 MCU 已在配置文件中通过
[mcu <名称>]正确定义 - 建议将功能关联紧密的设备(如加热棒和温度传感器)尽量接在同一个工具板上,以获得最佳的响应速度和可靠性
完成配置后,保存并重启 Klipper 服务。
第七步:验证所有 MCU 连接
添加工具板并重启 Klipper 后,需要重新验证所有 MCU 的连接状态:
- 打开 Fluidd 界面,点击左侧菜单中的
System - 查看 MCU 信息:在
Mcu Information下方确认所有 MCU 都已正确识别 - 核对每个 MCU 状态:确保主 MCU 和工具板都显示为连接状态
- 主 MCU 和所有工具板都应该在列表中显示
- 每个 MCU 的连接状态应该为"已连接"
- 如果某个 MCU 未显示或连接失败,请检查其配置和物理连接
第八步:检查固件版本
完成所有 MCU 连接后,需要验证固件版本兼容性:
- 打开 Fluidd 界面,点击左侧菜单中的
System - 查看版本信息:在
Mcu Information下方找到Version字段 - 核对版本一致性:确认所有 MCU 的固件版本与上位机 Klipper 版本匹配
- 自定义编译固件:除预配置的定制设备外,所有自行编译的固件必须与上位机 Klipper 版本保持一致
- Fly-FAST 系统:FAST 系统的固件版本与系统版本保持一致,编译出来的 Klipper 固件与系统版本一致
- 版本不匹配的后果:不同版本的固件可能导致功能异常、通信失败或系统不稳定
验证要点:
- 主 MCU 和所有工具板的
Version信息都应显示且版本一致 - 如果版本不匹配,需要重新刷写相应固件
第九步:恢复并更新配置文件
确认所有 MCU 连接正常后,需要恢复原始配置文件并更新 MCU 配置:
-
删除当前配置文件
- 在配置文件管理界面,找到并删除当前的
printer.cfg文件
- 在配置文件管理界面,找到并删除当前的
-
恢复备份配置
- 将之前备份的
printer_Backup.cfg文件重命名为printer.cfg
- 将之前备份的
-
更新 MCU 配置
- 打开恢复后的
printer.cfg文件 - 找到原有的
[mcu]配置段,根据前面步骤获取的 ID 进行更新:
USB 连接配置:
[mcu]serial: /dev/serial/by-id/usb-Klipper_stm32h723xx_12345-if00# 替换为实际搜索到的主 MCU USB IDCAN 连接配置:
[mcu]canbus_uuid: 688e89f0e401# 替换为实际搜索到的主 MCU CAN UUID - 打开恢复后的
-
更新工具板配置(如适用)
- 在配置文件中找到工具板对应的
[mcu]段 - 根据连接方式更新为实际搜索到的工具板 ID:
USB 工具板:
[mcu toolboard]serial: /dev/serial/by-id/usb-Klipper_stm32f446xx_54321-if00CAN 工具板:
[mcu toolboard]canbus_uuid: 688e89f0e402RS232 工具板:
[mcu toolboard]serial: /dev/serial/by-path/platform-3f980000.usb-usb-0:1.2:1.0-port0baud: 250000restart_method: command - 在配置文件中找到工具板对应的
-
保存并重启
- 完成所有 MCU 配置更新后,点击 SAVE & RESTART 保存并重启 Klipper
- 重新进入
System页面,确认所有 MCU 连接状态正常
- 确保使用本次连接测试中实际搜索到的正确 ID
- 如果配置多个工具板,请逐一更新每个
[mcu]段的 ID - RS232 工具板必须包含
baud: 250000和restart_method: command参数 - 恢复配置后,原有的打印机参数(如步进电机、限位开关等设置)将保持不变
至此,MCU 连接故障排查与配置恢复全部完成。