Flashing Klipper friendly bootloader on BTT SKR Mini E3 v2

This is a very brief overview on how to install Arksine’s katapult (formerly CanBoot) onto the SKR Mini E3 v2 without any additional special hardware. The primary motivation is to allow updating the Mini via USB using the standard Klipper make flash command with no need for SD card based flashing. The same fundamental approach can be used on other BTT SKR boards, but exact configuration settings will need to be adjusted accordingly.

This procedure is similar to the one outlined by @Sineos in CanBoot: Flash BTT SKR 1.3 / 1.4 / 1.4 Turbo, but instead of requiring any additional hardware it relies purely on the katapult “deployer mode”.

CAUTION: This will remove the BTT bootloader and replace it with katapult. You will no longer be able to update the firmware using the SD card! I strongly recommend that you back-up the original bootloader first by using the following command: ~/klippy-env/bin/python ~/klipper/scripts/dump_mcu.py -l 0x7000 /dev/ttyACM0 ~/bootloader_backup.bin. If anything goes wrong during this process your SKR board will become unusable until a functional bootloader is installed. This will require additional external programming hardware.

Process Steps

  1. Install katapult following the instructions on GitHub: katapult.

  2. Use the following configuration during make menuconfig:

  3. Compile katapult and then transfer the deployer.bin file from ~/katapult/out directory to a suitable SD card.

  4. Rename deployer.bin on the SD card to firmware.bin.

  5. Insert the SD card into BTT SKR Mini E3 v2 and power up the SKR. Note the Status LED will briefly flash as the bootloader is being flashed.

  6. The SKR status LED will start flashing slowly as the board resets and enters the katapult bootloader mode. If the bootloader mode is needed at a later time, rapidly double-clicking the RESET button on the board with place it in bootloader mode.

  7. When configuring klipper for the modified board with make menuconfig do not use 28KiB bootloader setting but instead use 8KiB bootloader setting for katapult bootloader.

  8. Flash Klipper onto the modified SKR board using the standard flash command make flash FLASH_DEVICE=/dev/ttyACM1. Make sure to use the correct device name.

That’s all folks! Many thanks to Arksine for his ongoing development of the Klipper ecosystem!


after performing this my USB on my main board appears to be dead. Cable worked before this, afterwards when typing “ls /dev/serial/by-id” im getting directory dosent exist. help would be greatly appreciated as im new to klipper. Im not new to firmware and linux in general but im new to klipper

Hi. When you say USB “appears to be dead”, do you mean in boot loader mode the USB is not functioning? Implying that you are unable to flash Klipper onto it? If so, did you make sure to set !PA14 in GPIO pins to set on boot loader entry as shown in my screen capture above? This is absolutely needed for the boot loader to enable USB on the SKR3 Mini v2.

Yes. I properly set my GPIO pins, but when in bootloader mode, if I attempt to do find my unique serial id it returns directory not found.

  • Is the SKR status LED flashing slowly indicating that the board is in the katapult bootloader mode?
  • Have you tried issuing a lsusb command on the Pi to check if the board is detected?
  • Do you have a /dev/ttyACM1 (or perhaps /dev/ttyACM0) device? If yes, you may be affected by Debian 11 (Bullseye) udev bug - No board or serial found

i did have the buggy version, however even after updating and running the script to remidy the issue im still getting the same results, directory not found. And yes the LED is slowly flashing. and upon further investigation the board isn’t being recognized

Are you saying that the board is not shown when using lsusb? If it is not working then there had to be an issue with configuration via make menuconfig. I have done the flash this way many times and it worked every single time without any issues. Is your board definitely v2? Is the CPU STM32F103? Can you double-check that the make menuconfig settings are exactly as shown? Beyond that I have nothing else to offer, unfortunately…

Maybe I’m misunderstanding the issue, but when your board is in bootloader mode then it is like being in the BIOS setup and wondering why no Windows desktop is showing up.

You need to flash a new Klipper first following @ReXT3D point 8:

As /dev/ttyACM1 is not stable, unplug the board, replug it and then use sudo dmesg to get the correct path.

Did you ever get it working?