Skip to content

[BUG] ( PARK_HEAD_ON_PAUSE fails to park when restoring mid-print with G92 Zx.xx) #28355

@Coltranne

Description

@Coltranne

Did you test the latest bugfix-2.1.x code?

Yes, and the problem still exists.

Bug Description

I don't have power recovery enabled for another problem. So when the power fails and I try to recover the print using G92 Zx.xx to set the Z position (without homing Z), but homming X and Y

If after a while if I need to pause the print or change filament, the PARK_HEAD_ON_PAUSE / ADVANCED_PAUSE_FEATURE fails to move the nozzle to the park position.

Bug Timeline

No response

Expected behavior

As PARK_HEAD_ON_PAUSE / ADVANCED_PAUSE_FEATURE. When you click PAUSE/Change Filament or the filament sensor triggers, it should move the printhead UP and PARK the nozzle at the intended location, and move back to the print on Resume

Actual behavior

When you press Pause or Change filament, the printhead just STOPS in place. The LCD and Extruder work as intended. It loads and unloads filament and do purge when prompt on the screen. When you click continue, the printer just continues printing but without ever deviating from the before/after pausing, leaving a big blob of plastic over the print.
(I mitigate this by pressing the extruder lever so it cannot push filament) and loading the filament by hand until I feel resistance (reached the nozzle)

Steps to Reproduce

Restart the printer (power cutoff) mid-print
Cut the gcode file to match the already printed state and recover the print
Home X and Y axis
Use G92 Zx.xx command to tell the printer the current Z position (Example G92 Z143.82)
The printer just continues printing normally. The not intended behaviour appears when you Pause or Change filament

Version of Marlin Firmware

bugfix-2.1.x Feb21/2026

Printer model

CoreXY

Electronics

BIGTREETECH SKR MINI E3V3

LCD/Controller

TFT35 E3 V3.0

Other add-ons

No response

Bed Leveling

None

Your Slicer

Prusa Slicer

Host Software

SD Card (headless)

Don't forget to include

  • A ZIP file containing your Configuration.h and Configuration_adv.h.

Additional information & file uploads

I reviewed the code and I think I found the problem (vibe coder here).
On pause.cpp this code checks if all axis where hommed before doing Park

// Will the nozzle be parking?
  const bool do_park = !motion.axes_should_home();

I changed it to
const bool do_park = !motion.axes_should_home(_BV(X_AXIS) | _BV(Y_AXIS));

So now ignores the Z axis. Tested it and it works fine, at least for me.

I don't really know if this affects other functions. But it could be implemented differently
Like with another G-code command that tells the printer all axis where hommed
or "G92 Zx.xx S1"

Configuration.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions