Skip to main content

CAN Firmware Compilation

Start Compilation

Brief Guide to Firmware Compilation

Notes

  • Network: Ensure the host (Raspberry Pi, etc.) is connected to the internet.
  • Login Method: Must log in via SSH over the network; serial port access is disabled.
  • Input Method: Keep the keyboard in English half-width mode.

SSH Login and User Switching

Use tools like MobaXterm, PuTTY, etc., to SSH into the host.

Switch User:

  • Standard System (Official Raspberry Pi system, etc.)
    Do not use root; switch to a regular user:
    su <username>
  • FLY Host System (FlyOS-FAST system)
    Only supports login as root user (password: mellow)

Firmware Compilation Operation Guide

In the Klipper firmware configuration interface, only keyboard operations are supported; the mouse cannot be used.

KeyFunction
↑ / ↓Move cursor up/down to select menu items
Enter / SpaceConfirm selection, check options, or enter submenus
ESCReturn to the previous menu
QExit the configuration interface
YIf prompted when exiting, press Y to save the configuration

Starting Firmware Compilation

Below is an introduction on how to compile the firmware:

  1. Connect via SSH, enter the following command, and press Enter:

    cd ~/klipper && rm -rf ~/klipper/.config && rm -rf ~/klipper/out && make menuconfig

    Here, rm -rf ~/klipper/.config && rm -rf ~/klipper/out is used to clear previous compilation configurations and firmware; make menuconfig is used to open the Klipper firmware configuration interface.

  2. Follow the order below to set each item one by one, completing each before moving on to the next.

    1启用 Enable extra low-level configuration options
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    2Micro-controller Architecture 选择 STMicroelectronics STM32
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    3Processor model 选择 STM32H723
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    4Bootloader offset 选择 128KiB bootloader
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    5Clock Reference 选择 25 MHz crystal
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    6Communication interface 选择 USB to CAN bus bridge (USB on PA11/PA12)
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    7CAN bus interface 选择 CAN bus (on PB8/PB9)
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    8USB ids 保持默认,无需进入
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    9CAN bus speed 设置为 1000000
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    10GPIO pins to set at micro-controller startup 保持为空
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    11GPIO state at micro-controller startup 选择 Not set

    此项是 FLYOS-Klipper 功能。通常保持 Not set;如需设置全部 GPIO 的启动状态,请先阅读 GPIO 启动状态使用说明

    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    12Q 键退出配置界面
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (STMicroelectronics STM32) --->
    Processor model (STM32H723) --->
    Bootloader offset (128KiB bootloader) --->
    Clock Reference (25 MHz crystal) --->
    Communication interface (USB to CAN bus bridge (USB on PA11/PA12)) --->
    CAN bus interface (CAN bus (on PB8/PB9)) --->
    USB ids --->
    (1000000) CAN bus speed
    () GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    13出现 Save configuration 时按 Y 保存配置
    Quit
    Save configuration?
    (Y)es(N)o(C)ancel
  3. After completing the last two steps above, press Q to exit the configuration interface, then press Y to save the configuration.

  4. Return to the command line and enter the following command, then press Enter to start compiling:

    make -j4
    root@flyos-11e5f8 ~/klipper # make -j4
    Compiling out/src/stm32/usbotg.o
    Compiling out/src/generic/canserial.o
    Compiling out/src/../lib/fast-hash/fasthash.o
    Compiling out/src/stm32/fdcan.o
    Compiling out/src/stm32/chipid.o
    Compiling out/src/generic/usb_canbus.o
    Compiling out/src/stm32/hard_pwm.o
    Preprocessing out/src/generic/armcm_link.ld
    Building out/compile_time_request.o
    Version: XXXX
    Linking out/klipper.elf
    Creating bin file out/klipper.bin

    终端末尾出现 Linking out/klipper.elf Creating bin file out/klipper.bin,即表示编译成功。 实际编译时,部分 Compiling 行和 Version 会随 Klipper 与系统版本变化。

Confirm Entering Flash Mode

  • Use a Type-C cable to connect the motherboard to the host machine. Double-click the reset button, and the LED on the motherboard will blink.
Warning
  • If the LED does not blink, please reflash the Katapult firmware: Flash Katapult Firmware
  • If the LED does not blink, proceed to the next step only after flashing the Katapult firmware.

Flash Firmware

Starting the Flashing Process

  • Non-Fly official upper computers require Katapult installation
  • Install Katapult

Obtaining the Mainboard ID

Execute the following command to search for the device ID. Under normal circumstances, an ID similar to the image below should be displayed (Note: Each mainboard has a different ID):

ls /dev/serial/by-id/*

If the searched ID contains usb-katapult_stm32xxxxxxxx, you can proceed to the next step

Loading...

Flashing the Firmware

⚠️ Preparation
  • Ensure the firmware file has been compiled
  • Replace <your_mainboard_ID> in the command below with the actual ID obtained in the previous step
  • For standard upper computers, use the following code
    ~/klippy-env/bin/python ~/katapult/scripts/flashtool.py -d <your_mainboard_ID>
  • For FLY upper computers, use the following code
    python3 ~/katapult/scripts/flashtool.py -d <your_mainboard_ID>

Flashing Process Reference:

Loading...

Flashing Success Reference:

Loading...

Firmware Update

USB Firmware Update Steps

  1. Query the Mainboard ID
ls /dev/serial/by-id/*
Identification Points

/dev/serial/by-id/usb-katapult_rp2040_E662549553642032-if00 in the image below is the mainboard ID

Loading...
  1. Update the Firmware
cd ~/klipper/ && make flash FLASH_DEVICE=<your_mainboard_ID>
Note
  • Replace <your_mainboard_ID> with the actual queried ID
Loading...

Solutions for Flashing the Wrong Firmware

Method One: Quickly Enter Flash Mode

  1. Power off the mainboard
  2. After powering back on, quickly double-click the RESET button
  3. Re-enter flash mode

Method Two: Re-flash the Katapult Firmware

Click to View Katapult Firmware Flashing Guide

Search for CAN ID After Flashing

After the firmware is flashed and the motherboard is powered back on, continue to search for the CAN ID.

View CAN ID Retrieval Method

Loading...