<p>Bed Visualizer shows the mesh leveling area regardless of the bed size, that is good because it provides a good level of detail if the mesh area is very small compared to the bed size.</p>
<p>But it could be a useful addition if displaying the mesh area over set to the bed size were possible through a configurable option.</p>

CC BY-SA 4.0
2023-11-12T22:51:53.297Z
Nice to see you here Miguel and thanks for your answer! Welcome. You're a great addition to this site. Could you maybe explain a little bit more how you made AML work in your firmware? Does it use some kind of virtual bed size determined from the widest area from the GCODE?
Bob Ortiz
CC BY-SA 4.0
2023-11-13T00:18:23.347Z
Hi, Marlin implements mesh inset (margins). The Professional firmware just moves it to a next level, allowing you to change the mesh inset at runtime to leave only the interest area.
Miguel Risco-Castillo
CC BY-SA 4.0
2023-11-11T00:49:30.143Z
2023-11-11T00:52:04.433Z
2023-11-11T00:52:04.433Z
Miguel Risco-Castillo
<p><em>I recently started using the new <a href="https://github.com/mriscoc/Ender3V2S1" rel="nofollow noreferrer">mriscoc firmware for my Creality Ender 3 V2</a> and it is truly performing above expectations. Even considering that Jyers UI was already a step up from the original Creality firmware</em>.</p>
<p>I'm trying to understand how the new feature, that seems specific to this firmware, called <a href="https://github.com/mriscoc/Ender3V2S1/wiki/Adaptive-Mesh-Leveling-(AML)" rel="nofollow noreferrer">Adaptive Mesh Leveling (AML)</a> actually works in the firmware.</p>
<p>Below is a screenshot of how the Cura Plugin shows AML options:</p>
<p><a href="https://i.sstatic.net/TzZEgl.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/TzZEgl.png" alt="Cura Post Processing Plugin - Professional Firmware Support" /></a></p>
<p>I have successfully tested AML and I think it's a truly transformative and great way to do fast and more precise bed leveling, only to the relevant print areas on the bed. Also, while probing, the screen shows each probing point in real time being filled in a grid.</p>
<p>However, I noticed that when using <a href="https://github.com/mriscoc/Ender3V2S1/wiki/Octoprint#bed-level-visualizer-support" rel="nofollow noreferrer">the OctoPrint Bed Visualizer instructions</a> to obtain just the mesh data using the following g-code in the OctoPrint Plugin Settings:</p>
<pre><code>M155 S30  ; set temperature reporting delay, use a value longer than the time it takes for your leveling command to complete.
@BEDLEVELVISUALIZER  ; instruct plugin to start recording responses from printer.
M420 V    ; Get bed leveling mesh data.
M155 S3   ; set the temperature reporting delay back to a shorter time span.
</code></pre>
<p>My previously generated 5x5 of 9x9 <strong>full bed grid</strong> is no longer showing, instead the <strong>mini grid</strong> that was made on the print area is showing, as a full bed. Which makes me wonder, how does the firmware deal with AML? Is it basically tricked into using a subarea of the printer as a virtual 'new bed', the new maximum bed size being only a portion of the full bed?</p>
<p><em>Additionally would there be a way for OctoPrints Bed Visualizer plugin to even know if it deals with the full bed grid or the AML 'mini grid' and if so would it be exactly on which part of the full-bed the mini-grid was generated?</em></p>

<marlin><octoprint><automatic-bed-leveling><mriscoc>
How does Adaptive Mesh Leveling (AML) actually work?
Bob Ortiz
# How does Adaptive Mesh Leveling (AML) actually work?

(Asked by: username_0 on 2023-11-06)

*I recently started using the new [mriscoc firmware for my Creality Ender 3 V2](https://github.com/mriscoc/Ender3V2S1) and it is truly performing above expectations. Even considering that Jyers UI was already a step up from the original Creality firmware*.

I'm trying to understand how the new feature, that seems specific to this firmware, called [Adaptive Mesh Leveling (AML)](https://github.com/mriscoc/Ender3V2S1/wiki/Adaptive-Mesh-Leveling-(AML)) actually works in the firmware.

Below is a screenshot of how the Cura Plugin shows AML options:

[![Cura Post Processing Plugin - Professional Firmware Support](https://i.sstatic.net/TzZEgl.png)](https://i.sstatic.net/TzZEgl.png)

I have successfully tested AML and I think it's a truly transformative and great way to do fast and more precise bed leveling, only to the relevant print areas on the bed. Also, while probing, the screen shows each probing point in real time being filled in a grid.

However, I noticed that when using [the OctoPrint Bed Visualizer instructions](https://github.com/mriscoc/Ender3V2S1/wiki/Octoprint#bed-level-visualizer-support) to obtain just the mesh data using the following g-code in the OctoPrint Plugin Settings:

```
M155 S30  ; set temperature reporting delay, use a value longer than the time it takes for your leveling command to complete.
@BEDLEVELVISUALIZER  ; instruct plugin to start recording responses from printer.
M420 V    ; Get bed leveling mesh data.
M155 S3   ; set the temperature reporting delay back to a shorter time span.

```

My previously generated 5x5 of 9x9 **full bed grid** is no longer showing, instead the **mini grid** that was made on the print area is showing, as a full bed. Which makes me wonder, how does the firmware deal with AML? Is it basically tricked into using a subarea of the printer as a virtual 'new bed', the new maximum bed size being only a portion of the full bed?

*Additionally would there be a way for OctoPrints Bed Visualizer plugin to even know if it deals with the full bed grid or the AML 'mini grid' and if so would it be exactly on which part of the full-bed the mini-grid was generated?*

**Tags:** marlin, octoprint, automatic-bed-leveling, mriscoc


---

## 1 answers

### Answer by username_1 on 2023-11-11. Score: 1 | Accepted answer

Bed Visualizer shows the mesh leveling area regardless of the bed size, that is good because it provides a good level of detail if the mesh area is very small compared to the bed size.

But it could be a useful addition if displaying the mesh area over set to the bed size were possible through a configurable option.

> **Comments:**
> **username_0**: Nice to see you here username_1 and thanks for your answer! Welcome. You're a great addition to this site. Could you maybe explain a little bit more how you made AML work in your firmware? Does it use some kind of virtual bed size determined from the widest area from the GCODE?  
> **username_1**: Hi, Marlin implements mesh inset (margins). The Professional firmware just moves it to a next level, allowing you to change the mesh inset at runtime to leave only the interest area.  

---

