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:

https://github.com/ITmaze/snapmaker-firmware/issues/2

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

1 Like

Sweet I will keep my eye out for that. Thanks

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

EDWIN

2 Likes

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

Touchscreen

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

Best regards
Edwin

1 Like