Modify the leveling procedure to take two measurements and choose the higher of the two.

I’d like to modify the way it measures the bed for auto-leveling and have it do two rounds of measurements and choose the higher of the two measurements. How do I do that?

I suppose ideally it would keep doing rounds until it stopped getting differing measurements - so in a loop.

Also, it really should choose a random place on the corners to measure this height and not the same spot every time.

Also, would be nice to auto level the X axis every print.

I’d be happy to code this stuff up if need-be.


Most of the code that does this is located in the firmware of the printer. To change it, you will have to create the Arduino build environment and then modify the firmware for your printer.

There are thousands of printers out there with some form of auto bed leveling and the existing code works pretty well. Why do you think it needs multiple passes?

You can change the G29 in your start code to be a G29 V4 so that you can see the output of the auto leveling process. You can create a gcode file that contains multiple G29 V4 commands and compare the output of each to see how much variability you actually have.

I think choosing a random spot on the disc would be fine as well. The issue is that occasionally just after the nozzle is wiped, a tiny amount of plastic eeks out of the head - and this tiny amount can leave a residue on the spot where it checks for bed leveling (that can build up over time) - which interferes with the bed level detection.

Choosing a random spot on the disc would resolve this - additionally multiple passes would “help” alleviate the issue if using a random spot is hard for some reason.