Flashing Custom Firmware on the Prusa XL

This article is part of the Prusa XL Technical Series on INVESTEGATE.de

All guides assume that the Prusa XL Fundamentals are correct.
If not, start here: Prusa XL Basics – Technical Fundamentals

prusaxl firmware thumbnail

If you’re considering custom (unsigned) firmware on the Original Prusa XL, treat the process like a controlled engineering change: plan it, document it, and keep a clean rollback path. Prusa’s official firmware is signed and verified by the printer before it can be installed, and moving to unsigned firmware changes that trust model.

This guide focuses on a safe, repeatable workflow: preparation, flashing, and validation. It does not try to encourage “fast hacks”; it’s meant to help you reduce risk, avoid bricking your printer, and keep safety considerations front and center.

Safety, warranty, and responsibility

Prusa notes that official firmware is intensively tested, including safety-relevant behavior such as stopping heating when thermistor readings are outside defined limits.
They also state that official firmware is signed with a private key, and the printer verifies the signature before allowing an update.

For unsigned/custom firmware, Prusa describes a hardware step that involves breaking the Buddy board “appendix” seal; they also state that breaking the seal does not void warranty, but they disclaim liability for damage or harm caused by a printer with a broken seal (for example, in the event of a fire).​

Before you start: a practical checklist

  • Confirm your exact model (Original Prusa XL) and note your current firmware version.
  • Decide what you’re flashing: a self-built binary or a community-provided build.
  • Prepare a rollback package: keep a known-good official firmware file ready.
  • Don’t flash random files: Prusa explicitly warns against mindlessly flashing suspicious firmware.

A small but important habit: write down what you change and when you flash it. If something behaves differently after the update, a simple change log saves hours.

Breaking the appendix seal (XL / xBuddy)

In their factory state, Prusa printers with the xBuddy / XLBuddy board will only accept officially signed firmware. To flash any custom or otherwise unsigned firmware, you must permanently break a small “appendix seal” that is part of the board itself.

This appendix is a tiny PCB tab with a safety symbol (exclamation mark) on it, located inside the electronics box on the xBuddy board.
Breaking it cuts an electrical trace on the board and tells the bootloader to stop enforcing the “only signed firmware” rule. This cannot be undone in a clean, official way, and Prusa explicitly treats it as a one‑way switch.

How to break the appendix seal (safe method)

  • Power the printer off and unplug it from mains. Give the power supply about 10 minutes to discharge.
  • Open the electronics box and locate the xBuddy/XLBuddy board. Look for the small appendix piece with an exclamation mark printed on it – that is the safety seal.
  • Take a small flathead screwdriver or very thin, sharp pliers and only target the thin middle part of the tab. Gently wiggle or twist until the narrow section snaps. Do not press into the main board or nearby components.
  • Once the thin section is broken, the appendix seal is considered “removed” and the board will accept unsigned/custom firmware as described in the firmware flashing guide.
Here you can see how to break off the seal Be careful not to damage anything else in the process

Important notes you should mention

  • This is a one‑way modification: the trace on the appendix is physically broken. While some forum posts discuss complex rework (soldering tiny wires to restore the connection), this is not an official or beginner‑friendly procedure.
  • Prusa has stated that breaking the appendix seal does not void your warranty, but they also make it clear that they cannot take responsibility for damage or harm caused by unsafe custom firmware. In other words: the hardware warranty remains, but you own the risk for what your firmware does.
  • The XL board revision you are likely using does not have a traditional jumper to move. The appendix seal is the switch; there is nothing you can simply plug back in later.

In conclusion, I’d like to add that it sounds worse than it is. Even after the seal is broken, the Prusa XL will warn you before installing unofficially signed firmware. The printer will therefore function perfectly normally with the official firmware without any problems.

Building your own firmware (controlled approach)

Prusa maintains the “Prusa-Firmware-Buddy” repository, which contains firmware sources for multiple Prusa printers, including the Original Prusa XL.
The repo documents a standard build flow: clone the repository and run python utils/build.py, which places build outputs under ./build/products, and you can limit what gets built using --preset (for example, mini,xl) and choose debug/release builds.

For reliable iteration, keep changes minimal:

  • Start from a tagged release or a specific commit you can reference later.
  • Make one change at a time, rebuild, flash, validate.
  • Keep your last known-good binary so you can revert quickly.

XL-specific complexity: “Buddy + puppies”

The Prusa firmware repository notes that the XL is more complex because the XLBuddy firmware can also include firmware for additional devices (“puppies”, such as Dwarf and Modularbed) and may flash them when needed.
It also documents multiple development strategies: automatically building puppy firmware and flashing it on startup (default), using pre-built puppy binaries, or disabling puppy flashing/interaction via build options like -DENABLE_PUPPY_BOOTLOAD=NO or -DPUPPY_SKIP_FLASH_FW=YES.

This matters for troubleshooting: one “firmware update” may affect more than one component, so validate changes incrementally and avoid changing multiple subsystems at once.

Post-flash validation (my test routine)

After flashing, I run a short, repeatable validation routine:

  • Cold-boot the printer multiple times to confirm reliable startup.
  • Perform a brief, supervised heat test (bed/nozzle) to confirm stable readings and expected safety behavior.
  • Run homing and basic motion checks.
  • If you use the toolchanger, test docking/undocking cycles and confirm tool offsets.

Never leave first-boot heating tests unattended after flashing any custom build.

Troubleshooting and rollback

If the printer doesn’t reach the main UI after a firmware update, don’t assume it’s permanently bricked. In many cases you can still trigger the built‑in reflashing procedure from a USB drive using the reset button next to the knob (and, if needed, a knob press during boot).

1) Identify what you’re seeing

  • Error #17608 (“Firmware in the internal flash corrupted! Please reflash the firmware.”) typically indicates the flashing procedure failed because the firmware file on the USB drive is damaged.
  • Error #17614 (“USB flash drive contains unsupported firmware BBF file”) indicates the printer thinks the BBF header is incompatible or has been modified.

Either way, the recovery steps below are the same: re-download clean files, use a known-good USB stick, and trigger the reflashing procedure properly.

2) Start clean: re-download and re-copy (no edits)

Download the firmware again (and the bootloader too, if the Prusa page/version you use provides one), then copy the files to your USB drive.
Do not modify the files in any way other than unzipping (no renaming, no editing headers, no repacking), because changed/invalid headers can trigger #17614.
Before unplugging the USB drive from your computer, unmount/eject it cleanly to avoid file corruption that can trigger #17608.

3) Use the “forced reflash” boot sequence

Insert the USB drive into the printer.
Reboot the printer using the reset button directly next to the knob to initiate the flashing procedure.
If the flashing procedure does not start, reboot again with the same reset button and, while the printer is booting, press the rotating knob once.

4) If it still fails: assume the USB stick is the problem

If the issue persists, Prusa notes the USB flash drive itself may be the cause.
Try a different USB drive, format it to FAT32, copy the firmware (and bootloader files, if applicable) again, then repeat the reset/boot procedure above.

5) Practical “good habits” (to prevent repeat failures)

Keep one “firmware-only” USB stick that you use exclusively for updates, and always eject it properly from your OS before removing it.
When you experiment with custom builds, always keep a known-good official firmware package ready so you can get back to a stable baseline quickly.

Developer options when you build the official firmware yourself

If you compile the official Prusa Buddy firmware yourself, you don’t have to go full “custom firmware”. You stay on the official codebase, but you gain a few useful developer options for the XL.

  • You can choose which printers to build for (for example only the XL) and whether you want a debug or a release build. This is done via simple build presets and flags when you call the build script.
  • For the XL, the firmware can also include the small “puppy” firmwares (Dwarf toolhead and Modularbed). When building from source, you can decide whether these puppy firmwares are built and flashed automatically, taken from existing binaries, or skipped while you test changes on the main board.
  • In practice, this means you can do small tweaks (extra logging, minor behavior changes, early experiments) while still keeping all the safety logic and update mechanisms from the original Prusa firmware.

This section is a great place to show a few screenshots of your build configuration, instead of going deep into CMake flags in text.

Showcase of the installation and the developer options

This is what it looks like when you want to flash a custom firmware. Simply select “ignore” here to start the flashing process.

The installation process looks exactly the same as usual.

The firmware version now displays “LOCAL” after it.

Now for the additional features. These are marked in green.

Live Z-adjustment is now possible, even during printing.

There are settings available regarding crash detection.

It is possible to back up the calibrations.

And finally, set up a dry run.

These are all the additional settings I could find.

My ideas for future XL firmware tweaks

Flashing custom builds only makes sense if you have a clear goal. For my own XL, there are a few areas where I would love to explore small, focused firmware changes instead of reinventing everything from scratch.

Developer‑friendly options on the printer
Simple toggles for “verbose mode”, extra status info, or experimental features (behind a developer menu) would make it much easier to test new ideas without maintaining multiple radically different builds.

Better diagnostics and logging
I’d like more detailed logs for toolchanges, docking failures and thermal behavior. That would make it easier to understand rare issues and document them for tutorials and bug reports.

Quality‑of‑life UI tweaks
Small changes like clearer messages or shortcuts to common maintenance actions can improve the experience without touching critical safety logic.

I’m not trying to turn the Prusa XL into a completely different machine. Instead, the goal of my firmware concept is to add a set of focused, XL‑specific tweaks that make real‑world printing and tuning easier, especially around toolchanging and wiping.

In a first step (v1.0), I’m interested in features that give me more direct control over positions and calibration from the printer itself (Advanced options that must first be activated):

  • A configurable pause position (X/Y/Z) that I can adjust mid‑print.
  • Set Individual load/unload positions per tool (T0–T4), so each tool can move to the ideal spot for filament changes.
  • Separate E‑steps per tool, stored in EEPROM, so each toolhead can be calibrated more precisely.
  • A safety toggle for M500 saving, so experimental settings only get written to EEPROM when I explicitly allow it.
  • A Quick‑Wipe button next to Pause, with a few wipe “strength levels” for quick manual recovery during a print.

For later versions (v1.1+), I’d like to experiment with more advanced helpers and stress‑test tools:

  • An advanced parameter page for machine limits and similar settings, guarded by clear warnings.
  • A built‑in toolchanger stress test that runs a scripted sequence of toolchanges (for example 21 loops) from a menu entry.
  • A small PETG E‑steps wizard: extrude 100 mm, weigh the result, let the firmware suggest corrected E‑steps.
  • A tool offset test as a simple comb‑style G‑code routine accessible from the calibration menu.
  • Smarter brush wipes on toolchange or layer change, with a toggle and adjustable “intensity”.

When I have time, I’ll dive into its functions. Not a pro though – any help much appreciated! ❤️ Maybe we could start a joint fork?

Survey

Are you interested in extended Prusa XL firmware features?
Should Prusa add advanced options like the ones mentioned above for power users?
If you had to pick one: what should come first?
Would you use an “Advanced/Experimental” menu if it’s clearly labeled as risky?
Are you willing to break the appendix seal on the board for custom firmware?

Klipper on the Prusa XL

With KlipperXL, there is a community-driven implementation that enables running Klipper on the Prusa XL.

KlipperXL on Github: https://github.com/racoutlaw/KlipperXL/

Technical Approach (as implemented in the project)

  • The XLBuddy mainboard is flashed with a custom Klipper firmware build
  • The Dwarf toolheads remain on their original Prusa firmware
  • Communication with the toolheads is handled via MODBUS
  • Toolchanger functionality is supported
  • The loadcell (nozzle-based probing) is integrated
  • Custom extensions/modules are included specifically for XL hardware
  • Example configurations are provided for different XL variants

Important

  • This is not an official Prusa project
  • It is not part of the main Klipper repository
  • It is community-developed and experimental
  • Flashing is done entirely at your own risk

In an earlier developer blog post about the Prusa XL, Prusa Research stated that they were considering allowing a Klipper firmware option. However, it was clearly mentioned that such an option would not be officially supported. As of now, there is no official Klipper firmware for the Prusa XL provided or supported by Prusa.

I myself haven’t tested Klipper for the XL yet, but I might do so sometime in the future.

Firmware Downloads for Prusa XL

Need reliable Prusa XL firmware? I’ve compiled unmodified official sources myself using the standard process (python utils/build.py --preset xl_release[-boot]) on macOS. These are stock builds from clean GitHub tags v6.2.6 and 6.4.0 final – no changes, just verified convenience binaries.

⚠️ Use at your own risk: Backup settings first. Prusa withdrew 6.4.0 due to homing/crash issues – they recommend 6.2.6 downgrade. >> More on this below.

The following firmware versions can only be installed with a broken appendix seal.

VersionFileSHA256-ChecksumNotes
6.2.6 no bootloaderXL_firmware_6.2.6_no_boot.bbfe204c7069021e9d0fce757dd5b0bd4dea50cc0f4abfde3a78be030d5d103e536Stable, Prusa recommended, with developer options, Breaking the seal is necessary
6.2.6 with bootloader 2.4.1XL_firmware_6.2.6_with_bootloader_2.4.1.bbfd5e3cba20bdea958d5a5927ea9fd1ed816b4acd6326f9ffbf278bf7fb681bc4cStable, Prusa recommended, with Bootlader v2.4.1, with developer options, Breaking the seal is necessary
6.4.0 no bootloaderXL_firmware_6.4.0_no_boot.bbf228377fb3e5af926c666a3614e4742e95ad3b8bb45651098b1145014d64ca81fWith developer options, Breaking the seal is necessary
6.4.0 with bootloader 2.5.0XL_firmware_6.4.0_with_bootloader_2.5.0.bbf9567c538b89cfe14de0f04ca454b543928fc241abf1373a719fc0f75e40cd566With Bootlader v2.5.0, with developer options, Breaking the seal is necessary

Build yourself:


Since Prusa withdrew the final version 6.4.0 for the Prusa XL, and it is therefore no longer officially available for download, I am making it available here. Because it is the original firmware, it is also signed and can therefore be installed without breaking the seal.

However, as I mentioned above, there are reasons why it was withdrawn.

Original signed 6.4.0XL_firmware_6.4.0.bbf4e81a903df35ae2bdb413bc81d5db8859a7711b1d1ae2df336b68fff2027620aOriginal version from Prusa. No need to break the seal.

Why Prusa Withdrew Firmware 6.4.0 for the XL

Prusa released 6.4.0 stable late Nov 2025 with XL features like gearbox alignment calibration, filament change from any tool Tune menu, auto-retract (alpha), lazier homing, and unified chamber filtration.​

They withdrew it only recently in February 2026 due to Phase Stepping failures (noise, layer shifts, tool crashes), homing issues (sled crashes into limits), and new Bootloader 2.5.0 BSODs on startup. Official advice: Downgrade to 6.2.6.

My compiles use 6.2.6 (safe) and archived 6.4.0 source – test responsibly.

Heres a screenshot of the PrusaSlicer profiles changelog

- 💌 -Don’t miss these tips!

We don't send spam! By registering, you agree to receive our email newsletter and agree to our privacy policy.

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Nach oben scrollen