A strategy for resuming failed 3D prints with no additional hardware, and medium user intervention - Has this been discussed or tried?

As I understand it klipper cannot resume a failed 3D print because it doesn’t know precisely what the printer is doing, due to the separation between the MCU, and whatever computer is connected to it.

I think I may have an idea how to solve this - we record where the printer could currently be, then we could present the data to operator where they can determine exactly it stopped printing.

It may go something like this:

  • During printing we would record the minimum and maximum position in the gcode that the printer could be.

After power loss:

  • Bed will immediately heat up to previous tempature
  • The printer will move up a preset z value.
    • It will record if it started and if it finished the movement
      • If it didn’t finish it will tell the operator that the z value is corrupted.
    • It will increment the attempted start count.
    • If it has tried moving up enough times it where it is possible to hit the upper limit of the machine, it will throw an error, and any restart will only heat the bed, then do nothing.
  • It will home X and Y, then put the extruder in a position to present the print.
    • Record if the movement was started/completed.
    • Record the original position from homing
    • Maybe don’t do this automatically, as the only thing to gain is the possibility of the extruder not falling into the print, while if it was possible it likely already happened, and you risk loosing your original X Y position information.
  • If the power is lost at any point during this process, it will restart the process.

When the operator intervenes he will put the range of where the printer could be into a modified gcode viewer, where it would be animated with a timeline to show the last possible path of the printer. He then will look at the print to judge where it stopped and go to that point in the timeline. At that point he could export the position and put it back into klipper, where it will resume. Granted the modified gcode viewer is not in the domain of klipper.

Also people sometime just print over a partially existing layer so the precision of knowing where exactly where it is may not be necessary, just take the minimum position.

Homing the Z axis may present some problems, but It has been discussed.

  • If the Z axis didn’t fall, or was in the middle of a movement we can continue as left off.
  • Manually set the height of the extruder to where it should be.
  • Operator can put the printer in a position were it won’t collide with print while homing the Z axis
    • Account for bed mesh if using a bed probe
    • Not always possible

I did not mean to post this yet, please give me time to edit it.
I believe I have finished my edits, sorry for bad grammar.

Hi Silverdev2482,


Did you read HOW TO: Resume/Fix Failed Print?

You also may use the search function here, it was often discussed.

I did skim that earlier and that was not what I was thinking of, although I skimmed through it slower now.

I’m thing of a set of tools and functions that could be built into klipper and a gcode viewer to add the feature of resuming failed prints with only medium user intervention.

That article is not suggesting a feature, but documenting a method of resuming a print that requires major user intervention.

That would be very cool, I’m anxious.

I fear, you need major user intervention!

Did you read Resume print from specific layer after failed print - #5 by koconnor?

I fear, you need major user intervention!

Fortunately not yet, but was recently in a rainstorm with a print I really didn’t want to stop.

I might be restating myself but my method would also resume prints with better quality.

Looked at the thread, but not the github repo yet, that actually looks very promising

The klipper lacks flexibility in the homing procedure.
If you could choose which enstop to home the axis against, then everything can be solved with several macros:
For z you will need 2 endstops, min and max. We use both and record the distance.
During the printing process, a macro is periodically launched that records temperatures, position in the file and everything that is needed for recovery.
When restoring, we use the z endstop that will not lead to a crash.