# Understanding of the auto bed leveling process (BLTouch)

I just installed my BLTouch clone (Marlin 1.8) on my Anycubic i3 Mega Ultrabase and finding confusing information about the Z_PROBE_OFFSET_FROM_EXTRUDER or the M851 command.

I understand M851 command does the same as Z_PROBE_OFFSET_FROM_EXTRUDER in the Configuration.h. (see marlin docs)

So according to Marlin, this value is the distance of the nozzle to the distance of the triggering point of the sensor.

If I manage to measure that accurately, Marlin could probe the bed, knowing distance of probe to nozzle, add a margin for perfect distance (around paper thickness) and my bed would be forever perfectly measured with every autolevelling process and perfect distances could be calculated.

Instead, I find tutorials around the M851 (e.g here telling to manually level the bed, then take the current Z-value of the extruder and put that into the M851 value. In my understanding it makes little sense, as it has no reference to when the sensor triggers, its distance to the bed.

Sure, maybe this way it can get an understanding of slight derivations in the planarity of the bed, but it would not have automatically "levelled" my bed, just compensated for imperfections.

I am confused by the amount of tutorials that suggest so. Whats the case now? Is Marlin not really able to really level to my bed?

The ABL process could better be described as "Height adjusting to scanned bed geometry" or something like that, as that is exactly what is being done. The G29 command scans the bed surface and (depending on the firmware options) it generates a mesh or a plane through the measured points. When printing, the nozzle will follow the bed height geometry and fades this out over about 10 milliliters (depends on setting). So, if you do not tram the bed correctly, you will end up with a skew bottom of the print as the fade out will cause the printer to print eventually parallel to the X- and Y-axis.
Note that specifying the Z-offset in the firmware is rather useless, you cannot measure this beforehand. It is far better to do this later using M851.
1) It is possible to actually level/tram the bed (e.g. in Marlin firmware), but that are different processes. E.g. a tramming assistant is available when using the G35 G-code. And, automatically, (for specific printers) possible on build plates that are moved up/down by several lead screws (look into NUM_Z_STEPPER_DRIVERS in Marlin's Configuration_adv.h file). But still, this maintains a certain level, it does not scan the complete surface, that can be achieved by the ABL process.