Firmware for the Original Prusa MINI, Original Prusa MK4, Original Prusa XL and Prusa CORE One 3D printers by Prusa Research.
C
1,617
15,819 commits
updated Oct 6, 2026
This repository includes source code and firmware releases for the Original Prusa 3D printers based on the 32-bit ARM microcontrollers.
The currently supported models are:
requests package (use either pip or your system package manager)Run git clone https://github.com/prusa3d/Prusa-Firmware-Buddy.git.
Run python utils/build.py. The binaries are then going to be stored under ./build/products.
--build-type to select build configurations to be built (debug, release).--preset to select for which printers the firmware should be built.beta. You can change the prerelease using --prerelease alpha, or use --final to build a final version of the firmware.--host-tools to include host tools in the build--help flag!Build the firmware for MINI and XL in debug mode:
python utils/build.py --preset mini,xl --build-type debug
Build the firmware for MINI using a custom version of gcc-arm-none-eabi (available in $PATH) and use Make instead of Ninja (not recommended):
python utils/build.py --preset mini --toolchain cmake/AnyGccArmNoneEabi.cmake --generator 'Unix Makefiles'
If you have python installed and in your PATH but still getting cmake error Python3 not found. Try running python and python3 from cmd. If one of it opens Microsoft Store instead of either opening python interpreter or complaining 'python3' is not recognized as an internal or external command, operable program or batch file. Open manage app execution aliases and disable App Installer association with python.exe and python3.exe.
The build process of this project is driven by CMake and build.py is just a high-level wrapper around it. As most modern IDEs support some kind of CMake integration, it should be possible to use almost any editor for development. Below are some documents describing how to setup some popular text editors.
If you want to contribute to the codebase, please read the Contribution Guidelines.
With the XL, the situation gets a bit more complex. The firmware of XLBuddy contains firmwares for the puppies (Dwarf and Modularbed) to flash them when necessary. We support several ways of dealing with those firmwares when developing:
Build Dwarf/Modularbed firmware automatically and flash it on startup by XLBuddy (the default)
Use pre-built Dwarf/Modularbed firmware and flash it on startup by xlBuddy
DWARF_BINARY_PATH/MODULARBED_BINARY_PATH.cmake .. --preset xl_release_boot -DDWARF_BINARY_PATH=/Downloads/dwarf-4.4.0-boot.bin
Do not include any puppy firmware, and do not flash the puppies by XLBuddy.
-DENABLE_PUPPY_BOOTLOAD=NO
ENABLE_PUPPY_BOOTLOAD set to false, the project will disable Puppy flashing & interaction with Puppy bootloaders.Keep bootloaders but do not write firmware on boot.
-DPUPPY_SKIP_FLASH_FW=YES
PUPPY_SKIP_FLASH_FW set to true, the project will disable Puppy flashing on boot.xl-dwarf_debug_boot) on one or more puppies.puppy_task_body() to prevent buddy from resetting the puppy immediately when puppy stops on breakpoint.See /ProjectOptions.cmake for more information about those cache variables.
See the detailed testing guide in our comprehensive testing guide.
To install custom firmware, you have to break the appendix on the board. Learn how to in the following article https://help.prusa3d.com/article/zoiw36imrs-flashing-custom-firmware.
The firmware source code is licensed under the GNU General Public License v3.0 and the graphics and design are licensed under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). Fonts are licensed under different license (see LICENSE).
3,417 followers · starred May 2024
692 followers · starred Dec 2025
243 followers · starred Aug 2026
253 followers · starred Sep 2023
Firmware for the Original Prusa MINI, Original Prusa MK4, Original Prusa XL and Prusa CORE One 3D printers by Prusa Research.
C
1,617
15,819 commits
updated Oct 6, 2026
This repository includes source code and firmware releases for the Original Prusa 3D printers based on the 32-bit ARM microcontrollers.
The currently supported models are:
requests package (use either pip or your system package manager)Run git clone https://github.com/prusa3d/Prusa-Firmware-Buddy.git.
Run python utils/build.py. The binaries are then going to be stored under ./build/products.
--build-type to select build configurations to be built (debug, release).--preset to select for which printers the firmware should be built.beta. You can change the prerelease using --prerelease alpha, or use --final to build a final version of the firmware.--host-tools to include host tools in the build--help flag!Build the firmware for MINI and XL in debug mode:
python utils/build.py --preset mini,xl --build-type debug
Build the firmware for MINI using a custom version of gcc-arm-none-eabi (available in $PATH) and use Make instead of Ninja (not recommended):
python utils/build.py --preset mini --toolchain cmake/AnyGccArmNoneEabi.cmake --generator 'Unix Makefiles'
If you have python installed and in your PATH but still getting cmake error Python3 not found. Try running python and python3 from cmd. If one of it opens Microsoft Store instead of either opening python interpreter or complaining 'python3' is not recognized as an internal or external command, operable program or batch file. Open manage app execution aliases and disable App Installer association with python.exe and python3.exe.
The build process of this project is driven by CMake and build.py is just a high-level wrapper around it. As most modern IDEs support some kind of CMake integration, it should be possible to use almost any editor for development. Below are some documents describing how to setup some popular text editors.
If you want to contribute to the codebase, please read the Contribution Guidelines.
With the XL, the situation gets a bit more complex. The firmware of XLBuddy contains firmwares for the puppies (Dwarf and Modularbed) to flash them when necessary. We support several ways of dealing with those firmwares when developing:
Build Dwarf/Modularbed firmware automatically and flash it on startup by XLBuddy (the default)
Use pre-built Dwarf/Modularbed firmware and flash it on startup by xlBuddy
DWARF_BINARY_PATH/MODULARBED_BINARY_PATH.cmake .. --preset xl_release_boot -DDWARF_BINARY_PATH=/Downloads/dwarf-4.4.0-boot.bin
Do not include any puppy firmware, and do not flash the puppies by XLBuddy.
-DENABLE_PUPPY_BOOTLOAD=NO
ENABLE_PUPPY_BOOTLOAD set to false, the project will disable Puppy flashing & interaction with Puppy bootloaders.Keep bootloaders but do not write firmware on boot.
-DPUPPY_SKIP_FLASH_FW=YES
PUPPY_SKIP_FLASH_FW set to true, the project will disable Puppy flashing on boot.xl-dwarf_debug_boot) on one or more puppies.puppy_task_body() to prevent buddy from resetting the puppy immediately when puppy stops on breakpoint.See /ProjectOptions.cmake for more information about those cache variables.
See the detailed testing guide in our comprehensive testing guide.
To install custom firmware, you have to break the appendix on the board. Learn how to in the following article https://help.prusa3d.com/article/zoiw36imrs-flashing-custom-firmware.
The firmware source code is licensed under the GNU General Public License v3.0 and the graphics and design are licensed under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). Fonts are licensed under different license (see LICENSE).
3,417 followers · starred May 2024
692 followers · starred Dec 2025
243 followers · starred Aug 2026
253 followers · starred Sep 2023