Pausing a print

  • I am relatively new to 3D printing, have had a Lulzbot Mini for about 6 weeks now, but I have been running CNC's of all kinds for 35 years or so.

    I was using Lulzbots version of Cura but I am looking to do more then it wants to do, also I can not handle the yellow/green ish colors.

    One of the things I would like to do is in the middle of a print pull up, move off to the side and stop (M0) so I can change filament or inset hardware etc. I read someplace about a guy doing that with a supposidly stock Lulzbot Mini using Simplify3D.

    I installed MatterControl a few days ago and have only done a few prints with it, liking it but still very much getting used to how it works.

    I did a test, I exported a small 12 layer print to gcode, opened it up in notepad++ and inserted a line with a M0 at layer 6. Loaded it back into MatterControl and run it, it went right by the M0 line, it was in the terminal window but the printer did not stop.

    So I am wondering how they are doing it in Simplify3D. Any ideas.


    Andre B.

  • @Andre-B said:

    > I can not handle the yellow/green ish colors.


    MatterControl does not yet have the ability to pause the print at a certain point, but that feature is on our short list for development so you can look for that in the next few months.

    In the meantime, I think you're on the right track with the M0 command, although this only pauses for a specified amount of time so I don't think this is what you want to use. Also, your printer must be running firmware that supports the command-- which if you haven't flashed it with anything else should be running Marlin firmware by default which does support the M0 command. See the RepRap GCode article for specifics on which commands are supported by which firmwares and for general reference of commands.

    That said, perhaps you did not issue the correct parameters after the M0 command? Not only must you issue 'M0', but also then specify how long you want the print to pause for afterward. Like so:

    M0 P5000

    Where Pnnn = P[milliseconds].

    In any case, MatterControl has some commands which can be used in GCode or in the Custom GCode fields I'll explain in a moment:




    These are unique to MatterControl and can be inserted directly into GCode which MatterControl reads. I suggest you use @PAUSE instead of M0, which as I explained before, has a hard time limit.

    The other way to accomplish this pause is to do it manually-- which I recommend in this circumstance since you'll physically be there to change the filament or whatever you're doing. MatterControl has a 'Pause' button which shows while the print is running. Clicking it will, by default, pause the print at exactly where the nozzle is at that time. But, then you can get creative.

    You'll use one of MatterControl's custom GCode settings -- Pause GCode -- to give the printer some custom instructions for when you hit the Pause button. Navigate to 'Settings & Controls -> Settings -> Printer -> Pause G-Code' and enter something like:

    Then, when you hit Pause, the nozzle will move up 40 mm and over 60. Change the filament or whatever you need to do, then when you hit the 'Resume' button the nozzle will return to the coordinates it was at when the print was paused and continue printing.

    For reference, any valid GCode commands can be entered in the Custom G-Code section, but be careful what commands you enter. The printer will follow instructions explicitly, and bad instructions can damage your printer. If in doubt, test your GCode using the GCode Terminal (Settings & Controls -> Options -> Hardware Settings) before you enter it in a Custom G-Code field.

    EDIT: Added @ command information, formatting.

    EDIT 2: Changed @PAUSE, etc. to lower case

  • Thanks for the reply.

    I tried the @PAUSE today but could not get it to do anything. Out of time now to try the other stuff you suggest until Saturday or so.

    Is there any info available on how to use these commands and any other commands that may be available? I do have the book "3D Printing with MatterControl" but did not see anything about these commands in it.

    As far as the M0 code it would be interesting to find the reasoning 🙂 behind changing the function of such a basic command especially when a G4 Pnnnn command does the same thing. Every CNC I have run in the last 35 years a M0 will stop and wait until the operator presses cycle start.

    I do respectfully disagree about "MatterControl has a 'Pause' button which shows while the print is running. Clicking it will, by default, pause the print at exactly where the nozzle is at that time." when I press that button it takes several seconds to the better part of a minute to stop.

    Of topic, what is the difference between and which one should I be using?

    I ask because the the editor in this one is not working properly on my computer, it goes off the bottom of the screen and I need to keep using the mouse to scroll it back up to where I can see what I am typing.

    Thank you;

    Andre B

  • Hi Andre!

    I was able to find the issue you reported, and am working to resolve it now. It should be fixed by the next time you use the forum. is the new matterhackers community. is being phased out in favor of this new forum.

    If you have any other issues, feature requests, etc- please feel free to shoot me a PM.


  • Thanks, works much better now on my little laptop screen. On a larger screen with short messages it probably would not have been a problem.

    One of the reasons I am looking into Matter Control is the ability to queue jobs then monitor and control the machine remotely is that when I got the Lulzbot Mini some of the people I work with wanted to see it so I brought it in. I made a few little widgets for use in the shop, stuff we have been wanting but never got a high enough priority to justify the time to make. With the printer it still takes some time to design and setup but then you go do something else for 6 hours and come back to a finished part.

    Anyway another guy and myself got to talking and are now working on a design for a delta that should be able to do 3D printing and light duty machining. We would like to also build a "pallet pool" to work with 2 or 3 of the delta machines.

    At this point it looks like a long road but everything should be doable.

    Andre B

  • MatterHackers


    You are correct, when clicking 'Pause' in MatterControl, the printer will not pause immediately. The machine has a number of commands queued up and it will not pause until they are all executed.

    As to @pause working - Another programmer and I were just looking into that functionality yesterday. He was having some issues with it as well. After, a quick test it seemed to be working as expected, but we will investigate more and see if there is something happening here that is unexpected. I would try to make all of these commands lower case however. That is how they are intended to be added to gcode.

    • @pause
    • @restore_xyz_position
    • @restore_e_position

    Thanks for the feedback.

  • Lower case did the trick. I only tried the @pause so far.

    This is what I added to the code.

    ; LAYER:5
    G0 X59.682 Y31.495 Z1.329

    Deleted a bunch

    G1 F2178 X48.761 Y27.302 E32.42659
    G0 F10500 X49.679 Y27.834
    ; Change color
    G91 :Added line
    G0Z5.0 :Added line
    G0Y40.0 :Added line
    @pause :Added line
    G91 :Added line
    G0Y-40.0 :Added line
    G0Z-5.0 :Added line
    G90 :Added line
    ; LAYER:6
    G0 X49.846 Y25.859 Z1.529
    G0 X49.88 Y25.461

    And this is what I got back in the terminal.

    ->N599 G1 F2178 X48.761 Y27.302 E32.4265956 [513.945]
    <-ok [513.952]
    ->N600 G0 F10500 X49.679 Y27.834
    115 [513.953]
    <-ok [514.255]
    ->N601 G9122 [514.257]
    <-ok [514.317]
    ->N602 G0Z5.0
    92 [514.318]
    <-ok [514.321]
    ->N603 G0Y40.0111 [514.322]
    <-ok [514.329]
    ->Communication State: Paused
    <-ok T:240.0 /240.0 B:110.5 /110.0 T0:240.0 /240.0 @:62 B@:0
    <-ok T:240.0 /240.0 B:110.4 /110.0 T0:240.0 /240.0 @:62 B@:0
    <-ok T:240.4 /240.0 B:110.2 /110.0 T0:240.4 /240.0 @:47 B@:8
    <-ok T:240.1 /240.0 B:109.8 /110.0 T0:240.1 /240.0 @:59 B@:62
    <-ok T:240.1 /240.0 B:109.5 /110.0 T0:240.1 /240.0 @:61 B@:127
    <-ok T:240.8 /240.0 B:109.4 /110.0 T0:240.8 /240.0 @:36 B@:127
    <-ok T:240.6 /240.0 B:109.6 /110.0 T0:240.6 /240.0 @:46 B@:127
    <-ok T:240.8 /240.0 B:109.9 /110.0 T0:240.8 /240.0 @:40 B@:99
    ->Communication State: Printing
    ->N604 G0 X49.679 Y27.834 Z1.329 F10500
    42 [514.333]
    <-ok [514.342]
    ->N605 G9118 [514.343]
    <-ok [514.347]
    ->N606 G0Y-40.0
    71 [514.348]
    <-ok [514.354]
    ->N607 G0Z-5.0116 [514.355]
    <-ok [514.358]
    ->N608 G90
    30 [514.359]
    <-ok [514.366]
    ->N609 G0 X49.846 Y25.859 Z1.529120 [514.368]
    <-ok [514.374]
    ->N610 G0 X49.88 Y25.461
    22 [514.375]

    The only thing I am wondering about is the line after the restart, not sure where it is coming from.

    ->Communication State: Printing
    ->N604 G0 X49.679 Y27.834 Z1.329 F10500*42 [514.333]

  • So can you tell me exactly what the command @restore_xyz_position does? I'm looking to pause the print using the software pause button, manually move the extruder with my hands to perform some changes (not the program movement controls) then home all axis, then press the resume button in the software to resume the print. What commands should I be adding to the "Pause G-Code" and "Resume G-Code" text boxes? I'm assuming just adding the following to the "Resume G-Code" textbox will work?

    G28 ; home all axes


Log in to reply

Looks like your connection to MatterHackers Community was lost, please wait while we try to reconnect.