prusa3d/Prusa-Firmware-Buddy
prusa3d/Prusa-Firmware-Buddy has 1,634 GitHub stars and 406 forks. GitHot measured 0 stars in 24 hours and +3 in 7 days. Last checked 2026-11-12 22:08 UTC. Last push 2026-11-02.
Firmware for the Original Prusa MINI, Original Prusa MK4, Original Prusa XL and Prusa CORE One 3D printers by Prusa Research.
Measured star growth
- in 24h
- 0
- in 7 days
- +3
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
OriginalBuddy
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:
- Original Prusa MINI/MINI+
- Original Prusa MK3.5
- Original Prusa MK3.9
- Original Prusa MK4
- Original Prusa XL
- Prusa CORE One
Getting Started
Requirements
- Python 3.8 or newer
- system installation of Python's
requestspackage (use either pip or your system package manager)
Cloning this repository
Run git clone https://github.com/prusa3d/Prusa-Firmware-Buddy.git.
Building (on all platforms, without an IDE)
Run python utils/build.py. The binaries are then going to be stored under ./build/products.
- Without any arguments, it will build a release version of the firmware for all supported printers and bootloader settings.
- Use
--build-typeto select build configurations to be built (debug,release). - Use
--presetto select for which printers the firmware should be built. - By default, it will build the firmware in "prerelease mode" set to
beta. You can change the prerelease using--prerelease alpha, or use--finalto build a final version of the firmware. - Use
--host-toolsto include host tools in the build - Find more options using the
--helpflag!
Examples:
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'
Windows 10 troubleshooting
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.
Development
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.
Contributing
If you want to contribute to the codebase, please read the Contribution Guidelines.
XL and Puppies
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)
- The Dwarf & ModularBed firmware will be built from this repo.
- The puppies are going to be flashed on startup by the XLBuddy. The puppies have to be running the Puppy Bootloader.
Use pre-built Dwarf/Modularbed firmware and flash it on startup by xlBuddy
- Specify the location of the .bin file with
DWARF_BINARY_PATH/MODULARBED_BINARY_PATH. - For example
cmake .. --preset xl_release_boot -DDWARF_BINARY_PATH=/Downloads/dwarf-4.4.0-boot.bin- Specify the location of the .bin file with
Do not include any puppy firmware, and do not flash the puppies by XLBuddy.
-DENABLE_PUPPY_BOOTLOAD=NO- With the
ENABLE_PUPPY_BOOTLOADset to false, the project will disable Puppy flashing & interaction with Puppy bootloaders. - It is up to you to flash the correct firmware to the puppies (noboot variant).
- With the
Keep bootloaders but do not write firmware on boot.
-DPUPPY_SKIP_FLASH_FW=YES- With the
PUPPY_SKIP_FLASH_FWset to true, the project will disable Puppy flashing on boot. - You can keep other puppies that are not debugged in the same state as before.
- Use puppy build config with bootloaders (e.g.
xl-dwarf_debug_boot) on one or more puppies. - Recommend breakpoint at the end of
puppy_task_body()to prevent buddy from resetting the puppy immediately when puppy stops on breakpoint.
- With the
See /ProjectOptions.cmake for more information about those cache variables.
Running tests
See the detailed testing guide in our comprehensive testing guide.
Flashing Custom Firmware
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.
Feedback
Credits
License
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).
Explore related projects
ytdl-org/youtube-dl
Command-line program to download videos from YouTube.com and other video sites
141,545 starsexcalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
135,559 starsgodotengine/godot
Godot Engine – Multi-platform 2D and 3D game engine
120,049 starsmrdoob/three.js
JavaScript 3D Library.
118,228 stars