Skip to main content

USB 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
    2Micro-controller Architecture 选择 Raspberry Pi RP2040/RP235x
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    3Processor model 选择 rp2040
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    4Bootloader offset 选择 16KiB bootloader
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    5Communication Interface 选择 USBSERIAL
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (USBSERIAL) --->
    6启用 Optimize stepper code for 'step on both edges'
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (USBSERIAL) --->
    USB ids --->
    [*] Optimize stepper code for 'step on both edges'
    7Q 键退出配置界面
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (16KiB bootloader) --->
    Communication Interface (USBSERIAL) --->
    USB ids --->
    [*] Optimize stepper code for 'step on both edges'
    () GPIO pins to set at micro-controller startup
    8出现 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/rp2040/bootrom.o
    Compiling out/src/rp2040/usbserial.o
    Compiling out/src/generic/usb_cdc.o
    Compiling out/src/rp2040/chipid.o
    Compiling out/src/rp2040/hard_pwm.o
    Compiling out/src/rp2040/spi.o
    Compiling out/src/rp2040/i2c.o
    Preprocessing out/src/rp2040/rpxxxx_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 与系统版本变化。

Verify Entry into Burning Mode

Power Off Operation

Please fully shut down the printer and disconnect the power supply before starting. Do not plug or unplug cables, rearrange wiring, or touch terminals while the device is powered on.

  • After connecting the motherboard to the host computer using a Type-C data cable, double-click the reset button. The LED on the motherboard will then start flashing.
Warning
  • If the LED does not flash, re-burn the Katapult firmware: Burn Katapult Firmware
  • If the LED does not flash, proceed to the next step only after the Katapult firmware has been burned.

Burn the Firmware

Applicable Scope

This procedure is used to flash the Klipper firmware that has just been compiled via USB Katapult. You only need to operate the firmware type selected on the current page.

1. Search for the Katapult USB ID

Non-FLY official host computers need to install Katapult first:

View Katapult installation method

Run the following command:

ls /dev/serial/by-id/*
Identification Result

The search results should contain a complete path including usb-katapult_, for example:

/dev/serial/by-id/usb-katapult_<chip model>_<device ID>-if00

Each lower-level controller has a different ID. Please copy the complete path displayed for your own device.

2. Flash the Klipper Firmware

Replace the Device ID

Please replace <Katapult USB ID> in the command with the complete path found in the previous step. Do not keep the angle brackets.

~/klippy-env/bin/python ~/katapult/scripts/flashtool.py -d <Katapult USB ID>

3. Confirm the Flashing Result

If the command completes without any errors, the firmware has been written. After flashing is complete, the Katapult USB ID will disappear; please follow the subsequent steps on the current product page to power cycle and search for the corresponding Klipper ID.

Loading...

Reflashing the Firmware

When you need to update the Klipper firmware that has already been flashed in the future, you do not need to flash Katapult again. Please first recompile the target firmware on the current page, then choose one method based on the current state of the device.

Method 1: Use a Command to Automatically Enter Katapult

If usb-Klipper_ ID can currently be found, you can have Klipper automatically request the lower-level controller to enter Katapult and complete the reflash:

cd ~/klipper && make flash FLASH_DEVICE=<usb-Klipper ID>

Please replace <usb-Klipper ID> with the complete path found by ls /dev/serial/by-id/*. The command uses ~/klipper/out/klipper.bin by default.

Method 2: Double-click RST and Then Flash Manually

If there is currently no usb-Klipper_ ID, or if Method 1 fails, please use the following method:

Power-off Operation

Before starting, please completely turn off the printer and disconnect the power supply. Do not plug or unplug the USB cable or touch terminals while powered on.

  1. After powering off, reconnect the Type-C data cable.

  2. Quickly double-click the RST button on the lower-level controller and wait for the status light to blink, indicating that it has entered Katapult.

  3. Search for the Katapult USB ID:

    ls /dev/serial/by-id/*
  4. Use the found usb-katapult_ ID to perform flashing:

    Regular Linux host computer:

    ~/klippy-env/bin/python ~/katapult/scripts/flashtool.py -d <Katapult USB ID> -f ~/klipper/out/klipper.bin

    FLYOS / FLY host computer:

    python3 ~/katapult/scripts/flashtool.py -d <Katapult USB ID> -f ~/klipper/out/klipper.bin
Note

When reflashing, you must use the firmware corresponding to the current connection method. Although the USB bridge CAN firmware ultimately works through CAN, Katapult reflashing still uses the USB ID and USB flashing command.

Search for USB ID After Burning

After the firmware burning is complete and the motherboard is powered on again, proceed to search for the USB ID.

View methods to obtain USB ID

Loading...