enter image description here

By what process does the Prusa i3 determine it's home position?

I have a feeling that it works like this, but I'm not entirely sure about it:

  1. If none of the end stops are activated; assume you are somewhere between Max-X, Max-Y, Max-Z and the point 0,0,0.
  2. do
    1. For axis in Axies
      1. If axis endstop not signaling
        1. subtract 100 steps from axis.
  3. while endstops are not signaling, or if point 0,0,0 not reached;
  • 2
    $\begingroup$ The answer to this question is completely dependent on the firmware your printer is running and the configuration of said firmware (the homing order in Marlin is configurable, you have a variety of options such as "home Z first" or "home X and Y simultaneously"). $\endgroup$ Aug 5, 2016 at 13:55

2 Answers 2


It works like you describe, but it does not move all axes at the same time. It first moves the X-axis, subtracting steps while the X endstop is not pressed. When the X-axis is is homed (the X-endstop is gets pressed) it repeats the procedure for the Y-axis and finally the Z-axis.

  • 1
    $\begingroup$ I've always found it odd that 3D printers have basically the reverse homing sequence from conventional cnc machines. Most industrial mills, lasers, and routers homing order is Z, Y, then X. This is to reduce the chances of crashing into any fixtures mounted on the work table. $\endgroup$
    – tbm0115
    Aug 5, 2016 at 0:25
  • 1
    $\begingroup$ 3d printers generally have the z endstop at the bottom rather than the top for better or worse. So homing z would make it crash into anything under it. Many people (me included) put the z endstop on top because that just makes more sense. $\endgroup$ Aug 6, 2016 at 6:46

You have the endstop which sends a on or off to the controller board.

The boards firmware knows if it is a close or open switch.

Lets assume pressed is on and unpressed is off.

When the axis is at home it will read as ON. The firmware then will not allow the axis to move in the direction you have designated is the Home direction. Now this is probably where you got confused. You in fact are the one to open a code file, and say what direction is home. When your turn it on the first time, chances are you have done it wrong on at least one. Then you will frantically go and manually press it yourself as your printers hotend crashes HARD into the bed.. All of us have been there !

Generally Prusas use ramps 1.4


Your code is your firmware. Usually you just edit a header file (single file). These files are heavily documented, depending which you use. Your seller might provider you with a preconfigured header file.

Will note that yes, if the endstop slips or is not position right, the printer will crash into it self. Usually no damage, but it is a very unpleasant thing to happen.

Also worth noting that some firmware will force you to home before you move. Others will let you crash the printer on the opposite side. Just a motor, will do whatever you tell it to.

In short. You tell it how the endstops work and what direction is home on a printer.

  • $\begingroup$ I don't see how this is is an answer to the question. The question asks how the homing works (in term of the "algorithm" that is used) but your answer is just some remark about how people crash their hotend into the bed because of bad endstop config. $\endgroup$ Aug 7, 2016 at 21:30
  • $\begingroup$ Hi Tom Sorry you find it confusing. I explain how end stops work and how the firmware / electronics see and process the states. Which does answer the question. I think you got lost with the extra information about why the heads would crash. That was to express how the different firmwares handle and fail to handle carriage position. Let me know if you have other questions. Happy printing! $\endgroup$
    – StarWind0
    Aug 7, 2016 at 23:43

You must log in to answer this question.

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