While I was putting together [GUIDE] Octoprint + (stock) Filament runout detection, I found that the way SM tracks a job being in progress is a bit finnicky, and can get into a bad state (there’s even comments in the code where the team doesn’t understand why things are happening). The easiest way to reset the state is to just reboot the machine.
So in your testing, make sure you try rebooting the machine between each print (and maybe even, between each pause), and that should get you more consistent behavior. (unfortunately, if it only works from reboot → pause, then that means you can only do a single filament swap, which is kinda useless).
Also, for that I found that doing
M600
M76
worked best for actually pausing the print and allowing for me to handle filament runout, so maybe just edit the Pause Print G-Code in Printers in Prusaslicer to send both.
BTW, the reason I did this was because I saw that M600
does basically nothing in the firmware.
BUT WAIT! @scotthuang and team just committed some changes to M600
…
So maybe there’s some fixes coming?
Specifically in this, M600 now calls event_filament_runout
, which means it should actually work for real (before it was just calling ResetFilamentState
which does nothing).