Skip to content

Z Compensation

Tim edited this page Aug 15, 2026 · 2 revisions

Z compensation

klippy/extras/z_compensate.py — per-print auto-Z-offset orchestration. New code, not a port: Creality's real z_compensate_wrapper.so has no published source anywhere; this module's design was inferred from strong reverse-engineering evidence (it delegates into PRTouch's primitives, and its bl_offset config value matches [bltouch]'s own y_offset exactly).

What it does: called once per print, before bed-mesh calibration — a per-print thermal/wear fine-tune, not a one-time factory calibration. Applies the correction as a live SET_GCODE_OFFSET for the current session by default; permanent persistence is opt-in (persist_offset) since baking it into the saved probe z_offset via SAVE_CONFIG would trigger a mid-print Klippy restart.

XY-reference fix: live-qualified during PRTouch physical qualification (2026-08-12–14) — mirrors the same XY-reference correction PRTouch itself received.

Status contract: exposes structured status (not gcode text) via Klipper's object-status/webhooks mechanism, so GuppyScreen and Moonraker can poll programmatically rather than parsing command output.

Config note: [z_compensate] has its own tri_min_hold/tri_max_hold values, distinct from [prtouch_v2]'s — a genuine per-feature sensitivity retune, not a duplicate/mistake.

See also: PRTouch, NebulaOS Changes.

Clone this wiki locally