Manual mesh leveling records measured bed-height variation so supported firmware can compensate during printing. First identify the leveling system compiled into your printer; Marlin has several, and their commands are not interchangeable.

Confirm the firmware configuration

Marlin's manual mesh documentation[1] applies to MESH_BED_LEVELING. The LCD workflow additionally requires the relevant menu support. Use the configuration for your exact board, printer and Marlin version if a firmware change is necessary.

Keep the current firmware configuration and a record of the active settings before changing firmware. Where available, M503[2] reports the runtime-configurable settings to the host console; save that output, but do not mistake it for a complete firmware backup. M502[3] resets configurable settings in memory, and following it with M500 writes those defaults to EEPROM. That is why a generic factory reset is a poor first step for a bed measurement.

Prepare for repeatable measurement

Follow the printer maker's preparation procedure for the surface and nozzle. Check that the motion system is secure and remove anything that would distort the measurement. Use the same measuring sheet and consistent feel at every point.

Watch the first move and stop before the nozzle presses into the bed. Resolve an incorrect home position before continuing; the mesh routine measures bed variation rather than making that starting position safe.

Follow the manual-mesh sequence

For the documented MESH_BED_LEVELING terminal workflow, keep the sequence beside the printer:

  1. Use G29 S0 to report the current status and mesh, then G29 S1 to move to the first adjustment point.
  2. Adjust Z carefully until a piece of paper can just pass under the nozzle. Use G29 S2 to save that point and move to the next, repeating the same feel at each location until the mesh is complete.
  3. Use M500[4] to save the completed settings when EEPROM_SETTINGS support is available.

The good result at this stage is a completed, repeatable set of measurements. It is still necessary to check whether leveling is active for the print; a successful save does not answer that separate question.

The LCD menu can guide the same task, but its location depends on the build. Follow its prompts rather than assuming a universal menu path or adjustment increment.

Enable the mesh deliberately

Marlin's M420 documentation[5] distinguishes a stored mesh from active leveling. RESTORE_LEVELING_AFTER_G28 restores the state from before homing; it does not unconditionally enable a previously disabled mesh.

Where appropriate for the configured system, use M420 S1 after homing to enable a valid mesh. Verify the reported state and your actual start G-code rather than assuming a stored grid is being used.

Verify the first layer

Print a first-layer test pattern that reaches representative bed locations rather than judging only a small patch in the center. Compare the same feature at each position and note where the result differs; do not change several mesh points simply because the first patch looked wrong. If a local correction is needed, use the command or menu documented for the installed leveling system, save the result and repeat the same test. The aim is to connect a local symptom to a specific measurement, not to keep editing the grid until an unrelated test happens to look better.

Repeat the check after a change to bed or nozzle geometry. Keeping those measurements current is what makes the saved mesh useful for the next print.