Using TH3D firmware with some small changes to allow manual mesh levelling and to increase the serial baud rate, neither of which are active when the error presented.

When auto home is used either through the LCD or by directly pushing a command to the printer it (correctly) says that x=0, y=0 but is incessant that z=0.3. When measuring with a feeler guage it turns out it is correct on what the Z value is, which would be fine if it wasnt for the fact it refuses to go lower than its percieved Z=0.3, even when I intentionally screw up the homing so that the endstop does not trigger at that height.

I've tried setting a z offset both through serial connection and through the LCD and it echos them back and appears to listen to the changes in that the nozzle distance changes but still the printer assumes that when the endstop is triggered Z=0.3, which makes absolutely no sense to me.

Any help would be appreciated


1 Answer 1


The issue with the TH3D firmware I'm using (the latest available for the Melzi ender 3 as of now) is I could not find any values for the minimum Z value, this was because it is not explicitly defined in the configs by default.

Digging around some borderline prehistoric docs and forum posts I found to fix this it needs defining in the configuration_backend.h (as far as I can tell - might also function in other config files).

#define Z_MIN_POS 0

My current assumption was by not defining this marlin was either assuming some incorrect default or the printer was assuming some long past set value and making it impossible to change this default through a serial connection without updating the firmware. (again this is a guess - it may be possible)

This can also obviously be used to set any Z minimum e.g. for a bed that is higher than it's endstops.


You must log in to answer this question.

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