After trying to solve this for the whole weekend I've run out of ideas.

I've fitted an BLTouch to my Ender-3 with an SKR mini e3 V2.0 board, firmware is Marlin 2.0.

My issue is the following: when I do autohome (G28) it uses the Z-Probe (BLTouch) to home (this is expected). I then set Z Probe offset to 0 (using M851 Z0) and move Z down until it the nozzle touches a piece of paper.
I then set the Probe Z offset to whatever value Z is at (M851 Z-4.10), save the settings to EEPROM and restart the machine. When doing another G28 and moving Z to 0 afterwards the distance is perfectly the same. This is repeatable.
However when I do G29 it measures the bed to be sitting around -1.9 mm, therefore moving Z to 0 will crash the nozzle to the bed. I can change my Probe Z offset have this fitting (M851 Z-2.20), however then the nozzle sits ~2 mm above the bed when doing another G28 with "Bed Leveling" disabled.

All of this is perfectly repeatable, so I think my I've got something off in my Marlin configuration, but can't find anything wrong.

What I've tried so far:

  • Setting the Z offset as default in config -> this yields the same result as saving it to EEPROM
  • Reflashing the firmware and resetting the EEPROM -> this didn't change anything
  • Connecting the probe as Z-Endstop and as Z-Probe -> after matching the configuration (setting/unsetting Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN) it just gave the same result.

Did anyone encounter this issue before or can give me any idea how to fix this? Any help would be appreciated.

EDIT: I've just flashed the precompiled stock firmware from the BTT Github and it works. So im quite sure i've got something wrong in my config. But since I can't find the configuration.h for that .bin file, I can't realy compare both

  • $\begingroup$ Hi welcome to 3DPrinting.SE! Just out of curiosity, how did you define NOZZLE_TO_PROBE_OFFSET? Note that you need to autohome G28 after you set M851 Z0. $\endgroup$
    – 0scar
    Commented Jun 1, 2020 at 19:16
  • $\begingroup$ I've tried using #define NOZZLE_TO_PROBE_OFFSET { -42, -6, 0 }, and #define NOZZLE_TO_PROBE_OFFSET { -42, -6, -2.20 } but this value should be overwritten with M851 right? $\endgroup$ Commented Jun 3, 2020 at 14:33
  • $\begingroup$ For your information, if you don't use @[username] the commenter doesn't get pinged. Comments under the question will always ping the question owner! $\endgroup$
    – 0scar
    Commented Jun 4, 2020 at 7:25
  • $\begingroup$ Better to leave the Z offset to 0, then there is no question whether is is overwritten or not. Note that -1.9 - 2.2 equals -4.1, so this might be the cause. Furthermore, a BLTouch doesn't need to have such a large offset, you can place the sensor a little higher. My values are in between 1 - 2 mm. Please add a photo of the sensor in relation to the nozzle. $\endgroup$
    – 0scar
    Commented Jun 4, 2020 at 7:32
  • $\begingroup$ @0scar thanks for your help, I finally figured it out. The issue was that i set Z_MIN_POS to -2 to be able to measure the offset. (I believe having read doing that somewhere, but cant find it now) after setting that back to 0 and it works now. I guess that the 2mm were added somehow, but I can't understand how that this is expected behavior. $\endgroup$ Commented Jun 5, 2020 at 12:27

1 Answer 1


I'm answering my own question here.

The Issue was that I set Z_MIN_POS to -2.0 I guess these 2 mm were subtracted from G28 but not from G29.

I don't know wether this is expected behaviour but changing Z_MIN_POS back to 0 fixed the issue for me.


You must log in to answer this question.

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