Z-offset not applied during calibration on K2 Pro (and how to Fix it)

Good morning everyone,

On my Creality K2 Pro I need to use a Z-offset of +0.100 during prints, otherwise the first layer comes out faulty. I was setting this offset in the slicer, but I noticed that during filament calibration—especially with pressure advance—the results were inconsistent for the same filament. Sometimes it gave one value, sometimes another.

I realized this happened because the Z-offset was not being applied during the calibration phase, causing the filament to be pressed too hard against the bed. After studying the machine’s G-code, I tried to manually include the offset in the [prtouch_v3] section of printer.cfg. However, after finishing a print and turning off the printer, the firmware automatically adds a # to the line, disabling the configuration.

I also noticed that the calibration routine is not in a separate macro, so I cannot simply insert a SET_GCODE_OFFSET Z=0.100 before calibration. The START_PRINT macro is executed only after calibration.

To solve this, I created two macros in printer.cfg that ensure the Z-offset is always applied when the machine powers on:

[gcode_macro FORCE_ZOFFSET]
description: "Force fixed Z-offset"
gcode:
    SET_GCODE_OFFSET Z=0.100
[delayed_gcode set_zoffset_on_start]
initial_duration: 1
gcode:
    FORCE_ZOFFSET

Additionally, in gcode_macro.cfg it is necessary to comment out the 4th line in the START_PRINT macro so that it becomes:

#SET_GCODE_OFFSET Z=0

After making these changes, I no longer have issues with inconsistent pressure advance calibration results.

Regarding flow ratio, since the calibration is printed on the third layer of the stripe, the impact was smaller. The results remain the same, but I can clearly see that the surface is much smoother.

Suggestion to Creality: It would be very helpful if the Z-offset configured in the slicer were also applied during the calibration phase. This would improve overall consistency and print quality for users.