skewed screenshot fo the motherboard definition with Marlin 2 3d printer firmware for the bigtreetech SKR V1.4 defined as BOARD_BTT_SKR_V1_4

SKR V1.4 Configuration adv Marlin 2 Setup Part 3

Next step in setting up the SKR V1.4 with Marlin 2 covers the Configuration adv file. Continuing to look at relevant settings for the SKR V1.4 and Turbo boards.

SKR V1.4 Marlin 2 Setup Guide
Let’s Get Started

@section tmc_smart


screenshot of marlin 2 3d printer firmware configuration_adv.h file using platformio via Microsoft Visual Code

While you may be feeling fatigued from dealing with the Configuration.h setup. However you will be pleased to know there isn’t much more to change specifically for the SKR V1.4. So make yourself a drink, recuperate and when ready delve into the Configuration_adv file and continue with the SKR V1.4 Marlin 2 setup guide.

@section homing

Firstly for those using the BLTouch sensor types, there are a few additional settings we need to apply. Moreover probes need a little time to ensure they have received the signal before deploying. Because of this the default is 500 and can be left at this. However for genuine Antclabs I found 200 ms is perfect for the BLTouch V3 or later. While on a clone I needed 750 ms in order to function correctly. So search and alter the BLTOUCH_DELAY option accordingly. Furthermore the below example is for a genuine Antclabs BLTouch V3.

screenshot of Marlin 2 firmware setting the BLTouch servo delay. In this image the delay has been set to 200 which works great for BLTouch versions 3 or higher. #define BLTOUCH_DELAY 200

#define BLTOUCH_DELAY 200

Now the Bltouch version 3 or later performs better with a 5V power supply.

BUT before you enable this option, check, check and check again that your board supports 5V on the pin you plugged the three cables into.

Moreover this is usually marked up as the Servo connector.

Once confirmed and you are using a Bltouch V3 or higher, then enable the 5V mode.


If however you are using a lower version of the Bltouch or you are not sure leave the 5V mode disabled.


Ordinarily this next option is usually used for Delta style 3D printers, however the BLTouch versions 3 or higher seem to perform more reliably with the High Speed option enabled.


@section lcd

screenshot of Marlin 2 firmware setting which SD card slot to use on the printer. Some like the Creality Ender 3 only have one so #define SDCARD_CONNECTION ONBOARD

While in the Configuration.h we enabled the SD card support for the LCD. However many setups have multiple SD card slots. So we need to tell Marlin which one we want to use for the everyday printing.

By default it will use the one detailed within the 3D printer boards pins file, but we can override this here. So find SDCARD_CONNECTION option and change this to your preference, personally I prefer using the LCD’s memory card slot for ease.


However the default Creality LCD’s don’t have any SD slots. So you will want to to set this to the onboard SD card slot.



screenshot of marlin 2 firmware baby stepping options. #define BABYSTEPPING

Another important step in editing the Configuration adv for the SKR V1.4 is a critical part of bed levelling. Moreover being able to adjust the height of the nozzle from the bed, in small increments. Without a doubt this option helps to get that perfect first layer, and Marlin refers to this as Baby Stepping. So let’s find and enable the BABYSTEPPING option.


Undoubtedly there are a few good options to enable within the baby stepping configuration.

Firstly while not an option that many will find a use for. However I do, and it enables adjustments of the baby stepping without having to home first. So this option is a personal choice.


Without a doubt we want to be able to quickly get to the baby stepping option. So we want to enable DOUBLECLICK_FOR_Z_BABYSTEPPING. Once enabled, access is fire quickly pushing the LCD button in twice in quick succession. Now we can even use this option while the printer is printing, if you find the 1st layer height is off slightly, you can adjust accordingly.


Additionally we want to be able to adjust the baby stepping wether the 3D printer is moving or not. So we want to be able to always access the baby stepping mode.



screenshot of marlin 2 firmware baby stepping options. This image shows the M851 Z nozzle height combined with baby steeping. screenshot of marlin 2 firmware baby stepping options. #define BABYSTEP_ZPROBE_OFFSET

One of the most important and critical options for good automatic bed levelling is the ability to combine the baby step movements with the initial Z probe height (M851).


Finally one nice option within the BABYSTEP_ZPROBE_OFFSET, is to enable a graphical overlay displayed on the LCD when baby stepping is in use. Moreover this make it clearer to understand the current position and which way to turn the rotary knob on the LCD.



screenshot of Marlin 2 firmware showing the G29 retry and recover option enabled. This make the printer start again if the probe fails while auto bed levelling. Furthermore the amount of max retries can be altered 4 is a good number. #define G29_RETRY_AND_RECOVER #define G29_MAX_RETRIES 4

While we enabled the RESTORE_LEVELING_AFTER_G28 from within the Configuration file. However within the Configuration adv we can fine tune the settings for the SKR V1.4, to help combat automatic bed levelling failures. Furthermore a good option to enable for bed levelling, is the retry and recovery option. Because if the automatic bed levelling fails, it will restart itself and not wait for user input. So search for and enable the G29_RETRY_AND_RECOVER option.


Furthermore we can tell Marlin and in turn the printer, how many times we want to re-try before completely failing. Furthermore I have found even with the most unreliable of probes that it normally achieves the bed levelling after failing 3 time. So I tend to setup the amount of retries to 4.

#define G29_MAX_RETRIES 4

@section tmc_smart


For those using TMC2208’s and TMC2209’s the HAS_TRINAMIC_CONFIG is where the drivers current and steps are setup. Additionally unless the best current for the stepper drivers is known, a value of 650 mA is a good place to start. Furthermore if no missed steps are experienced, then keep lowering the current to the stepper drivers until missed steps are introduced. Then increase the current by 5 or 10 mA to give a bit of leeway. Moreover it is better to run any stepper driver with a lower current to prevent heating issues effecting both the stepper driver and the stepper motor. However as previously mentioned the current still needs to be strong enough so that missed steps are not occurring. While ensuring the stepper drivers themselves have active fan cooling.


screenshot of Marlin 2 3d printer firmware showing the trinamic stepper motor steps and current options within Configuration_adv.h. In this example image the stepper motor current for the X axis is set to 650 mAh. #define X_CURRENT 650

While configuring the Configuration adv and in turn the SKR V1.4, it is best to leave the micro steps at 16, at least until everything else is working correctly. Especially as the Trinamic drivers will interpolate up to 256 steps anyway, and with each manual increment of the micro steps, some stepper motor torque is lost.

Nonetheless in the below example the current for the TMC2208 or TMC2209 driver has been set to 650 mA, and the micro steps left at the default value of 16.

#define X_CURRENT 650 // (mA) RMS current
#define X_MICROSTEPS 16 // 0..256
#define X_RSENSE 0.11
#define X_CHAIN_POS -1

Without a doubt it is important to remember to save your changes to the SKR V1.4’s Configuration_adv file.

Mac – Press the CMD (⌘) and the S key at the same time.
PC – Press the Ctrl and the S key at the same time.

Congratulations that is the basic setup done in the Configuration_adv.h for using the SKR V1.4 and the one step nearer to the end of the SKR V1.4 Marlin 2 setup guide. While there are other settings that need changing within the Configuration_adv these are non-specific to the SKR V1.4 and tend to be machine specific or personal preference.


screenshot of Marlin 2 firmware showing the stealth chop option for trinamic enabled on X, Y, Z, and extruder. For example #define STEALTHCHOP_XY #define STEALTHCHOP_Z #define STEALTHCHOP_E

While enabled by default, however in case of future changes I thought it prudent to mention StealthChop™. Without a doubt StealthChop™is an important option to have enabled for TMC drivers. Moreover it allows the TMC stepper drivers to transition from silent mode (StealthChop™) to a less quieter but more powerful mode (SpreadCycle™), ideal for printing at faster speeds. Furthermore when the print slows down, the stepper drivers will change back into the quieter StealthChop™ mode automatically.



screenshot of Marlin 2 firmware and the chopper timing voltage used to control trinamic stepper drivers.In the example image the voltage is set to 24V for use with a Creality Ender 3 Pro. #define CHOPPER_TIMING CHOPPER_DEFAULT_24V

Because of the default Chopper timing used for SpreadCycle™ is set to 12V, this may need changing. Moreover for those using different power supplies, this will need to be altered to get the best result from using the SpreadCycle™ functionality. Furthermore in the example below the 24V default is used which is perfect for the Creality Ender 3 Pro or AM8’s printers that are using 24V power supplies.



screenshoot of Marlin 2 firmware enabling the monitoring of stepper drivers. This is enabled by #define MONITOR_DRIVER_STATUS

Without a doubt keeping an eye on the stepper drivers for issue such as over heating, and status reports is a good thing. Furthermore by enabling this option, if the TMC driver has an over heating issue, it will drop the current by 50 mA as default, to try and overcome the issue. So let’s enable the MONITOR_DRIVER_STATUS as shown in the example below.

#define CURRENT_STEP_DOWN 50 // [mA]


screenshot of Marlin 2 firmware showing the Hybrid threshold used with stealth chip trinamic drivers. This is at what speed the stepper drivers change from being quiet to slightly more noisy but with more torque. For example #define X_HYBRID_THRESHOLD 100 this will become more noisy when printing at higher then 100 mm/s

So what is the Hybrid Threshold ? While enabling the StealthChop™ allows the TMC driver to alternate between the two modes, the Hybrid Threshold determines at what speed the drivers switch between the modes. For example a threshold of 100 mm/s will cause the TMC drivers to go into the more powerful SpreadCycle™ mode, when the movement reaches 100 mm/s. Furthermore when the speed lowers to below 100 mm/s it will drop back to the silent StealthChop™ mode.

While the threshold for the X, and Y axis is good. However I find the Z is too low and I prefer a setting of 15 mm/s. Furthermore for the Extruder I prefer a threshold of 50 mm/s over the default 30 mm/s. Nonetheless start with the defaults, and if you find them a little too noisy, then adjust to suit your needs.


#define X_HYBRID_THRESHOLD 100 // [mm/s]


screenshot on the TMC debugging option with Marlin 2 firmware. Handy for finding troublesome stepper drivers when expiring TMC connection errors. #define TMC_DEBUG

While disabled by default, the TMC_DEBUG option allows the debugging command to be sent for use with the drivers. Furthermore it is a prerequisite of the MONITOR_DRIVER_STATUS option. Because of this, it needs to be enabled for the SKR V1.4 within the Configuration adv file.

#define TMC_DEBUG


screenshot on the pins debugging option with Marlin 2 firmware. Handy for finding troublesome end stop switches or probes. #define PINS_DEBUGGING

While the stepper drivers can be debugged, so too can switch and probe pins. Moreover you can test wether or not a switch is working correctly by sending the M43 command. This is particularly handy for troublesome switches and probes. Furthermore this gives a clear indication if the pins need inverting within the Configuration file.


SKR V1.4 Configuration_adv File Completed

Congratulations, that is the basic setup done in the Configuration adv file for using the SKR V1.4 complete. While there are other settings that may need changing within Configuration_adv, these are non-specific to the SKR V1.4 and tend to be machine specific.

Nonetheless the next step of configuring the SKR V1.4 is a few lines in the pins_BTT_SKR_V1_4.h file, for those wishing to use the SD Card EEPROM emulation, or are using Marlin firmware version under

Without a doubt it is important that you remember to save your changes.

Mac – Press the CMD (⌘) and the S key at the same time.
PC – Press the Ctrl and the S key at the same time.


While not necessary for everyone, those using a probe or BLTouch with Marlin versions under need to change a few lines to make the probe work with the Z_Min switch. Moreover the pins_BTT_SKR_V1_4.h file is found in the directory listed below, and the same file is used for both the SKR V1.4 and the SKR V1.4 Turbo for pin referencing.


screenshot of enabling the SD card EEPROM emulation within Marlin 2 3d printer firmware. #define SDCARD_EEPROM_EMULATION

Firstly for those wishing to use SD EEPROM emulation as discussed within the SKR V1.4 Configuration.h Marlin 2 Setup Part 2 guide. The flash emulation needs to be disable and then enable the SD card emulation as shown in the example below.


screenshot of Marlin 2 3d printer firmware disabling the Z_MIN_PROBE_PIN option within the pins_BTT_SKR_V1_4.h file. //#define Z_MIN_PROBE_PIN P0_10

While those who are using the Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN option we need to disablethe options that reference to the Z_MIN_PROBE_PIN. Furthermore search for the Z_MIN_PROBE_PIN option and disable the options as shown below.

//#ifndef Z_MIN_PROBE_PIN
//#define Z_MIN_PROBE_PIN P0_10

Congratulations, that is the basic setup complete for setting up and installing Marlin 2 on the SKR V1.4 or SKR V1.4 Turbo boards. Once again I hope the SKR V1.4 Marlin 2 Setup Guide was useful, all the very best.

If you found this guide useful, please consider a donation to help keep the Make ‘N’ Print website running. For further information please have a look at our support us page

Thank You

© 2019-2020 Copyright - All Rights Reserved.