Skip to main content

Site Navigation

Your Account

Choose Language

Using the manual bed levelling assistant

The manual bed levelling assistant helps you to level the bed of a Cartesian, CoreXY[UV] or SCARA printer using the manual adjusting screws, when you don't have multiple independently-driven Z axis motors. This feature is implemented in firmware version 1.19 and later.


  • You must have a bed or gantry that is levelled by three or four adjusting screws. Three screws is best, although on a very large bed four screws may be needed.
  • Your Z probe must be correctly defined and calibrated in the M558 and G31 commands in config.g. If you have no Z probe then use M558 P0 to indicate you will manually adjust the nozzle down to the bed (using the paper feeler test or similar).
  • You must use the M671 command to define the X and Y coordinates of the adjusting screws. These coordinates will usually be outside the normal printable area defined by M208. The M671 command must come after any M667 or M669 command in config.g.
  • You must set up a bed.g file in the usual way with at least as many probe points as adjusting screws. As a minimum, you should have one probe point close to each adjusting screw. You can have more probe points if you wish. For example, with a square bed you might choose to probe close to each corner even if you have just 3 bed levelling screws.
  • The value of the S parameter on the final G30 command in bed.g must equal the number of adjusting screws.
  • This facility does not work on delta printers. On a delta printer you can have auto calibration correct for bed tilt instead.

How it works

A valid M671 command enables the bed levelling assistant. When you run G32 to perform bed probing, the final G30 command (the one with the S parameter) in bed.g will cause the assistant to run. It uses a least squares algorithm that minimises the sum of the height errors at the probe points. The amount by which each screw should be adjusted is reported. The adjustment requested for the first screw is always zero.

You can run G32 again to repeat the process.

The process typically causes a small shift in the Z=0 position. To correct this, if you are using the Z probe to do Z homing, you can just re-home Z after making the adjustments. Otherwise, do a single G30 probe at the centre of the bed to set the Z=0 position.


File config.g:

M671 X-15:100:215 Y190:-10:190 P0.5 ; adjusting screws at rear left (-15,190), front middle (100,-10) and rear right (215,190), thread pitch 0.5mm

File bed.g:

G28 ; home
M401 ; deploy Z probe
G30 P0 X20 Y190 Z-99999 ; probe near an adjusting screw
G30 P1 X180 Y190 Z-99999 ; probe near an adjusting screw
G30 P2 X100 Y10 Z-99999 S3 ; probe near an adjusting screw and report adjustments needed
M402 ; retract probe


Add Comment

View Statistics:

Past 24 Hours: 12

Past 7 Days: 82

Past 30 Days: 292

All Time: 5,204