Table of Contents

How to run a Bed Mesh

Defining the Bed Mesh

We have to have the bed mesh parameter's defined before running a bed mesh. They are stored in printer.cfg

Example for Neptune 4 and Neptune 4 Pro:

[bed_mesh]
mesh_min:10,21           
mesh_max:210,211         
probe_count: 9,9
algorithm:bicubic
bicubic_tension:0.2
mesh_pps: 4, 4  
split_delta_z: 0.020
fade_start: 	4
fade_end:    	12	

See the Klipper docs for more detailed explanations of the parameters.

probe_count The number of points in the probed mesh
mesh_pps: 4, 4 Sets the interpolated mesh points between the probed mesh points

Fade

In the above example observe we have enabled bed mesh fade. This trims the amount of compensation the bed mesh is applying over a height range. Here the fade starts at Z=4mm and has been completely tapered off and eliminated by Z=12mm.

Full Bed Meshes

Full bed meshes aren't useful for production printing because they are stale almost immediately, yet they are useful to evaluate the shape of the bed. Having a large probe matrix, such as the Elegoo “Professional” size bed mesh, isn't going to tell us significantly more about the overall bed shape than a 6×6 or 9×9 mesh in less time. We'll want to be using Adaptive Bed Meshes run at print time for production prints and they'll have a denser mesh for just the object size.

G29

Note: the G29 gocode is a marlin gcode and not an actual gcode in Klipper, and in Elegoo's distribution of printer.cfg it may, or may not otherwise, be implemented as a macros. Klipper instead natively implements the BED_MESH_CALIBRATE command which features a richer set of parameters and can accomodate adaptive_bed_mesh. As such consider that using G29 instead of the Klipper command is unreliable and unpredictable as its behavior may change. There's no reason not to use the Klipper correct BED_MESH_CALIBRATE.

Full Bed Mesh

Run the following in the console to generate a full bed mesh that you can use to evaluate how flat the bed is compared to the bed level.

G28; Home (optional)
BED_MESH_CLEAR
BED_MESH_CALIBRATE

BED_MESH_CLEAR is realistically optional as the BED_MESH_CALIBRATE will overwrite the default or named mesh.

Adaptive Bed Meshes

Read the Orca docs on Direct Adaptive Bed Mesh Compensation

Use the following in Orca's Printer Machine Start gcode:

BED_MESH_CLEAR
G28
BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0

While the defaults (-99999,-99999 & 99999,99999) will specify the whole plate is probe-able, this isn't actually the case. If you find the printer tries to probe beyond the plate borders you just need to copy in your bed mesh boundaries to Orca's Printer settings, yet the defaults will work unless you're printing close to the ends of the bed.

Example for N4 and N4Pro:

printer.cfg file

[bed_mesh]
mesh_min:10,21           
mesh_max:210,211         

Orca Printer Configuration: