<p>It is possible to "home a printer" without having endstops, technically, you don't <strong>require</strong> endstops, but it makes your job a lot easier if you want to print something!</p>

<p>Basically, when you don't have endstops or limit switches, you need to define where the head of the printer is located. E.g. you can set the nozzle at [0, 0, 0] (origin in [x, y, z]) and add the command <a href="https://reprap.org/wiki/G-code#G92:_Set_Position" rel="nofollow noreferrer"><code>G92</code></a> to your print G-code file that it is at that position using <code>G92 X0 Y0 Z0</code> (or any other location you use, e.g. you could engineer a parking position and refer to that position instead, note that you also need to write the movement commands to get out of that location safely). Don't forget to remove the homing command from your start code in your slicer, replace <code>G28</code> with the <code>G92</code> command with appropriate X, Y and Z values.</p>

<p>Regarding the inaccurate repetitive accuracy of your Z min endstop, it might be worth to find out why this is causing such a spread in triggering, maybe you need to invest in some new endstop switches or look more closely to the heated bed attachment to the frame.</p>

<p>Using Z max as a reference point is e.g. used by Ultimaker machines. The heated platform lowers to Z max; the printer knows from calibration and geometry how far it needs to rise to get to Z=0.</p>

CC BY-SA 4.0
2019-02-11T12:39:39.303Z
I already tried that. I got the printer to the position above the heat bed. I put the piece of paper in between to set the z offset, and I set the x and y axis so the hot end is at the center of heat bed, But when I press print, it just calibrates using endstops...
Toni Duspara
CC BY-SA 4.0
2019-02-11T12:41:27.163Z
Is there a way to home it using  Zmax endstop and distance from zmax to heatbed?
Toni Duspara
CC BY-SA 4.0
2019-02-11T14:41:21.963Z
@ToniDuspara You do need to remove the `G28` (homing command) from your print file! Replace that with `G92 X100 Y100 Z0` (that is if your bed is 200x200 mm). In reply on your Zmax comment, yes you can, this is how Ultimaker does it; an Ultimaker platform drops to the bottom to trigger Zmax. But it is better to put your efforts in fixing your current Zmin endstop.
0scar
CC BY-SA 4.0
2019-02-11T12:30:30.447Z
2019-02-11T15:00:47.217Z
2019-02-11T15:00:47.217Z
0scar
<p>You can reconfigure marlin to use the MAXZ endstop instead of MINZ in Configuration.h, and then reflash it to your printer.</p>

<p><a href="https://github.com/MarlinFirmware/Marlin/blob/1.1.x/Marlin/Configuration.h#L877" rel="nofollow noreferrer">https://github.com/MarlinFirmware/Marlin/blob/1.1.x/Marlin/Configuration.h#L877</a></p>

<p>Now this is highly unusual, as most printers only have MIN endstops. If you post a pic of your faulty MINZ endstop, we can probably figure out how you could fix it. Zipties come to mind as a likely solution.</p>

CC BY-SA 4.0
2019-02-12T21:36:19.673Z
2019-02-12T21:36:19.673Z
silver
<p>I have just built my first 3D printer, and I am having some problems. It is a Cartesian based 3D printer, using Marlin firmware and Pronterface software. My problem is homing the 3D printer. I do not have a probe to calibrate the z offset but I have all 6 endstops. The problem is that the "ZMIN" endstop isn't precise enough and my hotend is always either too far from or too close to the heatbed. Is there a way to manually set the home position, so when I start the printer, It just starts printing and it doesn't have to home again; Or maybe some other way to set the correct offset. It would also be helpful if I could use just the "ZMAX" plug, and then manually set the minimum Z position using a piece of paper.</p>

CC BY-SA 4.0
2019-02-11T12:29:18.400Z
In most models without an auto-leveling sensor it is done by a set of screws with which you can adjust the height of the build platform.
Klaus D.
CC BY-SA 4.0
2019-02-11T13:50:27.520Z
That does sound like your ZMIN endstop might just be faulty, or attached to the frame very weakly.

It is possible to home towards ZMAX - simply specify "1" as homing direction instead of "-1" in Marlin and set the "MANUAL_HOME_POS_Z" (or similar) to the distance between bed and ZMAX.
First, I'd try just swapping the mechanical endstop between ZMIN and ZMAX or any other working endstop.
towe
<marlin><diy-3d-printer><z-axis><homing>
Homing the 3D printer
Toni Duspara
# Homing the 3D printer

(Asked by: username_0 on 2019-02-11)

I have just built my first 3D printer, and I am having some problems. It is a Cartesian based 3D printer, using Marlin firmware and Pronterface software. My problem is homing the 3D printer. I do not have a probe to calibrate the z offset but I have all 6 endstops. The problem is that the "ZMIN" endstop isn't precise enough and my hotend is always either too far from or too close to the heatbed. Is there a way to manually set the home position, so when I start the printer, It just starts printing and it doesn't have to home again; Or maybe some other way to set the correct offset. It would also be helpful if I could use just the "ZMAX" plug, and then manually set the minimum Z position using a piece of paper.

**Tags:** marlin, diy-3d-printer, z-axis, homing

> **Comments:**
> **username_1**: In most models without an auto-leveling sensor it is done by a set of screws with which you can adjust the height of the build platform.  
> **username_2**: That does sound like your ZMIN endstop might just be faulty, or attached to the frame very weakly.  It is possible to home towards ZMAX - simply specify "1" as homing direction instead of "-1" in Marlin and set the "MANUAL_HOME_POS_Z" (or similar) to the distance between bed and ZMAX. First, I'd try just swapping the mechanical endstop between ZMIN and ZMAX or any other working endstop.  

---

## 2 answers

### Answer by username_3 on 2019-02-11. Score: 2 | Accepted answer

It is possible to "home a printer" without having endstops, technically, you don't **require** endstops, but it makes your job a lot easier if you want to print something!

Basically, when you don't have endstops or limit switches, you need to define where the head of the printer is located. E.g. you can set the nozzle at [0, 0, 0] (origin in [x, y, z]) and add the command [`G92`](https://reprap.org/wiki/G-code#G92:_Set_Position) to your print G-code file that it is at that position using `G92 X0 Y0 Z0` (or any other location you use, e.g. you could engineer a parking position and refer to that position instead, note that you also need to write the movement commands to get out of that location safely). Don't forget to remove the homing command from your start code in your slicer, replace `G28` with the `G92` command with appropriate X, Y and Z values.

Regarding the inaccurate repetitive accuracy of your Z min endstop, it might be worth to find out why this is causing such a spread in triggering, maybe you need to invest in some new endstop switches or look more closely to the heated bed attachment to the frame.

Using Z max as a reference point is e.g. used by Ultimaker machines. The heated platform lowers to Z max; the printer knows from calibration and geometry how far it needs to rise to get to Z=0.

> **Comments:**
> **username_0**: I already tried that. I got the printer to the position above the heat bed. I put the piece of paper in between to set the z offset, and I set the x and y axis so the hot end is at the center of heat bed, But when I press print, it just calibrates using endstops...  
> **username_0**: Is there a way to home it using  Zmax endstop and distance from zmax to heatbed?  
> **username_3**: @username_0 You do need to remove the `G28` (homing command) from your print file! Replace that with `G92 X100 Y100 Z0` (that is if your bed is 200x200 mm). In reply on your Zmax comment, yes you can, this is how Ultimaker does it; an Ultimaker platform drops to the bottom to trigger Zmax. But it is better to put your efforts in fixing your current Zmin endstop.  

---

### Answer by username_4 on 2019-02-12. Score: 1

You can reconfigure marlin to use the MAXZ endstop instead of MINZ in Configuration.h, and then reflash it to your printer.

<https://github.com/MarlinFirmware/Marlin/blob/1.1.x/Marlin/Configuration.h#L877>

Now this is highly unusual, as most printers only have MIN endstops. If you post a pic of your faulty MINZ endstop, we can probably figure out how you could fix it. Zipties come to mind as a likely solution.


---

