"Calibrate Z-Offset" / "Tune" does not save my setting

Hi,

After having had bed adhesion problems outside the center 30% of the build plate for a while, I’m now having them now across the whole plate. Even adhesion helpers (glue) don’t help.

So I tried “Calibrate Z Offset” again. And it looked like the “too high” pictures in the manual. So I’ve tried “Tune”. I can change the offset during “Tune”, and indeed it has a visible effect. I’m changing the value between the dots, and the really do look different. After seeing the desired result, I go to “Save & Exit”. But then nothing happens. It does not even exit.

And at the next “Calibrate Z Offset”, it looks like before I went to “Tune”. My tuning is gone.

What can I do?

Thanks

Hello,
What filament are you using?
The solution may vary depending on the type of filament.

I’m using PLA. In between, I was experimenting with TPU, if that matters.
Oh … one more thin I’m not sure if it matters: For a good result, I had to go into negative values in the “Tune” submenu.

Generally, PLA is very easy to print. You don’t even need to heat the bed with it.
TPU is very different and more difficult to print. With TPU you need to print very slowly and allow the time to layers to bond together.
For PLA, the issue is likely due to your slicer’s setting.
Did you use the default settings of the slicer?

“Tuning” is temporary for that print.
You will have to edit the print config file in Klipper for it to be permanent.

@cardoc

For PLA, the issue is likely due to your slicer’s setting.

I don’t think this is the case here. If I try to print the same gcode file that worked previously, it fails now.

So it can only be something in the printer that changed.

You will have to edit the print config file in Klipper for it to be permanent.

Oh, that’s interesting. I’ll try that. Can you tell me from the top of your head where this config file is?

But what is even more strange to me is that I need to adjust this at all.

The printer is relatively new and it has less than 500 printing hours. At first, “Calibrate Z-Offset” always looked good, without the need to “Tune” (I started to try “Tune” today). Over time, it looked like “too high” more and more. How can this thing have a “drift” without any change to the hardware?

I’m still not 100% comfortable with Klipper myself, to tell you how to make a backup then edit the file. I know how to do it, but honestly I don’t want to make a mistake.

As for it changing after 500 hours of good printing…
When was the last time you re-calibrated your SV08…do a full calibration…gantry, bed level..??

I did the full procedure directly before trying “Tune”: Gantry, Bed Mesh, Belt test (although unrelated).

Being an experienced Linux user (it’s my daily driver for work and private since >10 years), I’m very comfortable with editing config files. :grin:

As for the Klipper famlilarity … this is my second printer. The first one was a much simpler model that died of old age :wink: and it was based on Marlin. Klipper is definitely much more powerful. Marlin isn’t even suited for fast printers who need kind of 2 CPUs: One “Arduino”-like for the stepper motors and one “Raspberry”-like for motion calculations, network, web interface, …

I’ve read that the Sovol firmware is a derivative of Klipper, and that there is a way to put the “original” Klipper onto it. But because there is always a risk to brick the device, I’m not yet ready to do that.

1 Like

To focus on the original topic of this thread, I’ll offer this.

Sovol EXPECTS users to do everything VIA the knob screen interface. Several of their macros don’t play well with input the web UI (mainsail/fluidd/klipperscreen).

Sovol CoreXY Z Offset Handling

Also applies to the Sovol Zero and the SV08 Max

This is a well-known SV08 pain point with a few distinct root causes depending on when it resets. The short answer: the SV08 has two separate Z offset adjustment paths, and only one of them actually saves.


How the SV08 Z Offset System Works

There are three layers involved:

For reasons unknown, Sovol chose not to use Klipper’s built in system of saving Z offset to the “do not edit” section of printer.cfg. Instead they created a new variable AND copy that OVER the value in printer.cfg when some macros run.

The offsetadjust value is stored via SAVE_VARIABLE and applied each print start via SET_GCODE_OFFSET. This is the only path that actually persists across reboots.


The Most Common Cause: Two Adjustment Paths, Only One Saves

Path A — LCD knob (saves):

menu.cfg → SAVE_VARIABLE VARIABLE=offsetadjust VALUE={…} → written to saved_variables.cfg

This is persistent. Survives power cycles.

Path B — Web UI (Mainsail/Fluidd/KlipperScreen) baby-step / Z offset control (does NOT save):

Web UI “Z Offset” button → SET_GCODE_OFFSET Z_ADJUST=x MOVE=1

This only adjusts the live gcode offset for the current session. On next power cycle or Klipper restart, it’s gone. There is no SAVE_VARIABLE call in this path in the stock config.

If you’re adjusting Z offset via the Mainsail interface rather than the physical knob, that’s almost certainly why it keeps resetting.


Second Cause: G28 Z After the Offset Is Applied

Klipper’s G28 resets printer.gcode_move.homing_origin.z to 0, wiping any active SET_GCODE_OFFSET Z= value. The stock START_PRINT macro applies the offset at the end of the sequence, after the final home — which is correct. But if anything triggers another G28 Z after that point (e.g., a QGL retry that re-homes Z, or a manual home from Mainsail mid-sequence), the offset gets wiped for that session.

This is also why some community configs add a G28 Z after QGL (to normalize Z following gantry leveling) and then re-apply the offset afterward.


Third Cause: saved_variables.cfg Not Persisting

Check that printer.cfg actually has:

[save_variables]

filename: ~/printer_data/config/saved_variables.cfg

If this section is missing or the path is wrong, SAVE_VARIABLE calls silently succeed in memory but never write to disk. Every reboot starts fresh.

Verify the file exists and has content:

cat ~/printer_data/config/saved_variables.cfg

It should contain something like:

[Variables]

offsetadjust = -0.15

If it’s empty or missing, the [save_variables] config is broken.


1 Like

I asked Google Gemini to rewrite Sovol’s configuration to eliminate use of the hidden variable and use ONLY the Z offset in the “do not edit” part of printer.cfg.

I do not own a SV08 so these are untested.

To install, use Fluid or Mainsail to rename the 3 target files by adding .old to the end. Then upload the 3 edited files. Save and restart

SV08Macros.zip (3.1 KB)


Optional (but highly recomended) PLR and ‘mcu’ shutdown: Move queue overflow