USB Bridge CAN Firmware Flashing
- In the FLYOS-FAST system, a USB bridge CAN firmware has been pre-compiled. No need to manually compile the firmware. Execute the command below to flash it.
- You can also choose to
manually compile the USB bridge CAN firmware and compile it yourself.
-
The FAST system defaults to a 1M rate. If 500K is needed, modify the canbus_bitrate rate in the system configuration.
-
This command flashes the 1M USB Bridge CAN Firmware
fly-flash -d auto -h -f /usr/lib/firmware/klipper/stm32f407-32k-usbcan-1m.bin
- This command flashes the
500k USB Bridge CAN Firmware
fly-flash -d auto -h -f /usr/lib/firmware/klipper/stm32f407-32k-usbcan-500k.bin
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 (STM32F407) --->
Bootloader offset (32KiB 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
2Micro-controller Architecture 选择 STMicroelectronics STM32
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F407) --->
Bootloader offset (32KiB 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
3Processor model 选择 STM32F407
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F407) --->
Bootloader offset (32KiB 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
4Bootloader offset 选择 32KiB bootloader
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F407) --->
Bootloader offset (32KiB 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
5Clock Reference 选择 8 MHz crystal
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F407) --->
Bootloader offset (32KiB 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
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 (STM32F407) --->
Bootloader offset (32KiB 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
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 (STM32F407) --->
Bootloader offset (32KiB 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
8USB ids 保持默认,无需进入
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F407) --->
Bootloader offset (32KiB 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
9CAN bus speed 设置为 1000000
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F407) --->
Bootloader offset (32KiB 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 (STM32F407) --->
Bootloader offset (32KiB 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
11GPIO pins to set at micro-controller startup 保持为空
(Top)
Klipper Firmware Configuration
[*] Enable extra low-level configuration options
Micro-controller Architecture (STMicroelectronics STM32) --->
Processor model (STM32F407) --->
Bootloader offset (32KiB 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
12GPIO 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 (STM32F407) --->
Bootloader offset (32KiB 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 (STM32F407) --->
Bootloader offset (32KiB 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/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
Compiling out/src/stm32/sdio.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 与系统版本变化。
Firmware Flashing
Execute the command below to flash the firmware.
fly-flash -d auto -h -f /data/klipper/out/klipper.bin