This article describes how to compile Marlin 2.0.5.4 released 9th July 2020 for use with the Ender 3 Pro and a custom hardware configuration comprising of the following components: BigTreeTech SKR 1.4 board, TMC2209 drivers, BLTouch. The BBT SKR 1.4 board is replacing the Creality Melzi board found in the stock printer.
Table of Contents
Important information
There is a newer versions of this article and Marlin configurations available:
- Marlin v2.0.7.2 – This article posted 28th October 2020
- Marlin v2.0.7 – Posted 30th September 2020
- Marlin v2.0.6.1 – Posted 9th August 2020
- Marlin v2.0.6 – Posted 28th July 2020
- Marlin v2.0.5.4 – This article; posted 13th July 2020
This article won’t be covering the physical assembly of the SKR 1.4 Turbo board instead this article looks at preparing Marlin from source for use on the board. A word of caution the stock case will prove to be a tight fit* and will need some sort of mounting bracket at a minimum to convert the existing mounting holes matching the Melzi board to those found on BBT SKR 1.4 board.
* The heat sinks on the TMC2209’s are tall and when coupled with the SKR board I think it unlikely there will be enough clearance using the stock case.
Here are some key features/highlights enabled in this custom version of Marlin 2.0.5.4:
- TMC2209 drivers with Stealth-chop & Hybrid threshold enabled on X, Y, Z axis.
- BLTouch for ABL Bilinear.
- Bed levelling is used in addition to a Z-stop switch.
- Menu for levelling bed corners.
- Restore bed levelling after G28.
- Probes bed once at each point.
- Movement on any axis is restricted until axis’s are homed.
- Emergency stop interrupt commands supported
- PID Tuning
- Extruder fan after 50°C
- Z Safe homing
- Advanced pause and filament change
- Classic Jerk
It’s assumed that you have the following equipment:
- BTT SKR 1.4 Board.
- BLTouch v3.1 (other versions of the BLTouch will work but you will need to adjust settings related to it and check your wiring).
- Ender 3 or 3 Pro
Preparation
I have made my Marlin configurations available for download they feature the same changes mentioned within this article: https://gitlab.com/oddineers-public/marlin-ender-3/-/tree/Marlin-2.0.5.4/
If you wish to build your own variant from source; start by downloading the relevant Marlin releases used in this article from Marlin 2.0.5.4 branch:
- Marlin 2.0.5.4: https://github.com/MarlinFirmware/Marlin/releases/tag/2.0.5.4
- Marlin 2.0.5 stock device configuration for the Ender 3: https://github.com/MarlinFirmware/Configurations/tree/release-2.0.5/config/examples/Creality/Ender-3
Once you have downloaded the sources above you will need to extract them to an accessible location, use the following steps as a reference:
- Extract Marlin 2.0.5.4
- Extract the 4 files from the Ender 3 device configuration page and extract and copy the 4 files to the location where you extracted Marlin 2.0.5.4 sources.
PlatformIO Installation
I suggest VSCode as a quick method for compiling Marlin 2.0.x from source.
- Download VSCode and install.
- Open VSCode > Extension Manager
- Search for and Install official PlatformIO IDE extension.
Alternatively if you already have a Python environment configured you can utilise pip to install PlatformIO:
pip install -U platformio
Docs: https://docs.platformio.org/en/latest/core.html#piocore
Firmware configuration modifications
Next we will be modifying 2 specific files from the release to customise the firmware for our requirement. For the Ender 3 Pro I made the following edits to files:
/Marlin/Configuration.h
/Marlin/Configuration_adv.h
If you wish to review the changes manually you need to modify 2 files:
/Marlin/Configuration.h
compare with file: Configuration.h (BitBucket)/Marlin/Configuration_adv.h
compare with file: Configuration_adv.h (BitBucket)
When using my device configurations you should take care to check the following are suited to your setup/configuration:
- Probe offsets for X, Y, Z (see below).
- Require Fade height?
- PID tuning (recommended).
- E-Step calibration.
Important note on Probe offsets
Keep in mind that in using this; you will likely need to adjust your X, Y, Z offset settings specific to your setup; note in my hardware configuration. The change is simple and the key settings to look for is NOZZLE_TO_PROBE_OFFSET
. Once found, this branch of Marlin requires the offsets to be defined as an array: {x, y, z}
.
Updating Probe offset values manually using G-code M851
In the following examples I show the offset values I would use after flashing a new firmware these are sent using G-code. You will need to adjust these offsets to accommodate your own requirements.
Set the Z offset for the BLTouch by sending G-code:
M851 Z-1.46
Set the X and Y distance (probe left front of nozzle) by sending G-code:
M851 X-46.00 Y-16.00
Save the setting to the EEPROM by sending G-code:
M500
Setting Fade Height manually via G-code M420
Set the Fade Height with G-Code:
M420 Z10