TLDR - I’ve just driven myself insane trying to fix what I thought was a physical problem with my Z-axis, but it seems to have been solved by switching from the TH3D firmware to the Creality firmware. I’m hoping someone can help me see where I went wrong here, so I can learn from it. Have I missed something obvious?

My printer is a Creality Ender 3 Pro. I have a BLTouch. I recently upgraded to the silent 4.2.7 board and compiled my own firmware using TH3D Unified 2 using their instructions. This is my configuration.h.

This “worked”, but after that upgrade, I had severe print problems. (See the photos below) These are supposed to be 20x20x20 calibration cubes (the big one is 200%). They are significantly taller than they should be. It may be hard to see in the photo, but this is because the Z spacing on the bottom layers seems to be too high. But, at the same point on each print (even the bigger one), the problem seems to just stop - and layer spacing is correct again for the end of the print.

Comparison of multiple calibration cubes

I tried everything to figure out what this was and I was convinced it was a physical problem with my Z-axis. I read lots of questions on here but nothing quite on topic. I printed on different parts of the bed and got the same result. I re-calibrated my Z steps, but these turned out to be pretty much at the firmware default anyway. I tightened every bolt and eccentric nut I could find that related to the X-axis gantry, but nothing made any difference. Same problem, every time.

Out of desperation, I eventually switched to the official Creality firmware for the Ender 3 Pro 4.2.7 board with BLTouch - and the problem was fixed:

Printed calibration cube after firmware change

Does anyone have any ideas about what caused this? Have I overlooked something obvious? I’d ideally like to go back to the TH3D firmware but it’s seemingly not an option.


  • 3
    $\begingroup$ I totally respect the idea behind TH3D software, it is to make flashing firmware easier for a lot of people. But, the problems you experience are one of the many examples that this doesn't work always out of the box, and why I would't recommend using TH3D software, I understand the good intentions from the owner/maintainer (this is not meant as a bash to the developer)! When it doesn't work, the user is left clueless what went wrong. It is far better to use the firmware sources directly from the original repository (no delay in releases) and learn how to configure the firmware using tutorials. $\endgroup$
    – 0scar
    Commented Jul 26, 2021 at 8:00
  • 2
    $\begingroup$ @0scar - You nailed it. This was exactly the problem. I compared the Creality and TH3D firmware settings and TH3D is using M420 S1 Z0.00, but the TH3D firmware seemingly has a default of M420 S0 Z10.00. Sending M420 S1 Z0.00 on TH3D crashes the printer, but M420 Z0 is seemingly enough to fix the issue. I have no idea why this is set to Z10 in the TH3D firmware by default... seems like a bad idea to me. If you want to post this as an answer you can get the points for it! $\endgroup$
    – Lewis
    Commented Jul 26, 2021 at 12:33
  • 1
    $\begingroup$ To correct my comment above for other readers, M420 S1 was crashing my printer as I had no stored compensation matrix at that time (I'd just reset the printer). Like most BLTouch users, I have G29 in my startup G-code which will create a matrix and enable it. So, in this case, simply setting M420 Z0 (followed by M500) fixes my problem entirely, as the fade out seemingly doesn't work well with the BLTouch. I hope that helps someone avoid this! $\endgroup$
    – Lewis
    Commented Jul 26, 2021 at 14:38
  • $\begingroup$ @0scar Bold of you to assume good intentions in TH3D ;) $\endgroup$
    – towe
    Commented Jul 27, 2021 at 5:47

2 Answers 2


Looking at your prints, the problem is possibly related to the fade out height of the BLTouch functionality.

If you look closely at the 20x20x20 mm cube:

  • half the print is fine (top half of the original correct cube)
  • the bottom "half" (not really half as it is stretched) is porous (grey, indicating more space allowed than the correct layer height per layer should be).

If you look closely at the 40x40x40 mm cube:

  • the first "quart" of the 40x40x40 mm is also incorrect (also stretched),
  • the rest, 3/4 of the top of the print is fine (correct layer height).

Your configuration_backend.h config file doesn't look strange, so the underlying problem could well be more complicated.

A possibility is that there is no reference found to the DEFAULT_LEVELING_FADE_HEIGHT in the linked firmware file. A more in depth answer on enabling/setting the fade height is found here.

M420 S1  ; Enable compensation using current grid/mesh
M420 Z10 ; Gradually reduce compensation until Z=10

It is good to have a fade out height, if zero, the imperfections of the bottom travel all the way to the top of the print; the solution is to use bed geometry (M420 S1) and fade out over 10 mm (M420 Z10).

  • $\begingroup$ Just for other people's reference, the "switch" for this (ENABLE_LEVELING_FADE_HEIGHT) and the parameter itself (DEFAULT_LEVELING_FADE_HEIGHT) is found in the Configuration_backend.h of the TH3D firmware (Unified 2 4.2.7 board version) $\endgroup$
    – Lewis
    Commented Jul 26, 2021 at 14:21

If you check TH3D's site, as of January 12, 2022, there's an updated Unified 2 firmware(Unified 2.36a) that is meant to correct this problem.

Announcement is here: Unified 2.36a is now live! | Firmware Update

Release Notes:


  • Disable ABL fade height by default
  • Fix EZBoard V2 DIY Config Driver Type Setting

Other Changes

  • Update URLs in config files to support articles
  • Improve EZABL mount wording for more user clarity

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .