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.