Skip to main content

RS232 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 (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    2Micro-controller Architecture 选择 Raspberry Pi RP2040/RP235x
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    3Processor model 选择 rp2040
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    4Bootloader offset 选择 No bootloader
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    5Flash chip 选择 W25Q080 with CLKDIV 2
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    6Communication Interface 选择 UART0 on GPIO0/GPIO1
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    7Baud rate for serial port 设置为 250000
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    8启用 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 (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    9GPIO pins to set at micro-controller startup 设置为 gpio17
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    10GPIO 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 (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    11Q 键退出配置界面
    (Top)
    Klipper Firmware Configuration
    [*] Enable extra low-level configuration options
    Micro-controller Architecture (Raspberry Pi RP2040/RP235x) --->
    Processor model (rp2040) --->
    Bootloader offset (No bootloader) --->
    Flash chip (W25Q080 with CLKDIV 2) --->
    Communication Interface (UART0 on GPIO0/GPIO1) --->
    (250000) Baud rate for serial port
    [*] Optimize stepper code for 'step on both edges'
    (gpio17) GPIO pins to set at micro-controller startup
    GPIO state at micro-controller startup (Not set) --->
    12出现 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/generic/timer_irq.o
    Compiling out/src/rp2040/bootrom.o
    Compiling out/src/rp2040/serial.o
    Compiling out/src/generic/serial_irq.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 uf2 file out/klipper.uf2

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

Entering Flash Mode

Tip

The circled item is the BOOT button

  • To enter flash mode, ensure the tool board is completely powered off. Hold the BOOT button, then connect the Type-C end of a data-capable cable to the tool board and the other end to the host machine.
    Loading...

Flashing the Firmware

  • Please note that the current tool board is in firmware flashing mode, and only firmware with the .uf2 suffix can be flashed.

  • Use the following command to flash the firmware onto the tool board:

    cd && cd ~/klipper/
    make flash FLASH_DEVICE=2e8a:0003
    Tip

    If this is the first flash after writing the system on the host computer, a prompt similar to the one circled in red in the image below may appear—some red hints are normal and do not indicate an error.

    Loading...

Verifying Firmware Startup

  • If the firmware starts normally, the LED will light up.
    Loading...
Loading...