<p>When the printer ignores the scanned topology (grid) of the bed this means that the levelling is not active. <code>G29</code> activates the <code>M420</code> to enable the grid. A <code>G28</code> after scanning the bed will reset this.</p>

<p>You need to make sure that the start G-code (this is an optional script that is pasted before the sliced object) contains both the <code>G28</code> and the <code>G29</code>, where the <code>G28</code> is placed above the <code>G29</code> on separate lines.</p>

<p>For each slicer this is defined in different places, bit if you use Pronterface for slicing, a good chance is that it uses the Slic3r engine. If I open an STL for slicing in Pronterface, it starts loading Slic3r.exe; this brings up the GUI for Slic3r which has options to define/modify the start G-code.</p>

CC BY-SA 4.0
2020-03-10T13:33:21.547Z
You saved my life!
danyolgiax
CC BY-SA 4.0
2020-03-09T21:44:46.093Z
2020-03-09T21:44:46.093Z
0scar
<p>I've just added a Z-Probe sensor to my custom printer (<code>Arduino</code> - <code>RAMPS 1.4</code> - <code>Marlin 2</code> default disabled EEPROM) but now I'm confused. Printer seems to work but I cannot configure the right nozzle height.</p>

<p>I use <code>Pronterface</code> and before start printing I send <code>G29</code> code. Printer succesfully ends bed calibration. At this point I start printing but the printer seems to ignore the calibration (no bed compensation). </p>

<p>Do I need to run other commands to tell printer to use the previous calibration?</p>

CC BY-SA 4.0
2020-03-08T21:57:04.150Z
`G29` activates the `M420` to enable the grid. A `G28` after will reset this. Did you set the correct trigger point to nozzle offset with `M851`? Please do elaborate on `seems to ignore the calibration`: is it incorrect distance setup or is it ignoring the complete grid?
0scar
CC BY-SA 4.0
2020-03-09T08:29:33.680Z
`G29` returns all the grid values (Ex.: +0.03 +0.01 -0.01 ...) and in my mind I expect Z-axis will compensate those values moving the nozzle high or low during layer print. The Z-axis instead never moves.
danyolgiax
CC BY-SA 4.0
2020-03-09T12:25:26.073Z
Yes it should and it will unless the grid isn't active. Maybe you can add the steps in G-code you do when you print an object. You could also post your start G-code or the first 40 lines of the G-code file you print. This may lead to answering your question, for now it is too hard to say.
0scar
CC BY-SA 4.0
2020-03-09T14:46:55.143Z
As I understand I can compare G-codes from Slic3r exported file with G-codes Pronterface sends to the printer. But where I can find those G-codes? Pronterface, by default, during the printing process, does not show them.
danyolgiax
CC BY-SA 4.0
2020-03-09T17:54:47.727Z
What slicer do you use then? You can use either Slic3r, Ultimaker Cura, or any other program to generate the G-code files. You can run these G-code files through Pronterface to print the object. If you slice from within Pronterface, you can export the G-code files. I think that in your process to print the object `G28` is called after `G29`, this disables bed leveling.
0scar
CC BY-SA 4.0
2020-03-09T18:57:11.480Z
You are right! At the beginning of the generated file there is a G28! Do I need to remove it? Or I need to add a G29 after G28?
danyolgiax
CC BY-SA 4.0
2020-03-09T20:05:30.360Z
Do you have any place in your software to edit the start and end G-Code for each print you do? If so, you can add a G29 after a G28 to calibrate the print.
I use that in my Ender 3 before every print to make sure everything is right.
Darlan Alves
<marlin><bed-leveling><z-probe>
Marlin bed autoleveling confusion
danyolgiax
# Marlin bed autoleveling confusion

(Asked by: username_0 on 2020-03-08)

I've just added a Z-Probe sensor to my custom printer (`Arduino` - `RAMPS 1.4` - `Marlin 2` default disabled EEPROM) but now I'm confused. Printer seems to work but I cannot configure the right nozzle height.

I use `Pronterface` and before start printing I send `G29` code. Printer succesfully ends bed calibration. At this point I start printing but the printer seems to ignore the calibration (no bed compensation).

Do I need to run other commands to tell printer to use the previous calibration?

**Tags:** marlin, bed-leveling, z-probe

> **Comments:**
> **username_1**: `G29` activates the `M420` to enable the grid. A `G28` after will reset this. Did you set the correct trigger point to nozzle offset with `M851`? Please do elaborate on `seems to ignore the calibration`: is it incorrect distance setup or is it ignoring the complete grid?  
> **username_0**: `G29` returns all the grid values (Ex.: +0.03 +0.01 -0.01 ...) and in my mind I expect Z-axis will compensate those values moving the nozzle high or low during layer print. The Z-axis instead never moves.  
> **username_1**: Yes it should and it will unless the grid isn't active. Maybe you can add the steps in G-code you do when you print an object. You could also post your start G-code or the first 40 lines of the G-code file you print. This may lead to answering your question, for now it is too hard to say.  
> **username_0**: As I understand I can compare G-codes from Slic3r exported file with G-codes Pronterface sends to the printer. But where I can find those G-codes? Pronterface, by default, during the printing process, does not show them.  
> **username_1**: What slicer do you use then? You can use either Slic3r, Ultimaker Cura, or any other program to generate the G-code files. You can run these G-code files through Pronterface to print the object. If you slice from within Pronterface, you can export the G-code files. I think that in your process to print the object `G28` is called after `G29`, this disables bed leveling.  
> **username_0**: You are right! At the beginning of the generated file there is a G28! Do I need to remove it? Or I need to add a G29 after G28?  
> **username_2**: Do you have any place in your software to edit the start and end G-Code for each print you do? If so, you can add a G29 after a G28 to calibrate the print. I use that in my Ender 3 before every print to make sure everything is right.  

---

## 1 answers

### Answer by username_1 on 2020-03-09. Score: 1 | Accepted answer

When the printer ignores the scanned topology (grid) of the bed this means that the levelling is not active. `G29` activates the `M420` to enable the grid. A `G28` after scanning the bed will reset this.

You need to make sure that the start G-code (this is an optional script that is pasted before the sliced object) contains both the `G28` and the `G29`, where the `G28` is placed above the `G29` on separate lines.

For each slicer this is defined in different places, bit if you use Pronterface for slicing, a good chance is that it uses the Slic3r engine. If I open an STL for slicing in Pronterface, it starts loading Slic3r.exe; this brings up the GUI for Slic3r which has options to define/modify the start G-code.

> **Comments:**
> **username_0**: You saved my life!  

---

