M600 manually injected pause for color change failures

@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

1 Like

Sweet I will keep my eye out for that. Thanks

Yep, M600 will be enabled in next version of firmware.



Neat-so I’m guessing you’d either have to manually insert this, or use the “pause at layer” cura plugin?

This feature is working now. SuperSlicer and PrusaSlicer insert the M600, and the machine pretends to run out of filament to let you load some other filament.

It’s a shame the touch screen does not understand that its just seen an M600 so it appears like a filament runout event, but, at least it works. Its up to the slicer to adjust nozzle temp, so initially its best to use a material that you would print at the same temp. SuperSlicer lets you insert custom GCode, so you could modify the nozzle temp straight after the M600. Or, of course, you could adjust the nozzle temp on the touch screen.

I would advise to watch print speeds though, the machine stops quite abruptly which may throw the Y modules of alignment

Would this be related to why I’ve never had a print where resuming (after manual pause on the touchscreen) actually worked?
It sort of works, but it seems that a number of print commands are skipped, and the resumed print does not stick to the part from before the pause.

Hmm, don’t know about that, the times I have used pause / resume it has worked

I was wrong, I thought the touchscreen maintained the previous filament temp after a change. It does not, it seems to maintain the temp set when loading the new filament, which by default is 200.

This is annoying. Means either custom GCode to set the nozzle temp after the M600, or an extra interaction with the touchscreen to set the correct temperature again.

Thank you for your reminder.

I tried to use M600 to change the filament and then resume. The current temperature in Snapmaker Luban console is still 205℃ while the one on the touchscreen is 200℃.

Snapmaker Luban console


I have reported this issue to our software developer. This issue is likely to relate to the touchscreen.

Best regards

1 Like

Users can refer to this article to use M600 in your gcode file.

1 Like

Next step could be to include the filament change into Luban :wink:


Thank you for your feedback.

Add this feature in Snapmaker Luban is the next step.


Prusa does this with a right click on the layer slider and add color.

1 Like