Question on Pause printing

Hi Everyone

I am very new to 3D printing. Hope someone can help with my problem.

I am using Octopi to pause the printing so I can change the filament. I have entered the pause script into Octopi as DR Vax showed on his video.
I’m using the Ender 3 V2.

The pause seems to be working except it does not unlock the extruder.

Here is my script code

{% if pause_position.x is not none %}
;Play some tone to notify us
M300 S440 P200
M300 S660 P250
M300 S880 P300
;Relative XYZ
;Relative E
;Retract Filament, move Z Slightly Upwards
G1 Z+10 E-5 F4500
;Absolute E
;Absolute XYZ
;Move to safe reset position, adjust as necessary
G1 X0 Y0
;Make sure position steppers stay powered on to lock position
M17 Z X Y
;Unlock the extruder stepper so we can use the dial
M84 E
{% endif %}

How 'bout changing the M84 to M18?

I tried that also. Did not work.
Here is another strange thing. After about 2 mins of pausing the fans really slow down and all the steppers become unlocked.
then extruder temp stays at 200

;Make sure position steppers stay powered on to lock position
M17 Z X Y
;Unlock the extruder stepper so we can use the dial
M84 E

Well, the script is doing some overkill. The M17 command is not required at all, since the motors were already used by the printer there is no need to lock them. This is obsolete.
M18 and M84 are the same command, but they may not be implemented both, even so they share the same code. I used M18 in all my old crappy Marlin 1 firmwares, so I guess it is always there.

To avoid any troubles i would remove those lines above and use just
M18 S9999 ; set overall timeout to 9999 seconds to prevent xyz getting loose during pause.
M18 E ; unlock the extruder

The two minutes delay you are experiencing are the 120 second build into Marlin by default. Using the “S9999” prevents the printer from unlocking the motors within the next 9999 seconds, which should be enough for a pause and filament change, while a 120 second delay is more on the short end. This is important as the printer remembers the location of the print head and if you accidentally move the head 1mm to any side, the print will get an 1mm layer shift in the very same direction. That is why you want to lock XY and z in any case.

Also the temperature has nothing to do with this command. This is all about the motor. The temperature is only important if you want to extrude something. In that case the firmware will not engage the motor when the hotend is cold, to prevent pushing filament against a cold heater block. You as a human can try this as any time, as no real harm is done unless you have super powers. Without super powers the wheel will not turn, when the hotend is cold.

The “M18 E” above just unlocks the active extruder motor.

The M18/84 commands are a little “broken”. You cannot set the timeout and unlock the motor in the same run, which is kind of stupid. That is why I did the two commands above instead of using them in one line.

You should be able to test this in the terminal of octo print
M17 E
and the extruder motor is blocking
M18 E
should unlock it immediately and free the turn wheel.

When the extruder is cold you may not be able turn the extruder wheel, even when the motors are unlocked. This is because the filament inside the heater forms a blob, which prevents it from getting out. Same for the other direction. 1.75mm filament does not fit though a 0.4 diameter nozzle, when the hot end is cold. Thats why heating the hotend is a must in any case before using the extruder by firmware and motor or by hand.


Thank you for your response.

In the terminal window a “M18 E” or “M84 E” does not unlock the extruder
An “M18” does unlock all Steppes including the extruder
An M18 X unlocks all stepper motors

So, how 'bout an M18 to unlock everything, followed by an M17 X Y Z to lock the X, Y, & Z steppers again?

M17 X Lock all steppers

Its seems all or nothing

What firmware is running? This does not sound like a recent Marlin of any kind.

Agreed. It sounds old. That, or a lot of commands have been removed in order to fit it into available memory.

Firmware is 1.0.2
Just got this printer last week

Have a look at this: [U][/U]. CHEP has a version of firmware based on Marlin 2.0.7 bugfix.

I upgraded the firmware from chepclub. It now 2.0.x
Still the same problem

I don’t quite understand certain things about gcode. Actually I don’t understand quite a lot but I am trying to get a feel for it. It seems to me that gcode can be interpreted differently by different versions of Marlin and different slicers.

No there is a fixed rule set. Shared by CNC and 3d printers. It just got a little complicated due to repraps and marlins separate development.

Not all commands are needed and therefor not available. Some gcode commands that are just system specific like pause and park, filament load and unload or bed levelling and control commands. There is no harm done, when they are not there. It then is just a missing feature.

Some commands just got a stupid syntax like the M18 command is not able to set an overall timeout and unlock a motor at the same time. It does not even return a proper error when using S along with XYZ or E as argument, so the user does not even get informed in that case. It should return with SYNTAX ERROR and do nothing.

I think I should put my toe in the water and start learning more about gcode. Do you have any recommendations for a reference manual and some beginners tutorials?

There is not much to learn as it is not a programming language. It is enough to know a few you need for your workflow.

The marlin site provides a searchable index of all available commands:

Yeah, the Marlin reference web page is pretty well done. It explains the commands and gives examples.

That’s exactly what I need thank you, gentlemen.