Marlin, Ender 3 Pro, BTT SKR 1.4 Turbo with automatic bed levelling using the BLTouch v3.1


The focus of this article is the preparation of the Marlin for use with the Ender 3 Pro and the following configuration: BigTreeTech SKR 1.4 board, TMC2209 drivers, BLTouch.

Important information

There is a newer versions of this article and Marlin configurations available:

Here are some key features/highlights enabled in this custom version of Marlin

  • TMC2209 drivers with Stealth-chop & Hybrid threshold enabled on X, Y, Z axis.
  • BLTouch for ABL Bilinear.
    • Bed levelling is used in addition to the Z-stop switch.
    • Menu for levelling bed corners.
    • Restore bed levelling after G28.
    • Probes bed twice for each point.
  • Restricted movement until axis homed.
  • Emergency stop interrupt commands supported
  • PID Tuning
  • Extruder fan after 50°C
  • Z Safe homing
  • Advanced pause and filament change
  • Plus any changes and bug fixes made available from the Marlin update.

Before you begin this guide assume you have the following equipment otherwise you will need to make adjustments accordingly:

  • 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


I have made my Marlin configurations available for download they feature the same changes mentioned in this article:

Update: 27/06/2010, I have added a second Marlin configuration this one uses “Classic Jerk” instead of “Junction Deviation“. This change is due to a bug with Junction deviation not always behaving as expected; read more about the issue on Github. I’ve had many great prints using Junction Deviation until recently with a specific spherical object that always shifted on the X axis at the same point on 3 separate prints.

Building the new firmware from source

  1. Download and extract official Marlin source.
  2. Download and extract the my device configuration files.
  3. Copy the device configuration overwriting the defaults found in the Marlin source.
  4. Check and prepare your platform.ini.
  5. Compile the source.

If you wish to review the changes manually you need to modify 2 files:

  1. /Marlin/Configuration.h compare with file: Configuration.h (BitBucket)
  2. /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.
  • Require Fade height?
  • PID tuning (recommended).
  • E-Step calibration.

There may be a few other bits and pieces worth reviewing.