<p>Proper leveling using plain "A4" or "Letter" paper is recommended. Level the bed by first homing all axes, then level each corner and at mid-span. In between leveling (by dragging the nozzle head from one to another position, beware of the hot nozzle!) redirect the nozzle to "Z=0" or home Z and instruct the printer to go to "Z=0". </p>

<p>Note that capacitive probe sensors are inaccurate, they tend to be influenced by the humidity of air.</p>

<p>Running Marlin Firmware and instructing a <code>G29</code> trough a terminal gives me something in the region of the unity matrix:</p>

<pre><code>Recv: Bed Level Correction Matrix:
Recv: +0.999994 +0.000000 -0.003585
Recv: +0.000003 +1.000000 +0.000823
Recv: +0.003585 -0.000823 +0.999993
</code></pre>

<p>Running the command <code>G29 P3 V4</code> gives:</p>

<blockquote>
  <p><em>NOTE:</em></p>
  
  <ul>
  <li><em><code>P</code> Set the size of the grid that will be probed (P x P points)</em></li>
  <li><em><code>V</code> Set the verbose level (0-4)</em></li>
  </ul>
</blockquote>

<pre><code>Recv: G29 Auto Bed Leveling
Recv: Bed X: 25.000 Y: 22.000 Z: 0.138
Recv: Bed X: 109.000 Y: 22.000 Z: 0.071
Recv: Bed X: 193.000 Y: 22.000 Z: -0.842
Recv: Bed X: 193.000 Y: 97.000 Z: -0.427
Recv: Bed X: 109.000 Y: 97.000 Z: 0.083
Recv: Bed X: 25.000 Y: 97.000 Z: 0.086
Recv: Bed X: 25.000 Y: 172.000 Z: 0.004
Recv: Bed X: 109.000 Y: 172.000 Z: 0.019
Recv: Bed X: 193.000 Y: 172.000 Z: -0.297
Recv: Eqn coefficients: a: -0.00356075 b: 0.00080090 d: 2.38097906
Recv: Mean of sampled points: 2.07054519
Recv: 
Recv: Bed Height Topography:
Recv:    +--- BACK --+
Recv:    |           |
Recv:  L |    (+)    | R
Recv:  E |           | I
Recv:  F | (-) N (+) | G
Recv:  T |           | H
Recv:    |    (-)    | T
Recv:    |           |
Recv:    O-- FRONT --+
Recv:  (0,0)
Recv:   0.13385  0.14866 -0.16731
Recv:   0.21531  0.21284 -0.29814
Recv:   0.26715  0.20050 -0.71286
Recv: 
Recv: Corrected Bed Height vs. Bed Topology:
Recv:   0.12837  0.44228  0.42541
Recv:   0.26990  0.56653  0.35465
Recv:   0.38180  0.61425  0.00000
Recv: 
Recv: Bed Level Correction Matrix:
Recv: +0.999994 +0.000000 -0.003561
Recv: +0.000003 +1.000000 +0.000801
Recv: +0.003561 -0.000801 +0.999993
</code></pre>

<p>Running the command <code>G29 P3 V4</code> again, but now with my vernier on the bed (opposite to the side of the origin, on the right side of the bed; vernier under probing points 3 and 4), gives:</p>

<pre><code>Recv: G29 Auto Bed Leveling
Recv: Bed X: 25.000 Y: 22.000 Z: -0.003
Recv: Bed X: 109.000 Y: 22.000 Z: -0.050
Recv: Bed X: 193.000 Y: 22.000 Z: **5.709**
Recv: Bed X: 193.000 Y: 97.000 Z: **5.892**
Recv: Bed X: 109.000 Y: 97.000 Z: 0.007
Recv: Bed X: 25.000 Y: 97.000 Z: 0.039
Recv: Bed X: 25.000 Y: 172.000 Z: -0.023
Recv: Bed X: 109.000 Y: 172.000 Z: 0.017
Recv: Bed X: 193.000 Y: 172.000 Z: -0.329
Recv: Eqn coefficients: a: 0.02233918 b: -0.01331358 d: 2.30744504
Recv: Mean of sampled points: 3.45099973
Recv: 
Recv: Bed Height Topography:
Recv:    +--- BACK --+
Recv:    |           |
Recv:  L |    (+)    | R
Recv:  E |           | I
Recv:  F | (-) N (+) | G
Recv:  T |           | H
Recv:    |    (-)    | T
Recv:    |           |
Recv:    O-- FRONT --+
Recv:  (0,0)
Recv:  -1.27376 -1.23426 -1.57986
Recv:  -1.21205 -1.24414  4.64083
Recv:  -1.25401 -1.30091  4.45816
Recv: 
Recv: Corrected Bed Height vs. Bed Topology:
Recv:   4.05814  2.22162  0.00000
Recv:   3.12192  1.21381  5.22275
Recv:   2.08203  0.15910  4.04215
Recv: 
Recv: Bed Level Correction Matrix:
Recv: +0.999750 +0.000000 +0.022334
Recv: +0.000297 +0.999911 -0.013306
Recv: -0.022332 +0.013309 +0.999662
</code></pre>

<p>From the snippets you can see that the topology is printed in the output. You also see the vernier of about 4.5 mm comming back in the matrices. But the 4.5 mm thickness of the vernier is not easily found in the correction matrix!</p>

<p>The answer to your question is that the origin is in the lower left of the matrix, so you need to loosen the origin screw in the first example (this matrix shows you that the bed is highest at the right-back and lowest at the origin at the left-front). Your second example shows that the whole bed is tilted downwards to the front.</p>

CC BY-SA 4.0
2018-07-05T13:34:34.957Z
This works **only** if the bed is truly flat.  I've seen cases where someone tightens the four corner-screws too much and the bed becomes a convex surface (highest in the middle, even though all 4 corners are at the same level).   So be careful!
Carl Witthoft
CC BY-SA 4.0
2018-07-05T13:45:30.637Z
@CarlWitthoft Yes, over tightening is not good as it can deform the bed, especially the thin aluminium heat beds. Personally I use 3 mm thick beds. Level must therefore be also checked at intermediate points (I referred to mid-span in the answer to indicate that, but I'm not native in English, sorry for the misunderstanding).
0scar
CC BY-SA 4.0
2018-07-04T21:44:23.903Z
2018-07-06T22:43:42.450Z
2018-07-06T22:43:42.450Z
0scar
<p>An additional suggestion: after levelling with sensors or mechanically as in Oscar's great answer, verify both the level and the Z-zero by printing a single-layer pattern such as a few concentric squares or circles.  Inspect to verify that no location is too high (material fails to extrude) or too low (material doesn't adhere, or appears much thicker than elsewhere).  </p>

<p>By doing this you can avoid setting up a multi-hour print only to discover a 'bad corner' or some such.  </p>

CC BY-SA 4.0
2018-07-05T13:48:02.617Z
That is a good suggestion, and actually something I also do, in fact I have written a tutorial once about bed centering (which I do not link for SE policy reasons), the print also checks the level to discover what you call a 'bad corner'. Good addition!
0scar
CC BY-SA 4.0
2018-07-05T13:38:37.007Z
2018-07-05T13:38:37.007Z
Carl Witthoft
<p>My G29 command reports</p>

<pre><code>+0.178 +0.281 +0.830
-0.614 -0.012 +0.371
-1.208 -0.849 -0.351
</code></pre>

<p>So should I tighten up the screw of the bed, close to 0,0 position or loosen it?</p>

<p>I have a feeling that when I loosen it, it gets away from zero and I expect the opposite to happen.</p>

<p>For bed leveling i use a capacitive probe and after playing around with the screws here is the result</p>

<pre><code>+0.406 +0.127 +0.411
-0.161 -0.007 -0.041
-0.572 -0.652 -0.668
</code></pre>

<p>Finally the leveling process was found <a href="https://www.youtube.com/watch?v=y_1Kg45APko" rel="nofollow noreferrer">here</a>
But the question remains. The value <code>-0.572</code> corresponds close to <code>0,0</code> ?</p>

CC BY-SA 4.0
2018-07-03T20:05:09.293Z
What firmware are you using?  There are several variations on the G29 command for different firmware.  You have the marlin tag set, but it would help to put that information in the question.  Are there arguments to the G29 command?
cmm
CC BY-SA 4.0
2018-07-03T20:43:34.163Z
@cmm it reports Marlin bugfix-2.0.x and no extra arguments are sent
OrElse
CC BY-SA 4.0
2018-07-03T21:17:31.173Z
Could you please add by edit (in your question) how you level your bed? If done correctly by heating bed and nozzle, using a plain A4 paper, and regularly homing Z, should not lead to such a matrix. Note that auto leveling is not magic, you need to provide a bed as level as possible.
0scar
CC BY-SA 4.0
2018-07-04T00:07:31.097Z
Would a perfectly aligned bed give the identity matrix?
cmm
CC BY-SA 4.0
2018-07-04T07:16:21.580Z
No, but a far better one than that. Sensor accuracy prevents the matrix to be unity.
0scar
CC BY-SA 4.0
2018-07-04T19:14:03.643Z
@0scar can you please check the update?
OrElse
CC BY-SA 4.0
2018-07-05T13:19:50.007Z
@Oscar , I see from an answer below that two matrices are printed.  One is a sampling of the height at nine points, and the other is the transform matrix that multiplies an [x y z] vector to make a corrected [x y z] vector.  A perfectly aligned bed would be a 3x3 array of samples of zeros.  The transformation matrix would be the identity matrix.  I now understand that the OP is providing the sample array, ot the the transform matrix.
cmm
CC BY-SA 4.0
2018-07-05T19:59:39.857Z
@cmm Correct! That verbose option of the G29 command is very useful for additional information.
0scar
<marlin><bed-leveling>
BiLinear bed leveling
OrElse
# BiLinear bed leveling

(Asked by: username_0 on 2018-07-03)

My G29 command reports

```
+0.178 +0.281 +0.830
-0.614 -0.012 +0.371
-1.208 -0.849 -0.351

```

So should I tighten up the screw of the bed, close to 0,0 position or loosen it?

I have a feeling that when I loosen it, it gets away from zero and I expect the opposite to happen.

For bed leveling i use a capacitive probe and after playing around with the screws here is the result

```
+0.406 +0.127 +0.411
-0.161 -0.007 -0.041
-0.572 -0.652 -0.668

```

Finally the leveling process was found [here](https://www.youtube.com/watch?v=y_1Kg45APko)
But the question remains. The value `-0.572` corresponds close to `0,0` ?

**Tags:** marlin, bed-leveling

> **Comments:**
> **username_1**: What firmware are you using?  There are several variations on the G29 command for different firmware.  You have the marlin tag set, but it would help to put that information in the question.  Are there arguments to the G29 command?  
> **username_0**: @username_1 it reports Marlin bugfix-2.0.x and no extra arguments are sent  
> **username_2**: Could you please add by edit (in your question) how you level your bed? If done correctly by heating bed and nozzle, using a plain A4 paper, and regularly homing Z, should not lead to such a matrix. Note that auto leveling is not magic, you need to provide a bed as level as possible.  
> **username_1**: Would a perfectly aligned bed give the identity matrix?  
> **username_2**: No, but a far better one than that. Sensor accuracy prevents the matrix to be unity.  
> **username_0**: @username_2 can you please check the update?  
> **username_1**: @Oscar , I see from an answer below that two matrices are printed.  One is a sampling of the height at nine points, and the other is the transform matrix that multiplies an [x y z] vector to make a corrected [x y z] vector.  A perfectly aligned bed would be a 3x3 array of samples of zeros.  The transformation matrix would be the identity matrix.  I now understand that the OP is providing the sample array, ot the the transform matrix.  
> **username_2**: @username_1 Correct! That verbose option of the G29 command is very useful for additional information.  

---

## 2 answers

### Answer by username_2 on 2018-07-04. Score: 3 | Accepted answer

Proper leveling using plain "A4" or "Letter" paper is recommended. Level the bed by first homing all axes, then level each corner and at mid-span. In between leveling (by dragging the nozzle head from one to another position, beware of the hot nozzle!) redirect the nozzle to "Z=0" or home Z and instruct the printer to go to "Z=0".

Note that capacitive probe sensors are inaccurate, they tend to be influenced by the humidity of air.

Running Marlin Firmware and instructing a `G29` trough a terminal gives me something in the region of the unity matrix:

```
Recv: Bed Level Correction Matrix:
Recv: +0.999994 +0.000000 -0.003585
Recv: +0.000003 +1.000000 +0.000823
Recv: +0.003585 -0.000823 +0.999993

```

Running the command `G29 P3 V4` gives:

> *NOTE:*
>
> * *`P` Set the size of the grid that will be probed (P x P points)*
> * *`V` Set the verbose level (0-4)*

```
Recv: G29 Auto Bed Leveling
Recv: Bed X: 25.000 Y: 22.000 Z: 0.138
Recv: Bed X: 109.000 Y: 22.000 Z: 0.071
Recv: Bed X: 193.000 Y: 22.000 Z: -0.842
Recv: Bed X: 193.000 Y: 97.000 Z: -0.427
Recv: Bed X: 109.000 Y: 97.000 Z: 0.083
Recv: Bed X: 25.000 Y: 97.000 Z: 0.086
Recv: Bed X: 25.000 Y: 172.000 Z: 0.004
Recv: Bed X: 109.000 Y: 172.000 Z: 0.019
Recv: Bed X: 193.000 Y: 172.000 Z: -0.297
Recv: Eqn coefficients: a: -0.00356075 b: 0.00080090 d: 2.38097906
Recv: Mean of sampled points: 2.07054519
Recv: 
Recv: Bed Height Topography:
Recv:    +--- BACK --+
Recv:    |           |
Recv:  L |    (+)    | R
Recv:  E |           | I
Recv:  F | (-) N (+) | G
Recv:  T |           | H
Recv:    |    (-)    | T
Recv:    |           |
Recv:    O-- FRONT --+
Recv:  (0,0)
Recv:   0.13385  0.14866 -0.16731
Recv:   0.21531  0.21284 -0.29814
Recv:   0.26715  0.20050 -0.71286
Recv: 
Recv: Corrected Bed Height vs. Bed Topology:
Recv:   0.12837  0.44228  0.42541
Recv:   0.26990  0.56653  0.35465
Recv:   0.38180  0.61425  0.00000
Recv: 
Recv: Bed Level Correction Matrix:
Recv: +0.999994 +0.000000 -0.003561
Recv: +0.000003 +1.000000 +0.000801
Recv: +0.003561 -0.000801 +0.999993

```

Running the command `G29 P3 V4` again, but now with my vernier on the bed (opposite to the side of the origin, on the right side of the bed; vernier under probing points 3 and 4), gives:

```
Recv: G29 Auto Bed Leveling
Recv: Bed X: 25.000 Y: 22.000 Z: -0.003
Recv: Bed X: 109.000 Y: 22.000 Z: -0.050
Recv: Bed X: 193.000 Y: 22.000 Z: **5.709**
Recv: Bed X: 193.000 Y: 97.000 Z: **5.892**
Recv: Bed X: 109.000 Y: 97.000 Z: 0.007
Recv: Bed X: 25.000 Y: 97.000 Z: 0.039
Recv: Bed X: 25.000 Y: 172.000 Z: -0.023
Recv: Bed X: 109.000 Y: 172.000 Z: 0.017
Recv: Bed X: 193.000 Y: 172.000 Z: -0.329
Recv: Eqn coefficients: a: 0.02233918 b: -0.01331358 d: 2.30744504
Recv: Mean of sampled points: 3.45099973
Recv: 
Recv: Bed Height Topography:
Recv:    +--- BACK --+
Recv:    |           |
Recv:  L |    (+)    | R
Recv:  E |           | I
Recv:  F | (-) N (+) | G
Recv:  T |           | H
Recv:    |    (-)    | T
Recv:    |           |
Recv:    O-- FRONT --+
Recv:  (0,0)
Recv:  -1.27376 -1.23426 -1.57986
Recv:  -1.21205 -1.24414  4.64083
Recv:  -1.25401 -1.30091  4.45816
Recv: 
Recv: Corrected Bed Height vs. Bed Topology:
Recv:   4.05814  2.22162  0.00000
Recv:   3.12192  1.21381  5.22275
Recv:   2.08203  0.15910  4.04215
Recv: 
Recv: Bed Level Correction Matrix:
Recv: +0.999750 +0.000000 +0.022334
Recv: +0.000297 +0.999911 -0.013306
Recv: -0.022332 +0.013309 +0.999662

```

From the snippets you can see that the topology is printed in the output. You also see the vernier of about 4.5 mm comming back in the matrices. But the 4.5 mm thickness of the vernier is not easily found in the correction matrix!

The answer to your question is that the origin is in the lower left of the matrix, so you need to loosen the origin screw in the first example (this matrix shows you that the bed is highest at the right-back and lowest at the origin at the left-front). Your second example shows that the whole bed is tilted downwards to the front.

> **Comments:**
> **username_3**: This works **only** if the bed is truly flat.  I've seen cases where someone tightens the four corner-screws too much and the bed becomes a convex surface (highest in the middle, even though all 4 corners are at the same level).   So be careful!  
> **username_2**: @username_3 Yes, over tightening is not good as it can deform the bed, especially the thin aluminium heat beds. Personally I use 3 mm thick beds. Level must therefore be also checked at intermediate points (I referred to mid-span in the answer to indicate that, but I'm not native in English, sorry for the misunderstanding).  

---

### Answer by username_3 on 2018-07-05. Score: 3

An additional suggestion: after levelling with sensors or mechanically as in Oscar's great answer, verify both the level and the Z-zero by printing a single-layer pattern such as a few concentric squares or circles. Inspect to verify that no location is too high (material fails to extrude) or too low (material doesn't adhere, or appears much thicker than elsewhere).

By doing this you can avoid setting up a multi-hour print only to discover a 'bad corner' or some such.

> **Comments:**
> **username_2**: That is a good suggestion, and actually something I also do, in fact I have written a tutorial once about bed centering (which I do not link for SE policy reasons), the print also checks the level to discover what you call a 'bad corner'. Good addition!  

---

