This repository contains the source code and the development versions of the firmware running on the Original Prusa i3 MK3S/MK3/MK2.5S/MK2.5 line of printers.
The latest official builds can be downloaded from Prusa Drivers. Pre-built development releases are also available here.
The firmware for the Original Prusa i3 printers is proudly based on Marlin 1.0.x by Scott Lahteine (@thinkyhead) et al. and is distributed under the terms of the GNU GPL 3 license.
This repository contains development material only!
There are two ways to build Prusa-Firmware on Linux: using CMake (recommended for developers) or with PF-build which is more user-friendly for casual users.
The workflow should be pretty straightforward for anyone with development experience. After installing git and a recent version of python 3 all you have to do is:
# clone the repository
git clone https://github.com/prusa3d/Prusa-Firmware
cd Prusa-Firmware
# automatically setup dependencies
./utils/bootstrap.py
# configure and build
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/AvrGcc.cmake
ninja
Building with cmake requires:
Python >= 3.6 is also required with the following modules:
python3-pyelftools
)python3-polib
)python3-regex
)Additionally gettext
is required for translators.
Assuming a recent Debian/Ubuntu distribution, install the dependencies globally with:
sudo apt-get install cmake ninja python3-pyelftools python3-polib python3-regex gettext
Prusa-Firmware depends on a pinned version of avr-gcc
and the external prusa3dboards
package. These can be setup using ./utils/bootstrap.py
:
# automatically setup dependencies
./utils/bootstrap.py
which will download and unpack them inside the .dependencies
directory. ./utils/bootstrap.py
will also install cmake
, ninja
and the required python packages if missing, although installing those through the system's package manager is usually preferred.
You can then proceed by creating a build directory, configure for AVR and build:
# configure
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/AvrGcc.cmake
# build
ninja
By default all variants are built. There are several ways to restrict the build for development. During configuration you can set:
cmake -DFW_VARIANTS=variant
: comma-separated list of variants to build. This is the file name as present in Firmware/variants
without the final .h
.cmake -DMAIN_LANGUAGES=languages
: comma-separated list of ISO language codes to include as main translations.cmake -DCOMMUNITY_LANGUAGES=languages
: comma-separated list of ISO language codes to include as community translations.When building the following targets are available:
ninja ALL_MULTILANG
: build all multi-language targets (default)ninja ALL_ENGLISH
: build all single-language targetsninja VARIANT_EN-only
: build the single-language version of VARIANT
ninja VARIANT_Multilang
: build the multi-language version of VARIANT
ninja check_lang
: build and check all language translationsninja check_lang_ISO
: build and check all variants with language ISO
ninja check_lang_VARIANT
: build and check all languages for VARIANT
ninja check_lang_VARIANT_ISO
: build and check language ISO
for VARIANT
Automated tests are built with cmake by configuring for the current host:
# clone the repository
git clone https://github.com/prusa3d/Prusa-Firmware
cd Prusa-Firmware
# automatically setup dependencies
./utils/bootstrap.py
# configure and build
mkdir build
cd build
cmake .. -G Ninja
ninja
# run the tests
ctest
PF-build is recommended for users without development experience. Download or clone the repository, then run PF-build and simply follow the instructions:
cd Prusa-Firmware
./PF-build.sh
PF-build currently assumes a Debian/Ubuntu (or derivative) distribution.
TODO
TODO
TODO