EDIT: Solution posted at post 33. Search for:
--- SOLUTION---
To get to it easily.
What is the problem?
Printer does not resume correctly after a GCODE pause. I set a pause to insert a nut at a specific layer in Prusaslicer. Printer properly pauses at the layer that was set. Hotend moves away from the print object. I insert the nut and am ready to resume. I click "Resume" in Octoprint. Print head moves to correct X-Y position but prints a layer "in the air" before then moving down to the position of the next layer. So the print fails.
What did you already try to solve it?
Print pauses and resumes correctly if using a SD card.
I tried changing the GCODE scripts following old threads. I reviewed older threads that were similar but not quite the same, and nothing in those threads I've tried has worked so far.
I believe I have the scripts back to their original state, with anything I tried so far either removed or commented out.
I also tried creating a new printer from an unchanged factory default printer in Prusaslicer and adding the Octoprint connection to it. My original printer had some changes where it didn't heat the nozzle until after the bed levelling check.
Have you tried running in safe mode?
Yes
Did running in safe mode solve the problem?
No, same behavior
Systeminfo Bundle
octoprint-systeminfo-20250617134900.zip (97.4 KB)
Additional information about your setup
OctoPrint version, OctoPi version, printer, firmware, browser, operating system, ... as much data as possible
OctoPrint 1.11.2 Python 3.9.2 OctoPi* 1.0.0cam (build 2024.11.05.100055)
Prusa MK3S+
Prusaslicer 2.9.2
Prusa-Firmware 3.14.1+8237_74a577bc0 based on Marlin FIRMWARE_URL:GitHub - prusa3d/Prusa-Firmware: Firmware for Original Prusa i3 3D printer by PrusaResearch PROTOCOL_VERSION:1.0 MACHINE_TYPE:Prusa i3 MK3S+R
Test files attached.
TestRing_PETG_2.gcode (58.4 KB)
TestRing_PETG_1.gcode (69.4 KB)
6/25/25 EDIT:
Contents of GCODE scripts. If not marked, the section was blank. This inclues some commands I'd tried but have commented out. As far as I know this is how it came installed, I definately didn't figure these commands out on my own:
;================AFTER CANCELLED
;M604
; After print job is cancelled:
; disable motors
M84
;disable all heaters
{% snippet 'disable_hotends' %}
{% snippet 'disable_bed' %}
;disable fan
M106 S0
;================AFTER PRINT JOB IS PAUSED
;M601
;M104 S{first_layer_temperature[0]-50}
After Print Job is Paused
{% if pause_position.x is not none %}
; relative XYZE
G91
M83
; retract filament of 0.8 mm up, move Z slightly upwards and
G1 Z+5 E-0.8 F4500
; absolute XYZE
M82
G90
; move to a safe rest position, adjust as necessary
G1 X0 Y0 Z180
{% endif %}
;================BEFORE PRINT JOB IS RESUMED
;M602
;M104 S{first_layer_temperature[0]}
Before print job is resumed
{% if pause_position.x is not none %}
; relative extruder
M83
; prime nozzle
G1 E-0.8 F4500
G1 E0.8 F4500
G1 E0.8 F4500
; absolute E
M82
; absolute XYZ
G90
; reset E
G92 E{{ pause_position.e }}
; WARNING!!! - use M83 or M82(exruder absolute mode) according what your slicer generates
M83 ; extruder relative mode
; move back to pause position XYZ
G1 X{{ pause_position.x }} Y{{ pause_position.y }} Z{{ pause_position.z }} F4500
; reset to feed rate before pause if available
{% if pause_position.f is not none %}G1 F{{ pause_position.f }}{% endif %}
{% endif %}
===========END Octoprint Scripts
This is the slicer startup code for my MK3S printer for what it's worth, to see that its positioning settings:
G90 ; Absolute Positioning
M83 ; extruder relative mode
M140 S[first_layer_bed_temperature] ; set bed temp
M109 S160 ; Set extruder temp before bed level
M190 S[first_layer_bed_temperature] ; wait for bed temp
G28 W ; home all without mesh bed level
;G80 ; mesh bed leveling set 3x3, 5x5, or 7x7 in settings menu
G80 X{first_layer_print_min[0]} Y{first_layer_print_min[1]} W{(first_layer_print_max[0]) - (first_layer_print_min[0])} H{(first_layer_print_max[1]) - (first_layer_print_min[1])} ; mesh bed levelling
G1 Y-3.0 Z0.6 F1000.0 ; go outside print area
M109 S[first_layer_temperature] ; wait for extruder temp
G92 E0.0
G1 Z0.2 E8 ; Purge Bubble
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.5 F1000.0 ; intro line
G92 E0.0
========== END Slicer startup GCODE