How to persist Z-Level set with G1029 D <value> across restarts?

I used the automatic bed leveling with the new dual print head to level the bed and this actually works pretty well as I get really consistent print quality across the bed. However the offset from the print sheet is always way too high usually about 1.5mm above the board. I tried to fix this with a manual Z-Level from the menu but this was pretty hit and miss as I had to do it with the calibration card and getting this consistent is hard enough for one extruder, almost impossible for two extruders.

So I went with the automatic leveling and then corrected the Z-Level with G1029 D and did some test prints until the offset was just right. However after a restart of the machine the Z-Level would again be as calibrated so I would need to issue another G1029 D to set it correctly.

Ideally I wouldn’t even need to do this stuff in the first place if the automatic leveling wasn’t too high all the time. But until a fix for this is available, is there a way to persist the Z-Level that was set with G1029 D across restarts? Is there maybe another way to achieve what I want?

There should be no need to do that… Mine levels pretty well with a little z offset on each extruder.

Anyway, not sure what your workflow is and not if mine work for your parameter.

Are you able to save with M500 after you set the G1029?

Maybe record your M503 before and after to see the difference?

If not, you could edit your start gcode in every slicer except luban (yet?), so it would simply set in your preheat phase of every print.

Hope it helps.

After using G1029 D, you then have to use G1029 S for the values to be saved to the EEPROM/firmware.

1 Like

M500 seems to do the trick, thank you very much! I cannot add a G1029 D to the gcode because that setting is relative to the current value. So say I added -0.1 to every gcode, the first print would be ok but the next print would lower it by another 0.1 and then the nozzle would start diving into the bed. But as I said, M500 works splendid.

So my workflow is now:

  1. Run auto-bed leveling.
  2. Do a test print for first layer.
  3. Use G1029 D <value> to adjust Z-offset (positive means up, negative means down)
  4. Do another test print. If not OK go to step 3.
  5. Use M500 to store the adjusted Z-offset.

Again I would be happier if all I needed to do was step 1 but at least this workflow is faster and more repeatable than the calibration card stuff.

Using G1029 S didn’t seem to work for me. I did a test print until i was satisfied and then issued G1029 S. This had the effect that the head tried to start the print at the home position 30cm in the air. Using M500 worked great though. Anyways thanks for taking the time to make a suggestion, I appreciate it!

The G1029 S command has to be used while the nozzle is located at the center point of the bed, and with the nozzle already at the appropriate height, as when it is typed in, it saves the current position as its new start point.

1 Like

I see. I think for my workflow using the M500 command is a better fit then, as I don’t manually place the nozzle. Thanks for explaining why I saw these strange results, it’s always good to understand what you’re doing. :+1: