Time sensitive: change filament on CR-10 S5 mid print


What is the problem?
I’m writing to get some help with a print job that is underway. It’s an 11 day print on my CR-10 S5. I’m about half way through and will need to make a filament change in the near future. I had tested using the filament change feature when printing from an SD card, but recently upgraded to the Octopi/OctoPrint solution to run my printer. In a complete rooky move, I didn’t check in advance how best to complete the filament change when running a print from OctoPrint. I was hoping that it was as simple as hitting PAUSE in the OctoPrint UI, then using the change filament feature on the CR-10 S5 control box and then hitting RESUME in the OctoPrint UI, but some reading online this evening made me super concerned that this wasn’t the right procedure and then further reading made me concerned it might not even be possible.

I’m hoping to get some help/advice on the best way to proceed as I have about 24-36 hours until the filament runs out - again well aware of my utter failure to test this in advance. :slight_smile:

Thanks a bunch for any assistance,

What did you already try to solve it?
Read a lot online - but found lots of conflicting info from different time frames about the best options.

Additional information about your setup
CR-10 S5
Running on OctoPrint 1.3.9 running on OctoPi 0.15.1.


(Humor must be obeyed.)

You might want to review your OctoPrint -> Settings -> Gcode Scripts in the areas of before/after pause.

You should know if you sliced this with absolute or relative movements and extrusion. This is critical for this to work. In a case like this, it's good to visit the Gcode Viewer tab, have it sync up with the printer and use this to know precisely which layer you're printing at any given moment. In some cases if the pause/resume goes badly you can cancel the job. You could potentially then create a new GCODE file which starts at the aborted layer, for the win.

Working on the assumption that you don't need to actually cancel the job, it's important to validate your OctoPrint's pause/resume Gcode scripts. I couldn't tell you if it pulls those in at the moment of truth of if it already cached them at the job start. If it's the latter, then your efforts to adjust the scripts mid-job won't work.

If these two scripts are wrong or absent, some side effects may occur:

  • Hotend could just sit there at the top of your part, melting the plastic
  • Hotend could move and then return in such a way that it's now crashed into the top layer badly, even knocking over a tall part
  • Hotend could ooze plastic onto the top of a "for show" surface, ruining the appearance
  • Hotend could return to the wrong place and try to finish the job a few millimeters off from where it should be
  • The hotend filament audit could get off by the amount which you retract/extrude during your filament changeout. This then would either under/over-extrude on the resumed printing.

(You really should have dialed this in before starting such a long print job.)

My best guess would be that you should initiate both pause/resume from OctoPrint.

Here are my pair of scripts, noting that I'm running on a fork of Marlin on a printer with an unheated bed and one extruder and I assume absolute mode on movement and relative mode on the extruder:

After Print Job Paused:

M117 Print Paused
G91 Z              # Set to relative positioning on the Z axis
G1 Z15             # Move my bed down 15mm (or the hotend up 15mm)
G90 Z              # Set to absolute positioning on the Z axis

Before Print Job is Resumed:

M117 Print Resumed
G91 Z              # Set to relative positioning on the Z axis
G1 Z-15            # Put the bed back
G90 Z              # Set to absolute positioning on the Z axis

Mine is simple. Since I always use relative extrusion for slicing, I never have to worry about a filament change causing problems for the filament audit which goes on in absolute mode.

If your GCODE uses absolute mode, then you're going to want to add some M82/M83 behavior before/after. By temporarily going into relative mode, you can adjust the filament feed all you want. Then you set it back to absolute mode before printing and the audit will be happy.


Thanks for the helpful reply. I got a variety of advice from vendors and here! I ended up continuing my gamble and initiated the change filament procedure from the control box during printing. Everything worked as hoped. Print head moved to the side and locked the motors, filament extracted, filament swapped, and once completed, I did have to hit resume in octoprint to get things moving again.

Going to test this a bit more once print is finished, but thanks again fro all the details as I'm going to give them a go once this is wrapped up.



Design a small part (or find the orange/white traffic cone on Thingiverse) and practice pausing/resuming a part which doesn't matter. You can even swap two colors to practice the process.

It's really important to dial all this in. There will be times in the future where you're trying to save a multi-day part again like this.