Bed Leveling Failed / Mesh Not Saved / Inconsistent Probe Readings
Marlin 3D Printer Firmware
Severity:What Does This Error Mean?
Marlin bed leveling failures are most often caused by a loose probe, incorrect probe offset, or the ABL mesh not being applied before printing. Verify the probe offset with M851, complete a G29 bed level, and add M420 S1 to your start G-code to apply the saved mesh.
Affected Models
- Any Marlin-based 3D printer with BLTouch, CR Touch, or inductive ABL probe
Common Causes
- Probe Z offset (M851) not correctly calibrated — mesh probe points land too high or too low
- G29 mesh data not saved to EEPROM — mesh is lost after every power cycle
- M420 S1 missing from start G-code — saved mesh is not applied before prints
- Probe inconsistency from electrical noise or a worn BLTouch pin
- Bed surface temperature affecting probe trigger point — mesh taken cold, printing hot
How to Fix It
-
Calibrate the probe Z offset with M851.
Send G28 to home, then use the paper-under-nozzle method to find the exact Z offset. Lower the nozzle until a sheet of paper slides with slight resistance, note the Z height, and set it with M851 Z[-value]. Save with M500 and verify the offset holds across power cycles.
-
Run G29 to create the bed mesh.
After homing with G28, send G29 to begin the ABL probing sequence. Wait for all probe points to complete — do not interrupt the process. Once finished, immediately send M500 to save the mesh to EEPROM so it persists after power off.
-
Add M420 S1 to your slicer start G-code.
Having a saved mesh does nothing unless it is applied before each print. In your slicer's start G-code, add M420 S1 after the G28 home command. This tells Marlin to load and apply the saved ABL mesh for every print automatically.
-
Run ABL with the bed at print temperature.
A heated bed expands slightly compared to a cold bed, shifting the flatness map. Always run G29 with the bed pre-heated to your normal print temperature (60–80°C for PLA). A mesh taken cold and used hot will have systematic errors across the entire surface.
-
Increase MULTIPLE_PROBING for accuracy.
In Configuration.h, set MULTIPLE_PROBING 2 or higher, recompile, and flash. This makes Marlin probe each point multiple times and average the results. Averaging filters out occasional probe triggering anomalies that cause mesh outliers and failed leveling sequences.
When to Call a Professional
If probe readings vary by more than 0.3 mm between identical probe points on consecutive runs, the probe hardware (BLTouch or inductive sensor) needs replacement.