I don’t have a SV08 so this is all theory.
Tracing through the macros (with assistance from Claude AI) the stock sequence looks like:
Z Offset — How It’s Determined in This Config
This config uses two probes and a dedicated Z offset calibration plugin — it’s meaningfully different from the stock SV08 approach.
The Two Probes
[probe] — the Eddy current sensor (inductive), on extra_mcu:PB6. Used for bed mesh and QGL. Has x_offset: -17, y_offset: 10. Its z_offset is stored in the SAVE_CONFIG block at the bottom of printer.cfg (z_offset = 1.0).
[probe_pressure] — a physical contact/nozzle-touch probe on PE12. Used exclusively for Z offset calibration. Its z_offset is hardcoded to 0 because the nozzle is the probe tip — by definition zero.
Z Homing
endstop_pin: probe:z_virtual_endstop
Z homes using the Eddy probe as the virtual endstop. The homing sequence moves the toolhead to X191, Y165 (center) before triggering it.
Z Offset Calibration — [z_offset_calibration]
This is a Sovol custom Klipper plugin (not stock Klipper). It works by:
- Moving to the bed center (
191, 165) and touching down with the Eddy probe to establish a reference
- Moving to the endstop position (
289, 361) and touching with the probe_pressure (nozzle contact probe) to get the true nozzle-to-bed distance
- Computing the difference — that difference becomes the Eddy probe’s
z_offset, which is then saved via SAVE_CONFIG to the #*# block in printer.cfg
This is triggered by Z_OFFSET_CALIBRATION, which is called from _CALIBRATION_ZOFFSET:
QUAD_GANTRY_LEVEL → CLEAN_NOZZLE → Z_OFFSET_CALIBRATION
The offsetadjust Variable
saved_variables.cfg contains offsetadjust = 0. In this config, offsetadjust is reset to 0 by the _auto_zoffset delayed gcode and is never applied via SET_GCODE_OFFSET anywhere in START_PRINT. There is no SET_GCODE_OFFSET call in the print start sequence at all.
This means the only active Z offset is the one stored in the SAVE_CONFIG block (z_offset = 1.0 on the [probe] section), computed by the Z_OFFSET_CALIBRATION plugin each time it’s run.
Summary Flow
Boot / pre-print
│
▼
Z_OFFSET_CALIBRATION plugin runs
│ Eddy probe touches bed center
│ Nozzle contact probe touches endstop point
│ Difference calculated
▼
[probe] z_offset written to SAVE_CONFIG block in printer.cfg
│
▼
G28 Z → homes using Eddy probe + that z_offset
│
▼
QGL + BED_MESH_CALIBRATE (Eddy probe, no additional offset applied)
│
▼
Print starts — no SET_GCODE_OFFSET, offsetadjust is unused
Notable Issue
Since offsetadjust is always reset to 0 and never applied, there’s no way for the user to apply a persistent baby-step correction via the saved variables system. Any live Z adjustment made during printing (baby stepping in Mainsail) is session-only and lost on restart. If the nozzle-to-bed distance needs tweaking between full Z_OFFSET_CALIBRATION runs, there’s no path to save it.
In typical Sovol style any babystep correction is lost on start_print.
The eddy “touch” at the beginning of the process does use a method similar to Eddy-NG to find the Z axis position (counts) at nozzle contact.
I find it amusing that on the Zero Sovol abandoned the loadcell under the plate and uses eddy taps as the only reference. If that works (it does) why not use it for the SV08. The SV08 Max has no loadcell and uses eddy taps.
Fix
Append this line at the end of the start print macro:
SET_KINEMATIC_POSITION Z={printer.toolhead.position.z - 0.0}
Change 0.0 to your correction value. Positive moves nozzle away from bed, negative moves it closer.