M600 manually injected pause for color change failures

On Craftbot I’ve used the M600 command to manually inject pauses between layers for changing filament color.

I tried the same thing on my Snapmaker 2.0 and found that when it gets to the pause it moves odd the bed and it ejects the filament just like I want. Unfortunately the buttons for loading filament don’t come up on screen and there is no “resume” button. It has a “pause” button on screen. If I push the pause at that point it just freezes and can’t recover.

Any suggestions on how to do a hot swap of the filament on Snapmaker?

Yea, the resume features are not implemented unfortunately. That’s something I’m hoping to change in the firmware soon enough, but in the meantime I think your only option is to slice with S3D and use the multi-process wizard to generate separate files for each color.

Possibly Cura has similar features.

Anyone else have any ideas?

I’ve just created an issue on my Firmware version for this, just so we can track what’s needed - and even hopefully apply patches to the SM firmware when it gets released :wink:


Feel free to add other issues to keep track.

Thanks to both of you! I appreciate the responsiveness. I look forward to the change, I’ve got several multi tone projects I’m going to hold off on till this one is done. I’ll follow and wait for the patch.

@brent113, did you see this reply: https://github.com/Snapmaker/Snapmaker2-Controller/issues/6#issuecomment-730812691

1 Like

I did, I almost replied too. It’s a real problem. The serial buffer fills up, and then no new gcode commands, like a resume command, would be received.

The issue originates in the original HAL implementation for the ST chips, and the ST USB interface apparently cannot have interrupts that would allow that to work.

This GD chip implementation is different in that the USB to UART is external to the chip. If there’s an interrupt that can be handled from the UART then an ISR can be written to check if the command is for the EMERGENCY_PARSER special functions. Or Something. I haven’t looked into it much.

1 Like

I’m not sure if I follow what you’re saying, but having a squiz through the source, it seems that M600 is linked to ADVANCED_PAUSE_FEATURE, as is, FILAMENT_RUNOUT_SENSOR.

Bearing in mind that I don’t yet have my A350, there is discussion here[1] under 9.1.1 that the SM has a Filament Runout Recovery.

[1] https://support.snapmaker.com/hc/en-us/articles/360041733553-Snapmaker-2-0-3D-Printing-V1-0-0

Which makes me think that even if there was a serial buffer issue, there must be something in the filament runout process that’s dealing with that.

Still digging …

The filament runout doesn’t use serial… that comes over CAN.

Basically this bugfix PR needs to be modified for the GD using not USB and merged into HAL

I just checked and saw that the bug report was closed back in November. I saw there is a new version of the firmware, but it doesn’t mention fixing this issue, and I didn’t see anything in the bug report notes.

Has this been fixed then?

No it hasn’t, i tried this same thing and had the same issue, the only i got it to work was to print to the m600 then change the filament then cancel the print modify the gcode file with notepad++ as if I was doing a restore a failed print and upload the new gcode file with everything before the m600 deleted then make sure that before the first print line i move the nozzel to the correct z with g1 to the correct z height.

You can cut the filament and feed the new color without even triggering the runoun sensor. It’s not layer-precise but it works…
/Edit Sry, I meant to reply to the OP.

It looks like this feature has made it into the next release