# \[Marlin] G029 - Bed Leveling Manual

{% hint style="success" %}
**📅Update: 2020/10/13**
{% endhint %}

## Description

Mesh Bed Leveling (MBL) allows interactively measuring a Z height mesh without a bed probe. The only tool required is a piece of paper or a feeler gauge. MBL uses the mesh to compensate for variations in height across the bed.

1. Use `G29 S0` to get the current status and mesh. If there’s an existing mesh, you can send M420 S1 to use it.
2. Use `G29 S1` to move to the first point for Z adjustment.
3. Adjust Z so a piece of paper can just pass under the nozzle.
4. Use `G29 S2` to save the Z value and move to the next point.
5. Repeat steps 3-4 until completed.
6. Use [`M500`](https://app.gitbook.com/docs/gcode/M500.html) to save the mesh to EEPROM, if desired.

## Notes

* Requires the `MESH_BED_LEVELING` option in `Configuration.h`.
* "[`G28`](https://app.gitbook.com/docs/gcode/G028.html) disables bed leveling. Follow with `M420 S` to turn leveling on, or use `RESTORE_LEVELING_AFTER_G28` to automatically keep leveling on after [`G28`](https://app.gitbook.com/docs/gcode/G028.html)."

## Usage

`G29` `[I<index>]` `[J<index>]` `S<0|1|2|3|4|5>` `[X<count>]` `[Y<count>]` `[Z<linear>]`

## Parameters

* `[I<index>]` With S3, the (0…n-1) X index of the mesh value to modify.
* `[J<index>]` With S3, the (0…n-1) Y index of the mesh value to modify.
* `[S<0|1|2|3|4|5>]`
  * S0: Produce a mesh report (see examples below).
  * S1: Start probing mesh points.
  * S2: Probe the next mesh point.
  * S3: Manually modify a single point with X Y Z parameters. (See also M421.)
  * S4: Set a global Z offset. Positive values are away from the bed; negative values are closer.
  * S5: Reset and disable mesh.

## Examples

S0 mesh report:

```
> G29 S0
Num X,Y: 3,3
Z offset: 0
Measured points:
       0      1       2
0 +0.011 -0.020  -0.026
1 +0.017 +0.002  -0.019
2 +0.022 -0.030  -0.013
```

Modify some mesh points and view the new mesh:

```
> G29 S3 I2 J2 Z0.042
> G29 S3 I1 J1 Z-0.666
> G29 S0
3x3 mesh. Z offset: 0
Measured points:
       0      1       2
0 +0.011 -0.020  -0.026
1 +0.017 -0.666  -0.019
2 +0.022 -0.030  +0.042
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual.rotrics.com/gcode/marlin-original-commands/marlin-g029-bed-leveling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
