Pause at height working - sorta

I have an Ender 3 Pro, and, like others, apparently, getting it to pause at height is a bit of a challenge.

When I would use the “Pause at height” plugin in Cura, I choose ‘M0 - Marlin’, so that an M0 is used for the pause.

Here’s what it generates:

;added code by post processing
;current layer: 29
M83 ; switch to relative E values for any needed retraction
G1 F300 Z7 ; move up a millimeter to get out of the way
G1 F9000 X190 Y190
G1 F300 Z15 ; too close to bed--move to at least 15mm
M104 S100 ; standby temperature
M117 Insert Hex Nut
M0  ; Do the actual pause
M109 S210 ; resume temperature
G1 F300 Z6
G1 F9000 X110.29 Y112.18
G1 F300 Z6 ; move back down to resume height
G1 F1500 ; restore extrusion feedrate
M82 ; switch back to absolute E values
G92 E382.32025

The problem is, it hits the pause, moves to the park position, waits maybe 30-40 seconds, and comes roaring back over to where you’re frantically trying to get a hex nut to sit down in the pocket you created :slightly_smiling_face:

I couldn’t find much, but M25 was suggested, but it worked the same.

I decided to try a pause time parameter on the M0 command. You can use p(msec) or s(seconds), so I tried M0 S120 and ran it again.

It paused, moved to the park position, and started cooling down to the hold temperature. At exactly two minutes, I heard the steppers engage, and the temperature started coming back up. Once up to temperature, it resumed the print. Total time - about 4 minutes.

Does anyone know what the limit is on the S parameter? Two minutes isn’t enough to do a filament change. Or is there a way to have it stay on “Press to continue…” on the display, until you’re ready to resume? While the 120 seconds was counting, I could press to resume, but once the timer ran out and it was heating up again, I couldn’t.

Any ideas would be welcome.

Have you tried adding in G4 S#; #= seconds to pause.

I saw that one, but it’s essentially the same problem. It also doesn’t say how many seconds I can have it pause.

I’m thinking of a filament change. I don’t want to be like the bomb tech in the movies :slightly_smiling_face:

Hi there

In order to make the Pause work it has to be first enabled in the firmware.

Generally speaking, if you do not have a filament runout sensor functioning on the printer the pause at height feature will not work.

Off the top of my head, I believe it’s a G60 and G61 commands that need to be enabled with the runout sensor. They are used for Saving the current position and Returning to the saved position. Marlin by default will not enable them without the Runout sensor because unless you are doing precisely this they are actually not usable in any other circumstance.

Guess that filament runout sensor I’ve been meaning to make just moved up the queue.

Thanks - that explains a lot.

Try This, this fixed my Klipper pause at height function to work as you are wanting with heat maintained and a continue choice to start again. It may work for your issue as well.

First I added this command to the Printer “Manage Settings” location.


The square brackets are required.
I also printed using all the choices and RepRap worked best with Klipper but maybe Marlin will be fine without Klipper. RepRap is required in the postscript settings when using Klipper but not in the printer settings so leave it on Marlin in the printer settings, onlyuse RepRap in the postscript settings if using Klipper.

Now we setup the Post Processing script. Remember I used Klipper so I chose RepRap but you may be fine with Marlin.

My prints stop, maintain temp and asks for continue on the screen.

Hope this helps.

1 Like

HI @sonic.cues

Awsome information, Thank you for sharing.

I just noticed that you are running Klipper.

What are you using for your PAUSE/RESUME macros in your printer.cfg?

This is something that comes up pretty regularly in the various Klipper forums and there are a number of solutions within Klipper to the implementing these functions (along with cancelling a print).

I am new to 3D Printing but have been fascinated by computers since the 1980’s. I have about two months experience 3D printing but learned volumes in that time.

I am very friendly with them and somehow manage to tweak things I learn into novel solutions.

I never need a glue stick or any other aid to bond to the bed. The brim is my friend and I use it to tune my adhesion by making the layering of the filament the perfect thickness to bond without being to thin or thick. This is required each time I manually and auto level. I have to tune the brim each time I set the printers level function.

In this case I watched many videos on the [Pause_resume] to change filaments for color change.

They did not work but the search educated me to enough of a degree to attain my own solution.

That solution is as Mentioned above and is working perfectly.

In Creality Slicer I place the [pause_resume] comment in the start G-code printer settings which is now in every slicing function. If not needed it does nothing but the knowledge of pause and resume is told to Klipper every slicing I do.

I understood from many videos that Klipper needs to be told this so this tells Klipper each time I slice anything, to understand this weather I need it or not.

I also printed using all the available G-code Flavors to see what happens. RepRap worked as it is the closest choice to Klipper in coding language. All others did not create the resume function and simply stopped the print which sucked. I choose my G-code Flavor in the postscript location as RepRap all the time since I always use Klipper. If you use Klipper then only use RepRap from that time forward in postscript settings. Leave printer settings on Marlin.

Lastly you need to add a “Post Processing script” to the slicing function. I change it to Layer not Height. I switch the Method to RepRap (M226) for Klipper instead of Marlin which is the default for a CR-10 Smart Pro printer. I set the parking position as shown above. I redo the chosen layer. I want the temp to stay close to the actual so I have the temp high enough to change filament and resume is fast. Lastly is the word “pause” in the line for “G-code After Pause”. This tells Klipper to Pause but without the “[pause_resume]” in the printer settings Klipper will not understand the word pause.

I don’t edit the printer.cfg file at all. I just do this as the pics above show. This works fantastic, the print pauses, the temps stay where I told them (205) and the resume button is on the screen. Couldn’t be better.

Hope this helps and you can ask more if you like since I like to help.


I realized this morning that choosing RepRap in the printer settings is a bad Idea but you still choose reprap in the postscript settings. So everything in my how to above is great except the printer settings must stay on Marlin as a G-code Flavour. My Bad. Once I made this change my printer now stops as advertised and awaits the resume button.


Oh nice, It would have taken me a long time to get there if at all.

Nice catch and I learn something new today too… LOL

Thanks for sharing.