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