跳到主要内容

CAN 固件编译

烧录前须知

确认当前模式与操作路径

  • 重要说明:如果工具板当前已是 Klipper-CAN 模式.则可在编译固件后.直接通过指令烧录。指令将自动将其重置进入 Katapult 并完成烧录。
  • 出厂状态:板子预刷 CAN模式Katapult 固件.速率为 1M
  • 状态判断(看LED):若板载 LED 闪烁(如下图).表明正处于 Katapult 模式.可进行烧录。
    Loading...
  • 模式异常:若 LED 不闪烁.说明固件非 Katapult.您必须先按下方链接指引重刷: 点此烧录 Katapult 固件

设置拨码与物理连接

  1. 拨码设置:无论当前状态如何.请先将板载拨码开关设置为 CAN 模式.并且将120Ω开关打开(如下图所示)。

    Loading...
  2. 设备连接:使用CAN线.将工具板连接到 UTOC 或已刷好桥接固件的 主板 上。接线请参考下图:

    Loading...
  3. 关键检查(终端电阻):在 完全断电 情况下.使用万用表测量 CAN_HCAN_L 引脚间的电阻。

    设备操作说明
    工具板找到并插上标有 120Ω 的跳线帽。
    主板如连接主板.请同样插上其 120Ω 跳线帽。
    UTOC模块自带电阻。

    如何检查:

    1. 保持完全断电
    2. 使用万用表测量工具板CAN口的 CAN-H与CAN-L 之间的电阻。
    3. 结果判断:
      • 约60Ω:正常.两端电阻已正确连接。
      • 约140Ω:可能CAN-H与CAN-L接反了。
      • 约120Ω:没有安装120Ω 或者断线。
      • 约90Ω:只安装了一个120Ω
      • 约40Ω:可能有多余的电阻.请检查中间节点。

开始编译

固件编译注意事项与操作指南

注意事项

📌 重要前提
  1. 网络连接:确保上位机(树莓派等)已连接网络
  2. 访问方式:必须使用SSH通过网络登录上位机,禁止使用串口工具
  3. 用户权限:根据上位机系统类型,使用正确的用户账户操作
  4. 输入法:确保键盘输入法为半角模式(英文模式)

SSH登录与用户切换

SSH登录上位机

使用SSH工具(如MobaXterm、PuTTY等)通过网络登录上位机: 查看SSH连接详细教程

根据系统类型切换用户

适用系统

  • 树莓派官方系统
  • FLY派Armbian系统
  • 其他安装好Klipper的系统

用户权限要求

  • 禁止使用root用户进行任何操作
  • 必须切换到普通用户进行操作

切换命令

  • 其他系统(替换<username>为您的用户名)

    su <username>
💡 提示

普通用户通常具有必要的编译权限,使用root用户可能导致权限问题


固件编译说明

1. 键盘操作指南

  • 在Klipper固件配置页面中,只能使用以下快捷键操作:
  • 无法使用鼠标直接操作!
按键功能说明
↑ ↓ 方向键上下移动光标选择菜单项
EnterSpace确认选择/勾选菜单项 或 进入子菜单
ESC返回上一级菜单
Q退出Klipper固件配置页面
Y退出时如有提示,按Y键保存配置

显示隐藏选项

⚠️ 显示隐藏选项

如果配置页面选项较少,请先勾选:

[ ] Enable extra low-level configuration options

此选项用于显示部分隐藏的配置选项。

开始固件编译

下面介绍如何编译固件:

  • 连接到SSH后输入下面的命令并回车:

    cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig
  • 其中 rm -rf ~/klipper/.config && rm -rf ~/klipper/out是删除之前编译数据与固件

  • make menuconfig是编译固件,执行后应该出现下方界面

    Loading...
  • 选择Enable extra low-level configuration options并且回车

    Loading...
  • 进入菜单Micro-controller Architecture然后选择Raspberry Pi RP2040/RP235x回车

    Loading...
  • 选择Bootloader offset,选择:16KiB bootloader

    Loading...
  • 选择Communication interface,选择:CAN bus

    Loading...
  • 选择(4) CAN RX gpio number,删除4输入1

  • 选择(5) CAN TX gpio number,删除5输入0

    Loading...

123

  • 选择GPIO pins to set at micro-controller startup,输入:
    !gpio5
注意

请在英文输入法状态下输入

!gpio5
Loading...
  • 请对照上图核对,确保与上图一致,再进进行下一步
  • Q 键,出现 Save configuration,这时再按 Y
Loading...
  • 现在应该保存了配置并且退出到了命令行界面
  • 输入下方指令开始编译,时间有点长
make -j4
Loading...
  • 最后输出下面的内容则编译成功
  • 因Klipper版本问题只需要出现out/klipper.bin则代表成功
    Linking out/klipper.elf
    Creating bin file out/klipper.bin

搜索ID并且烧录

搜索设备

  • 现在你已经正常登录到上位机了可以输入lsusb搜索设备,将会以下几种情况之一
    • 输入lsusb提示找不到ls指令,则可以输入下方指令来安装指令
      sudo apt-get install usbutils
    • 输入lsusb后什么反应都没有,这是系统问题这边无能为力,你需要更换系统或者使用确定正常的系统
    • 出现下方图片中的信息,请注意这只是参考。你只需要确定有出现1d50:606f即可
      Loading...
  • 1d50:606f 属于本次你要用到的设备
  • 如果有多个1d50:606f,需要排除一个,否则会影响后续烧录与固件连接,如FLY MINI PAD则建议使用板载UTOC不要使用其他CAN桥接设备
  • 如果没有,请自行检查数据线是否接好,固件有没有刷对。
注意事项

1d50:606f时候才能去搜索CAN ID

查询CANBus UUID

操作前须知
  • 建议在非打印状态下执行ID查询和固件刷写操作,避免干扰打印过程。
  • 同一主板/工具板的Katapult(CANBoot)固件与Klipper固件使用相同的CAN ID
前提条件

请确保满足以下条件,否则可能无法正常搜索到CAN ID:

  1. 上位机CAN网络已正确配置
  2. 工具板CAN速率与上位机完全一致(速率不一致将无法通信)
  3. 执行 lsusb 命令后能看到 1d50:606f 设备(USB-CAN适配器)

搜索命令(根据系统选择)

~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0

搜索结果说明

情况一:已刷Klipper固件的主板/工具板

  • 显示效果:显示一个CAN ID,并提示 Application: Klipper
  • 说明:设备已运行Klipper固件,可以直接使用。此ID可能是主板ID也有可能是工具板ID。
  • 区分方法:断开工具板的CAN连接线后重新搜索。如果该ID消失,则属于工具板;如果该ID仍在,则属于主板。
Loading...

情况二:主板 + 待烧录工具板

  • 显示效果:显示两个CAN ID
  • 说明:主板运行Klipper固件,工具板运行CanBoot固件,等待烧录。
Loading...

情况三:UTOC + 待烧录工具板

  • 显示效果UTOC本身不显示ID,只显示工具板的ID
  • 说明:UTOC仅作为桥接器,需确保工具板处于CanBoot模式。
Loading...

情况四:无ID显示

  • 显示效果:无任何ID显示
  • 可能原因
    1. CAN总线被Klipper占用
    2. 上位机CAN0速率配置错误
    3. 物理接线异常
    4. 设备未进入CanBoot模式
Loading...

重要提示
  • 待烧录状态:工具板处于CanBoot模式时会显示 Application: CanBoot 且固件灯闪烁,此时可进行固件烧录。
  • ID占用处理:如果设备已运行Klipper固件且ID已填入配置文件,ID将不会显示(被Klipper占用)。如需重新显示,需在配置中屏蔽该ID并彻底断电重启
故障排查

如果无法查询到UUID,请参考: CAN问题排查指南

固件烧录

烧录命令

  1. 将下方命令中的 241696050c56 替换为您实际查询到的UUID
  2. 注意-u 参数后需有空格
python3 ~/klipper/lib/canboot/flash_can.py -u 241696050c56

烧录成功确认

出现 CAN Flash Success 提示即表示烧录成功:

Loading...

固件更新

更新方法

当需要更新固件时,只需:

  1. 重新编译固件
  2. 确保能查询到设备CAN ID(或Klipper已连接设备)
  3. 执行相同的烧录命令
python3 ~/klipper/lib/canboot/flash_can.py -u <MCU ID>

更新成功示例

Loading...

确认固件是否启动

  • 如果固件正常启动LED会亮起来
    Loading...
Loading...