126 lines
4.4 KiB
Markdown
126 lines
4.4 KiB
Markdown
# Prusa Firmware MK3
|
|
|
|
This repository contains the source code and the development versions of the firmware running on the [Original Prusa i3](https://prusa3d.com/) MK3S/MK3/MK2.5S/MK2.5 line of printers.
|
|
|
|
The latest official builds can be downloaded from [Prusa Drivers](https://www.prusa3d.com/drivers/). Pre-built development releases are also [available here](https://github.com/prusa3d/Prusa-Firmware/releases).
|
|
|
|
The firmware for the Original Prusa i3 printers is proudly based on [Marlin 1.0.x](https://github.com/MarlinFirmware/Marlin/) by Scott Lahteine (@thinkyhead) et al. and is distributed under the terms of the [GNU GPL 3 license](LICENSE).
|
|
|
|
This repository contains _development material only!_
|
|
|
|
|
|
# Build
|
|
## Linux
|
|
There are two ways to build Prusa-Firmware on Linux: using [CMake](#cmake) (recommended for developers) or with [PF-build](#pf-build) which is more user-friendly for casual users.
|
|
|
|
### CMake
|
|
#### Quick-start
|
|
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
|
|
|
|
|
|
#### Detailed CMake guide
|
|
Building with cmake requires:
|
|
|
|
- cmake >= 3.22.5
|
|
- ninja >= 1.10.2 (optional, but recommended)
|
|
|
|
Python >= 3.6 is also required with the following modules:
|
|
|
|
- pyelftools (package `python3-pyelftools`)
|
|
- polib (package `python3-polib`)
|
|
- regex (package `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 is 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 targets
|
|
- `ninja 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 translations
|
|
- `ninja 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
|
|
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
|
|
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.
|
|
|
|
|
|
## Windows
|
|
### VSCode
|
|
TODO
|
|
|
|
### Arduino (Legacy)
|
|
TODO
|
|
|
|
### PF-build with WSL
|
|
TODO
|