CAN 固件编译
烧录前须知
确认当前模式与操作路径
- 重要说明:如果工具板当前已是 Klipper-CAN 模式,则可在编译固件后,直接通过指令烧录。指令将自动将其重置进入
Katapult并完成烧录。 - 出厂状态:板子预刷 CAN模式的
Katapult固件,速率为 1M。 - 状态判断(看LED):若板载 LED 闪烁(如下图),表明正处于
Katapult模式,可进行烧录。Loading... - 模式异常:若 LED 不闪烁,说明固件非
Katapult。您必须先按下方链接指引重刷: 点此烧录 Katapult 固件
设置拨码与物理连接
-
拨码设置:无论当前状态如何,请先将板载拨码开关设置为 CAN 模式,并且将
120Ω开关打开(如下图所示)。Loading... -
设备连接:使用CAN线,将工具板连接到 UTOC 或已刷好桥接固件的 主板 上。接线请参考下图:
Loading... -
关键检查(终端电阻):在 完全断电 情况下,使用万用表测量 CAN_H 与 CAN_L 引脚间的电阻。
设备 操作说明 工具板 找到并插上标有 120Ω的跳线帽。主板 如连接主板,请同样插上其 120Ω跳线帽。UTOC模块 自带电阻。 如何检查:
- 保持完全断电。
- 使用万用表测量工具板CAN口的 CAN-H与CAN-L 之间的电阻。
- 结果判断:
- 约60Ω:正常,两端电阻已正确连接。
- 约140Ω:可能CAN-H与CAN-L接反了。
- 约120Ω:没有安装
120Ω或者断线。 - 约40Ω:可能有多余的电阻,请检查中间节点。
开始编译
固件编译简明指南
注意事项
- 网络: 确保上位机(树莓派等)已联网
- 登录方式: 必须使用 SSH 通过网络登录,禁用串口
- 输入法: 保持键盘为英文半角模式
SSH登录与用户切换
使用 MobaXterm、PuTTY 等工具 SSH 登录上位机。
切换用户:
- 普通系统(树莓派官方系统等)
禁止使用root,需切换到普通用户:su <用户名> - FLY上位机(FlyOS-FAST系统)
仅支持root用户登录(密码:mellow)
固件编译操作指南
在 Klipper 固件配置界面中仅支持键盘操作,无法使用鼠标。
| 按键 | 功能 |
|---|---|
| ↑ / ↓ | 上下移动光标,选择菜单项 |
| Enter / 空格 | 确认选择、勾选选项或进入子菜单 |
| ESC | 返回上一级菜单 |
| Q | 退出配置界面 |
| Y | 退出时,如有提示则按 Y 保存配置 |
开始固件编译
下面介绍如何编译固件:
-
连接到 SSH,输入下面的命令并按
Enter:cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig其中,
rm -rf ~/klipper/.config && rm -rf ~/klipper/out用于清除之前的编译配置与固件;make menuconfig用于打开 Klipper 固件配置界面。 -
按照下方顺序逐项设置,每完成一项再继续下一项。
1启用 Enable extra low-level configuration options(Top)Klipper Firmware Configuration2Micro-controller Architecture 选择 Raspberry Pi RP2040/RP235x(Top)Klipper Firmware Configuration3Processor model 选择 rp2040(Top)Klipper Firmware Configuration4Bootloader offset 选择 16KiB bootloader(Top)Klipper Firmware Configuration5Communication Interface 选择 CAN bus(Top)Klipper Firmware Configuration6CAN RX gpio number 设置为 1(Top)Klipper Firmware Configuration7CAN TX gpio number 设置为 0(Top)Klipper Firmware Configuration8CAN bus speed 设置为 1000000(Top)Klipper Firmware Configuration9启用 Optimize stepper code for 'step on both edges'(Top)Klipper Firmware Configuration10GPIO pins to set at micro-controller startup 设置为 !gpio5(Top)Klipper Firmware Configuration11GPIO state at micro-controller startup 选择 Not set此项是 FLYOS-Klipper 功能。通常保持
Not set;如需设置全部 GPIO 的启动状态,请先阅读 GPIO 启动状态使用说明。(Top)Klipper Firmware Configuration12按 Q 键退出配置界面(Top)Klipper Firmware Configuration13出现 Save configuration 时按 Y 保存配置QuitSave configuration?(Y)es(N)o(C)ancel -
完成上方最后两个步骤,按
Q退出配置界面,再按Y保存配置。 -
返回命令行后输入下面的命令并按
Enter开始编译:make -j4root@flyos-11e5f8 ~/klipper # make -j4Compiling out/src/../lib/can2040/can2040.oCompiling out/src/generic/canserial.oCompiling out/src/generic/canbus.oCompiling out/src/../lib/fast-hash/fasthash.oCompiling out/src/rp2040/hard_pwm.oCompiling out/src/rp2040/spi.oCompiling out/src/rp2040/i2c.oPreprocessing out/src/rp2040/rpxxxx_link.ldBuilding out/compile_time_request.oVersion: XXXXLinking out/klipper.elfCreating bin file out/klipper.bin终端末尾出现
Linking out/klipper.elf和Creating bin file out/klipper.bin,即表示编译成功。 实际编译时,部分 Compiling 行和 Version 会随 Klipper 与系统版本变化。
搜索ID并烧录
查询CANBus UUID
- 建议在非打印状态下执行ID查询和固件刷写操作,避免干扰打印过程。
- 同一主板/工具板的Katapult(CANBoot)固件与Klipper固件使用相同的CAN ID。
请确保满足以下条件,否则可能无法正常搜索到CAN ID:
- 上位机CAN网络已正确配置
- 工具板CAN速率与上位机完全一致(速率不一致将无法通信)
- 执行
lsusb命令后能看到1d50:606f设备(USB-CAN适配器)
搜索命令(根据系统选择)
- 普通上位机搜索指令
~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
- FLY上位机搜索指令
python3 ~/klipper/scripts/canbus_query.py can0
搜索结果说明
情况一:已刷Klipper固件的主板/工具板
- 显示效果:显示一个CAN ID,并提示
Application: Klipper - 说明:设备已运行Klipper固件,可以直接使用。此ID可能是主板ID也有可能是工具板ID.
- 区分方法:断开工具板的CAN连接线后重新搜索。如果该ID消失,则属于工具板;如果该ID仍在,则属于主板。
情况二:主板 + 待烧录工具板
- 显示效果:显示两个CAN ID
- 说明:主板运行Klipper固件,工具板运行CanBoot固件,等待烧录。
情况三:UTOC + 待烧录工具板
- 显示效果:UTOC本身不显示ID,只显示工具板的ID
- 说明:UTOC仅作为桥接器,需确保工具板处于CanBoot模式。
情况四:无ID显示
- 显示效果:无任何ID显示
- 可能原因:
- CAN总线被Klipper占用
- 上位机CAN0速率配置错误
- 物理接线异常
- 设备未进入CanBoot模式
- 待烧录状态:工具板处于CanBoot模式时会显示
Application: CanBoot且固件灯闪烁,此时可进行固件烧录。 - ID占用处理:如果设备已运行Klipper固件且ID已填入配置文件,ID将不会显示(被Klipper占用)。如需重新显示,需在配置中屏蔽该ID并彻底断电重启。
如果无法查询到UUID,请参考: CAN问题排查指南
固件烧录
烧录命令
- 将下方命令中的
241696050c56替换为您实际查询到的UUID - 注意:
-u参数后需有空格
-
FlyOS-FAST 1.3.8 及以上版本 或 2026年4月9日后更新过Klipper的系统,请使用新指令:
python3 ~/klipper/lib/katapult/flashtool.py -u 241696050c56 -
旧版本系统(FAST 1.3.8之前 或 2026年4月9日前未更新Klipper),请使用旧指令:
python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56
烧录成功确认
出现 CAN Flash Success 提示即表示烧录成功:
固件更新
更新方法
当需要更新固件时,只需:
- 重新编译固件
- 确保能查询到设备CAN ID(或Klipper已连接设备)
- 执行相同的烧录命令
-
FlyOS-FAST 1.3.8 及以上版本 或 2026年4月9日后更新过Klipper的系统:
python3 ~/klipper/lib/katapult/flashtool.py -u <MCU ID> -
旧版本系统(FAST 1.3.8之前 或 2026年4月9日前未更新Klipper):
python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>
更新成功示例
确认固件是否启动
- 如果固件正常启动LED会亮起来
Loading...