Let's talk about quirks of the firmware

Not to beat up Snapmaker, but I think it will be healthy to say ok, what exactly in the firmware is weird and should change.

Recently I mentioned the sort order on an existing file will put your file at where it was originally located, and you can choose to resort the list by date to fix it, but it doesnt hold.

Another thing that I think that would be nice to address is - if you start a job, and decide to cancel it before it starts to make an adjustment to the slice, you have to wait for the heating routine to quit before you can actually start a job again. It seems like it should doable to abandon a job and its heating routine, despite the fact that the gcode is “waiting for temperature”.

If you are lucky, it will eventually go back to main screen, or it will just be stuck on a screen that says start but the temperatures reduce while you are unable to do anything else.

There are more quirks than I care to list here, so the most important one to me is one that has been mentioned many times.


Applies to the touchscreen as well.

1 Like

I thought that the estop button did something differently than gcode? on the bus level?

a real estop should be interrupting power :stuck_out_tongue:

With that said, if there is estop gcode available why would they not have that enabled? thats silly. there should be many ways to disable the machine for safety purposes. especially if you are running CNC!

but yes, please… stop means stop… even on the touch screen.

The estop button is processed using an interrupt coming from the CAN comms channel.

Marlin’s intended emergency stop function for gcode is supposed to be handled via a serial interrupt from the comms channel but I believe there have been issues trying to generate an interrupt from serial/USB data on these GigaDevices microcontrollers. So instead, the emergency stop command is handled as normal gcode, where it is executed after the planner has synchronized, meaning all intended motion or heating has completed before execution of the stop.

The controller sends commands that are handled via a separate FreeRTOS task in the controller. As it’s running in parallel with the Marlin task there is no reason it has to be as slow as it is. It would be possible for that button to immediately halt and reset Marlin, but that would be equivalent to power cycling Marlin, requiring rehoming. I think for convenience they opted not to, and instead it is treated similar to the normal gcode halt command.

The Luban “emergency stop” button also goes through the same touchscreen channel.

I could source my own button to emergency stop the machine for less than the button they provide does but mine would work faster.

The fact that the process has to finish, the motion or temp or whatever, just makes it a physical manifestation of the same stop button on the display.

Outside of emergency stop, i feel like stop should cut the temperature waits and so forth as it is, but in emergency stop format i dont know how they could expect it to be anything but exactly that.

I understand that having a physical button is nice for safety, and would allow you to kill the process from screens beyond the main screen progress window, but thats not really a safety feature more than a convenience at that point.

Maybe we should just offer our own emergency stop button that interrupts 24v voltage to the controller like it should be

1 Like

Some issues I know of (keep in mind, I’ve only played with 3dp, I’m sure the other modules are just as “fun”):

  • issuing commands/actions from the touchscreen while e.g. octoprint is issuing commands over USB leads to a bad time
  • M290 Babystep isn’t available, even though the touchscreen has pretty much that same functionality
  • you can’t keep the heaters enabled while using G1092 A (supposedly, you can while using the touchscreen? Why can’t us octoprint users get that functionality?)
  • if you powercycle the machine mid print (since there’s no true e-stop, it’s the only reliable “oh $#!t button”), it totally messes up saved leveling (haven’t dug into what, but not redoing the leveling after power cycle leads to a bad time)
  • there’s something wonky with connecting luban(linux) <> SM machine, @scyto took a peek at the wifi setup in there and its apparently all kinds of crazy, probably the real issue
  • G2/G3 leads to a bad time (it’s supposedly supported, and using it works on large arcs, but small arcs are a no-go)
  • “thermal runaway” is triggered if you accidentally get too much cooling while dropping temps

This issue is on its fixing schedule. Will be fixed in a future update.

1 Like

Why interrupt 24v and not the mains power? I have the Snapmaker power supply’s mains plug attached to an Ikea smart plug (US$10 - TRÅDFRI Wireless control outlet - IKEA) and can comfortably power cycle via either an external switch (US$7 -TRÅDFRI Wireless dimmer, white - IKEA) or by google voice command (“Ok Google, Reset Snapmaker” (-> smart plug off, wait 10 secs, smart plug on).


This is all a matter of my opinion and my own experience. You can do that… but I wouldn’t call this an “emergency stop”.

It really depends on what you want out of the feature in this decision.

Using google voice to interrupt voltage during an emergency is relying on this voice activation feature which is hardly consistent enough or safe enough to use as a substitute for “emergency stopping”.
Furthermore, relying on an outside to process and execute a command over your network is just not swift enough compared to interrupting power via a tried and true emergency stop button/switch, which is why all industrial equipment has them.

I use smart outlets in many areas of my house, such as to control my fan, the automatic litter box, and my lighting… but saying “Alexa” then saying “Turn off the Snapmaker” (then watching a blue circle spin around before a beep then an execution of command at BEST case scenario) is not something id put my safety into. Especially since I frequently have to repeat myself. Even assuming the google assistant is more reliable, its too many unnecessary hands in the pot for the task at hand if you are trying to accomplish a safety mechanism.

You could, if you choose, interrupt main voltage to the power supply just the same with an emergency stop button, but main voltage is not as safe to work with, and I think technically cutting the 24V output would be a little faster since the power supply maintains a little residual voltage. This might be to the benefit of resume task though, since it relies on that residual voltage to kind of mark where your project is before the voltage disappears.

I personally have a comfort level to interrupt main voltage as I work with hard wired switching power supplies frequently, but I don’t think I’d try to extend that to everyone. You could simply use the output cable from the power supply into the button, then back out of the button to the controller and interrupt things cleanly. Interrupting only 1 pin from the power supply would be simple to accomplish inside and you can pass thru the other pins with no ill effect.

I would also like to add that I don’t think the “recovery” command is very reliable in the first place. Actually, I’ve had instances where filament runout recovery executed as power loss recovery for some reason, and I was unable to resume the project regardless. These are firmware quirks that need ironed out yet, but it’s hard to even pinpoint them because things happen at random on you when you are doing things, so it would require a sit down to pinpoint when this occured and why, which may or may not have the dividend of being fixed in the first place.

There is nothing wrong with using your smart outlet to cycle power on the machine, but i wouldnt want to count on that to be my safety. I also don’t find the need to cycle power to my machine very frequently, although some people claim its a requirement between jobs, I don’t agree with that assessment and the only time I find myself restarting is if I try to cancel a job and the cancelling get stuck. I think maybe in some cases people may be missing some start and end gcode to properly set the machine to the correct travel mode and homing.

1 Like

I keep my hand hovering over the power supply switch when doing the first print after a calibration, just in case I screwed something up (because that never happens, right?).

I have used these on a few benchtop machine tools and like them a lot. I have a spare one for an actual router table I never completed (short version: I started using hand planes because I hate the handheld router that much). I am considering plugging the snapmaker into it.

And yeah, an E-stop that just sends a CAN bus message isn’t an E-stop. It’s just a stop.