Ender 3: My Auto Home is off the plate. Here’s Why.

Creality 4.3 Inch Touch Screen Kit, Full Color for Ender-3 V2
(Click image for Amazon link)

Auto home on a Creality Ender 3 (and presumably all other 3D printers) moves the bed and the extrusion nozzle into a default “zero” position. In essence the bed and the extrusion nozzle are moved so they hit the end stop microswitches which signal to the controller board where the bed and nozzle are.

Mostly people assume that this is 0,0,0. In fact that is what it is set to in the factory defaults for the Ender 3. But if you look at the bed of an Ender 3 after it has been auto homed you will find that the nozzle is actually off the bed by about 5mm. It is not in the bottom left hand corner of the plate as you would expect.

The consequence of this is that if you try and use the full surface area of the plate you will be off center. In the worst case you may actually extrude plastic into thin air. As most projects are small compared to the bed size a small offset in the center of the plate is irrelevant. But still, it is an annoyance.


It is though easy to fix. Without storing the setting in eeprom you will have to repeat it after every power cycle. But you can use Pronterface (or similar) to make it permanent across power cycles.

Here’s what you have to do.

Set Home Offsets
Creality BL touch and motherboard v4.2.7 s/w
$89.99 !!
Creality Ender 3 / Pro / V2 3.1 BL Touch + 4.2.7 32Bit Silent Board and accessories(Click image for Amazon stockist)

Power up the Ender 3.

Use the little GUI to auto-home. I.e. “Prepare->Auto home”.

Notice that after the auto-homing the extruder is off the bed y-axis by about 5mm.

Now from the on-board GUI select “Prepare→Move axis→Move Y”. Then select 1mm increments. Turn the knob and nudge the nozzle along the Y axis until it is just on the plate. Repeat with the X axis if you have to (though on mine the auto home X location was perfect.)

When it is in the right position select “Prepare→Set home offsets” Click the knob. The machine will double beep.

Now when you enter G code to go to 0,0 it will go to the new position. If you auto home now the display will show (in my case ) the Y axis location as -5

That’s it. Unless you want to make it permanent that is (which you probably do). At the moment if you turn the machine off the home offset will revert back to the auto-home position. To set it in stone you need to use Pronterface (below).

Just as an aside: As well as getting the x,y position right, if you want to reduce the nausea associated with getting the bed level then have a look at getting a CR Touch System. Easy to use and install. This supplier has a 4.3* rating on Amazon. Saves time as well as angst! If you have an old 8 bit motherboard you may well need a new 32 bit 4.2.7 board as well. See the side advert above under the “Home Offsets” title, it has both.

Make it permanent with Pronterface

To make it permanent you need to attach Pronterface via USB. (see this post on how to get Pronterface attached through USB to the Ender 3 from an Ubuntu 18.04 set-up).

In the bottom right corner of Pronterface is a box in which you can enter G code.

Using this box first of all check the home position is set as you want. Use this G code


This prints out current settings. Here is the output on my machine before and after zeroing the home position. Look for “Home offset about 8 lines up from the bottom.

To make this permanent we need to flash to the on-board eeprom. Do this with the M500 G-code. It has no parameters. So just enter:


For me this command never returned. But did not block further commands and seemed to work OK.

Now when you enter G1 X0 Y0 you will go to the corner of the plate rather than the off-plate position dictated by auto home. And you won’t lose the setting over a power cycle.

Remember though to use this constructively you will need to add it after auto-homing in your code like this:

G1 X0 Y0

0 thoughts on “Ender 3: My Auto Home is off the plate. Here’s Why.

  • Have tried this a billion times since a firmware upgrade. I get it in the correct position then store it in the set home defaults button and the nozzle goes exactly to the same place. THen the printer starts printing at the complete back of the bed in the middle, hitting the retaining clips

    what am i doing wrong if this page is not dead

  • Hi Matt,
    If I have this right….
    You set the position, store it OK and it correctly goes to the new zero position when you Auto-home?
    If that is correct…
    Then you find that when you go and try and print the print starts at the back (i.e. in the wrong place)?
    Here’s a set of Q&A I hope may be useful
    Q. So when you abort the print and then do an auto-home – does it still go to the correct new zero position?
    If it does – then I’d suggest it looks like the design you are printing is cocking it up.
    If it doesn’t –
    Does it go to the old zero position?
    If so then it looks like the zero position has not saved properly.
    Q: Did you use Pronterface to save it?
    Maybe check by setting the new zero position then powering off/on and checking it still goes to the new zero position with a auto-home.

    I’d also try a couple of very simple designs from different sources.
    Here’s one of mine that is quite trivial A seed label on Thingiverse)
    Try using the gcode file first. If that cocks up then I’m clueless I’m afraid to say.
    But if that’s OK try using the STL file to build your own gcode file. See if that final outcome is different (aka starts in middle at back).
    If that happens then maybe its the Slicer?

    I expect you’ve probably tried most of the above so I’m sorry if it may not help much.
    But that’s just what I’d try. It sounds really weird that its going to the middle of the back.
    Good luck!
    Tell us how you get on.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>