USB Bridge CAN Firmware Flashing
Connect to Host
Core Connection Limitation
The Fly-D7 motherboard can only communicate with the host for Klipper through the Type-C USB interface .
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:
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.
Key Function ↑ / ↓ Move cursor up/down to select menu items Enter / Space Confirm selection, check options, or enter submenus ESC Return to the previous menu Q Exit the configuration interface Y If prompted when exiting, press Y to save the configuration
Starting Firmware Compilation
Below is an introduction on how to compile the firmware:
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.
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 (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
2 Micro-controller Architecture 选择 STMicroelectronics STM32
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
3 Processor model 选择 STM32F072
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
4 Bootloader offset 选择 8KiB bootloader
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
5 Clock Reference 选择 8 MHz crystal
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
6 Communication 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 (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
7 CAN bus interface 选择 CAN bus (on PB8/PB9)
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
8 USB ids 保持默认,无需进入
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
9 CAN bus speed 设置为 1000000
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
10 启用 Optimize stepper code for 'step on both edges'
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
11 GPIO pins to set at micro-controller startup 保持为空
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
12 GPIO 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 (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
13 按 Q 键退出配置界面
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F072) --->
Bootloader offset (8KiB bootloader) --->
Clock Reference (8 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
[*] Optimize stepper code for 'step on both edges'
() GPIO pins to set at micro-controller startup
GPIO state at micro-controller startup (Not set) --->
[Space/Enter] Toggle/enter [?] Help [/] Search
[Q] Quit (prompts for save) [Esc] Leave menu
14 出现 Save configuration 时按 Y 保存配置
Quit
Save configuration?
(Y)es (N)o (C)ancel
After completing the last two steps above, press Q to exit the configuration interface, then press Y to save the configuration.
Return to the command line and enter the following command, then press Enter to start compiling:
root@flyos-11e5f8 ~/klipper # make -j4
Compiling out/src/stm32/usbfs.o
Compiling out/src/generic/canserial.o
Compiling out/src/../lib/fast-hash/fasthash.o
Compiling out/src/stm32/can.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 与系统版本变化。
Enter Flash Mode
After connecting the motherboard to the host using a Type-C data cable, double-click the RST button . The LED on the motherboard will then blink.
Flash Firmware
Starting the Flashing Process
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 ):
If the searched ID contains usb-katapult_stm32xxxxxxxx, you can proceed to the next step
Flashing the Firmware
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:
Flashing Success Reference:
Firmware Update
USB Firmware Update Steps
Query the Mainboard ID
/dev/serial/by-id/usb-katapult_rp2040_E662549553642032-if00 in the image below is the mainboard ID
Update the Firmware
cd ~/klipper/ && make flash FLASH_DEVICE = < your_mainboard_ID >
Replace <your_mainboard_ID> with the actual queried ID
Bridge CAN Firmware Update Steps
Reset to Enter Flash Mode
<your_mainboard_ID> is the CANBUS UUID of the mainboard in the printer.cfg configuration file
For standard upper computers, use the following code
~/klippy-env/bin/python3 ~/katapult/scripts/flashtool.py -i can0 -r -u < your_mainboard_ID >
For FLY upper computers, use the following code
python3 ~/katapult/scripts/flashtool.py -i can0 -r -u < your_mainboard_ID >
f95cee90e1f9 in the image below is the mainboard's CANBUS UUID (example only)
Query the New Device ID
This is for reference only!
/dev/serial/by-id/usb-Klipper_stm32f072xb_38001B000551324752333720-if00 in the image below is the newly identified mainboard ID
Flash the New Firmware
cd ~/klipper/ && make flash FLASH_DEVICE = < your_mainboard_ID >
Solutions for Flashing the Wrong Firmware
Method One: Quickly Enter Flash Mode
Power off the mainboard
After powering back on, quickly double-click the RESET button
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 flashing is complete and the motherboard has been powered on again, please proceed to search for the CAN ID.
View CAN ID Retrieval Method