Buddy
This repository includes source code and firmware releases for the Original Prusa 3D printers based on the 32-bit ARM microcontrollers.
The currently supported model is:
- Original Prusa MINI
Getting Started
Requirements
- Python 3.6 or newer (with pip)
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.
- To generate
.bbf
versions of the firmware, use:./utils/build.py --generate-bbf
. - Use
--build-type
to select build configurations to be built (debug
,release
). - Use
--preset
to 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--final
to build a final version of the firmware. - Use
--host-tools
to include host tools in the build (bin2cc
,png2font
, ...) - Find more options using the
--help
flag!
Examples:
Build the firmware for MINI in debug
mode:
python utils/build.py --preset mini --build-type debug
Build final version for all printers and create signed .bbf
versions:
python utils/build.py --final --generate-bbf --signing-key <path-to-ecdsa-private-key>
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
.
Python environment
The build.py
script wants to install some python packages. If you prefer not to have your system modified, it is possible to use virtualenv
or a similar tool.
virtualnev venv
. venv/bin/activate
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.
Formatting
All the source code in this repository is automatically formatted:
- C/C++ files using clang-format,
- Python files using yapf,
- and CMake files using cmake-format.
If you want to contribute, make sure to install pre-commit and then run pre-commit install
within the repository. This makes sure that all your future commits will be formatted appropriately. Our build server automatically rejects improperly formatted pull requests.
Running tests
mkdir build-tests
cd build-tests
cmake ..
make tests
ctest .
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
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).