This article describes how to compile Marlin 2.0.6 released 27th 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
This article doesn’t cover the physical assembly of the SKR 1.4 Turbo board instead focusing on preparing Marlin from source for use on the SKR 1.4 board. A word of caution the stock case will prove to be a tight fit; the heat-sinks on the TMC2209’s are tall and when coupled with the SKR board won’t have enough clearance in the stock case.
Important information
There are newer versions of this article and Marlin configurations available:
- Marlin v2.0.8.2 – Posted 13th July 2021
- Marlin v2.0.8 – Posted 16th May 2021
- Marlin v2.0.7.2 – 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 – This article posted 28th July 2020
Key Features
Here are some highlights on key features enabled in this custom version of Marlin 2.0.6:
- 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
Read more on changes in the official Marlin 2.0.6 change log.
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 Pro or 3.
Preparation
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 the official PlatformIO IDE extension.
Firmware sources
I have made my Marlin configurations available for download they feature the same changes mentioned within this article; if you use my configuration you will need to review your Probe offsets:
- Marlin 2.0.6 – BTT SKR1.4 and Ender 3: https://gitlab.com/oddineers-public/marlin-ender-3/-/tree/Marlin-2.0.6/
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.6 branch:
- Marlin 2.0.6: https://github.com/MarlinFirmware/Marlin/releases/tag/2.0.6
- Marlin 2.0.6 stock device configuration for the Ender 3: https://github.com/MarlinFirmware/Configurations/tree/release-2.0.6/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.6 sources
- If you used my custom configurations download the 2 configuration files and copy them to the
Marlin
directory contained within the extracted Marlin 2.0.6 sources. - If you use the stock device configurations download the Ender 3 device configuration page and extract and copy the 4 files to the
Marlin
directory contained within the extracted Marlin 2.0.6 sources.
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
Depending upon whether you used my configurations or the stock configurations will determine if you need to merge the changes required to support the new hardware:
- Compare file:
/Marlin/Configuration.h
with custom file: Configuration.h (BitBucket) - Compare file:
/Marlin/Configuration_adv.h
with custom 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 (important; 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. The change is simple and the key settings to look for is NOZZLE_TO_PROBE_OFFSET
if you wish to make the change in source. Once found, this branch of Marlin requires the offsets to be defined as an array: {x, y, z}
.
The alternative is updating the probe offset values after the new firmware has been installed.
Updating Probe offset values manually using G-code M851
The following example shows the G-Code I would use to set the offset values after flashing a new firmware. 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
Great post. Very helpful.
regards,
Griffin
What a post! This is so chock full of useful information I can not wait to dig deep and start utilizing the resources you have given me.
Best regards,
Thomassen Raahauge