Skip to content

Add support for OpenBLT Bootloader.#7204

Open
matt-alencar wants to merge 2 commits intoKlipper3d:masterfrom
matt-alencar:arm-support-for-openblt
Open

Add support for OpenBLT Bootloader.#7204
matt-alencar wants to merge 2 commits intoKlipper3d:masterfrom
matt-alencar:arm-support-for-openblt

Conversation

@matt-alencar
Copy link

@matt-alencar matt-alencar commented Feb 22, 2026

Support for OpenBLT Bootloader by adding the checksum pattern right after the interrupt vector table, this is required by the bootloader to ensure that a valid firmware is present on the flash memory and be able to jump to the app code.

On the bootloader's code you will have to adjust the BOOT_FLASH_VECTOR_TABLE_CS_OFFSET to match your specific build, use the following command to check where your isr vector table finishes, as it's build dynamically by a script.
arm-none-eabi-objdump -s -j .text out/klipper.elf | grep ee11aa55
80070e0 ee11aa55 4ff0000c 0849094a 8b6810b4 ...UO....I.J.h..

-> 0x08007000 is the app start address (28KB bootloader size, 0x7000 offset)
-> 0x080070e0 is where the checksum are located, right after ISR vector table, so the BOOT_FLASH_VECTOR_TABLE_CS_OFFSET is 0xE0 in this case.

Convert the compiled Klipper firmware to .srec format using:
arm-none-eabi-objcopy -I binary -O srec --change-addresses 0x08007000 out/klipper.bin out/firmware.srec
For the app firmware be accepted by the bootloader, it must be in .srec format, then you can put it to a SD card or upload using serial port, ModBus RTU, CAN or USB HID as the OpenBLT has support for all of this protocols.
Note that the "--change-addresses" parameter must match your bootloader size, for 28KB the app start address are 0x08007000.

@matt-alencar matt-alencar marked this pull request as ready for review February 22, 2026 23:42
@nefelim4ag
Copy link
Collaborator

nefelim4ag commented Feb 23, 2026

Silly question, why use the OpenBLT bootloader if there is Katapult already available, for, I think, all of the supported platforms?
And it can even fit in the first 4kb in some cases.

Cheers,
-Timofey

@matt-alencar
Copy link
Author

matt-alencar commented Feb 23, 2026

Silly question, why use the OpenBLT bootloader if there is Katapult already available, for, I think, all of the supported platforms? And it can even fit in the first 4kb in some cases.

Cheers, -Timofey

Thanks for asking :)
Currently Katapult only supports CAN and Serial communication, I was looking for an alternative that also supports SD cards, using this method is easier (at least for me) and the risk of bricking the device is mitigated because OpenBLT always try to update the device if the correct firmware file are present on the SD card.

…tor-table-cs-offset helper, that prints BOOT_FLASH_VECTOR_TABLE_CS_OFFSET value for OpenBLT bootloader.
@github-actions
Copy link

Thank you for your contribution to Klipper. Unfortunately, a reviewer has not assigned themselves to this GitHub Pull Request. All Pull Requests are reviewed before merging, and a reviewer will need to volunteer. Further information is available at: https://www.klipper3d.org/CONTRIBUTING.html

There are some steps that you can take now:

  1. Perform a self-review of your Pull Request by following the steps at: https://www.klipper3d.org/CONTRIBUTING.html#what-to-expect-in-a-review
    If you have completed a self-review, be sure to state the results of that self-review explicitly in the Pull Request comments. A reviewer is more likely to participate if the bulk of a review has already been completed.
  2. Consider opening a topic on the Klipper Discourse server to discuss this work. The Discourse server is a good place to discuss development ideas and to engage users interested in testing. Reviewers are more likely to prioritize Pull Requests with an active community of users.
  3. Consider helping out reviewers by reviewing other Klipper Pull Requests. Taking the time to perform a careful and detailed review of others work is appreciated. Regular contributors are more likely to prioritize the contributions of other regular contributors.

Unfortunately, if a reviewer does not assign themselves to this GitHub Pull Request then it will be automatically closed. If this happens, then it is a good idea to move further discussion to the Klipper Discourse server. Reviewers can reach out on that forum to let you know if they are interested and when they are available.

Best regards,
~ Your friendly GitIssueBot

PS: I'm just an automated script, not a human being.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants