I had the BLTouch (3.1) working with stock firmware on an Ender 3 v2 but wanted to get a 5x5 mesh instead of the 3x3 so I installed the TH3D firmware. With the stock firmware my Z-offset was -2.95 mm.

After installing TH3D firmware, my Z-offset has to be in excess of -6 mm to reach the same nozzle-to-bed height. I've tried setting the Z-offset via LCD and through G-code, saving to EEPROM. I'm having 2 problems with this that I assume are connected:

  1. Z-offset seems to not be applied when setting Z axis position. When I autohome and then set Z axis to 0, even the extended probe from the BLTouch does not touch the bed (it's actually 1-2 mm away from touching). And this is with the Z-offset set to -6 mm.
  2. I tried running a print, which includes an ABL request (G29), the print head crashed into the bed immediately after finishing levelling. My hunch is that when starting to print the -6 mm Z-offset starts being correctly taken into account.

Could this be the result of something I did in the Configuration.h when compiling the firmware?

I made the following changes:


  • Line 24: uncommented #define ENDER3_V2_V422_BOARD
  • Line 43: uncommented #define CUSTOM_PROBE
  • Line 66: changed #define EZABL_POINTS from 3 to 5
  • Line 124: changed #define NOZZLE_TO_PROBE_OFFSET from { 10, 10, 0} to { -44, -6, 0 }
  • Line 233: uncommented #define BLTOUCH
  • Line 235: uncommented #define SERVO0_PIN PB0
  • Line 636: commented out #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
  • Line 636: added #define USE_PROBE_FOR_Z_HOMING

In Configuration_backend.h the only change I made was increasing Z_PROBE_OFFSET_RANGE_MIN from -5 to -20.

  • 1
    $\begingroup$ It could well be a configuration problem, but having no access to the configuration it is impossible to assess if that is the case. You could post a link to your configuration in comments to a file put on PasteBin or your own Github repository fork. Regular users can look into it and copy the relevant parts into the question for you and base their answer on this. Hope this helps! $\endgroup$
    – 0scar
    Mar 5, 2021 at 9:57
  • 2
    $\begingroup$ @0scar I've added the configuration changes I made, confirmed with a diff between the files. Thanks! $\endgroup$
    – Nate Hitze
    Mar 5, 2021 at 15:36
  • 1
    $\begingroup$ You can simply change the dimension of the probe grid in proper Marlin with the "GRID_MAX_POINTS_X" setting. No need to use TH3Ds obsolete copy. $\endgroup$
    – towe
    Mar 8, 2021 at 13:23

3 Answers 3


I'm pretty sure something is wrong with the firmware I downloaded. I flashed the 3/5/21 version of Marlin firmware from https://marlin.crc.id.au/ and it is somehow working better with the LCD firmware (which I got from TH3D), the Z offset is working as it should, and the leveling process has more points and goes faster.

  • $\begingroup$ Please don't forget to mark your answer as the accepted answer (if it is indeed the correct answer). Thanks $\endgroup$
    – Greenonline
    May 11, 2023 at 10:21

A friend and I ran into this problem with TH3D and this was the workaround for our situation. Pretty sure I know what's causing it, but I haven't had the chance to rebuild the firmware yet to test it.

Autohome, update your bed mesh, either through the menu or via the terminal with G28 & G29. Store settings via menu or M500 via terminal.

Reboot/power cycle the printer, autohome/G28, and insert M420 S into your print file G-code after G28.

Let me know if it works.

  • $\begingroup$ Have you found the cause of this issue by chance? I am running into same results with the TH3D firmware and your solution using the M240 S instead of G29 has been my only working solution. $\endgroup$ May 10, 2023 at 17:00

Do you still have this issue? My Ender with a BLTouch won't respect the Z-off set setting in Motion > Control > ZOffset. You can change it to -10 and it will still start printing about 1 cm above the bed.

All of this started to happen after I used Bed Leveling from the prepare menu. To work around the issue, I reset the settings Initialize EPROM in the control menu.

  1. Reset All settings Initialize EPROM
  2. Set the Z-offset (In my case -3.3)
  3. Store settings in the control menu
  4. Switch off the printer (settings won't take effect even if you select to load settings)

Then start printing. This doesn't solve the issue because it defeats the purpose of having a BLTouch in the first place. but at least I'm able to print again.

In a nutshell, avoiding auto bed leveling does the trick (or at least in my case)


You must log in to answer this question.

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