Does Snapmaker and Luban allow for CNC tool change?

Hello All,

I am looking to get some questions answered about the CNC function. In college (2.5 years ago) I did a lot of part design for manufacturing through CNC. Though we mostly did aluminum on a large HAAS machine I feel the principles apply well to SM and would be beneficial. My main question is can SM and Luban work with G-Code from Fusion 360 if there is a command to change tools? Would the program stop allow me to manually change the tool and continue on? Or do I need to have separate G-Code files for each tool? This would add a lot of complexity and time with re-finding the work piece homer and making sure they match up. Can anyone provide feedback? I am still waiting for my machine to arrive but I would like some answers now. I really don’t want to be doing all my carving with a 1mm diameter flat end mill.

Thanks in advanced for reading this and providing your feedback.



Tool change is not supported right now. Probably never.
I think this is very complex in firmware, because of handling the controller with the touchscreen.
@Snapmaker-Edwin @JKC20

1 Like


I can answer jusf few of the questions, which you are asking. Based on the experience which I made till now.

  • Or do I need to have separate G-Code files for each tool? - I did it this way, I tried the change of tool in program, but this does not work. As, there will be not the same Z position of the tool, then you need to readjust this as the new origin point. When I created programs, I splitted it in the logical way and keep the starting and ending X-Y posiiton the same.
    I have done some PCB designs till now and changed engraving tool with 2 different drills and then 1,5 flat end mill. The smallest part which I made was 4,3x4,3mm and the result was quite OK for me.

Hope that this will help a bit.
Only problem which I have experienced was the engraving, setting of the proper height of the tool for 0,15 engrawing depth was quite chalenging due to paralelity of the axis and flexibility of the material which I was milling.


Thanks for your response. I’m glad to hear you have had some good success with the separate G-code files. I will keep this in mind when I am designing my parts and generating the machine path!

It works fine setting separate g-code for each bit. In fusion 360 it’s easy to do this.
The only tricky part is your z-axis origin. If the z-origin doesn’t get carved it’s easy. If it does you have to measure from a different point. Or use same thickness material off the piece. Or use a caliper and measure bit length from collet and calculate. Or use a straight edge across the piece and calculate the offset. Just make sure you don’t change the x and y.


forgive me if this is a stupid idea, i’m new to CNC carving, but wouldn’t adding proximity sensors (like the capacitive one on the extruder head) help solve the Z offset issue? then all you would need to know is the probe offset for each tool head? and i feel like that could be calibrated at the start of each run or set manually in the G code. please correct me if i’m way off base.

1 Like

My CNC experience is limited to tinkering with the Snapmaker 1 and using a X-carve in a local woodworking shop. The X-carve has a Z probe sensor that sets the Z height by passing a current through the milling bit and then ‘touching’ the probe base on the top/left side/bottom side to calculate the home position.

Wouldn’t something like this be useful to resolve the ‘tool change’ issue, or have I missed the point?


Can you add a wait command and manually combine the Gcode files/commands?

Wait command

G4 P60000 will wait for one minute. The P is in milliseconds. Some firmware also accept a S Parameter that has the seconds. So, if supported, G4 S60 would do the same thing.

For me this will be an essential feature as well.

Mr_Fen is right and that’s the way they should have done it.
You would have a reference point that would let the SM know how far the bit was extended and it would automatically adjust Z accordingly.

Even though they didn’t the workaround is super easy. It’s easier to do than to explain it. You just have to export a separate path for each bit you’re using. The SM remembers your origin point so you just have to reset your Z origin with each bit. Whether you do that using the work stock (if it hasn’t carved the original origin), a different section of the work piece that hasn’t been milled or an extra piece of stock depends on the project. The only problem is if your bed or your stock isn’t flat your measurement could be off. You could mill your bed flat, mill a sacrificial piece on top of the bed, or you could just set up a calibration piece in the corner of your bed that you set Z with every time and then set x and y separately.

If you wanted to you could build a sensor with a piece of metal stock and an ohmmeter to manually do what Mr_Fen described. Clip a lead to the bit and one to the metal stock. Use the continuity function where it beeps and lower the bit until it beeps. Then you have to do some math either in Fusion or on your SM to adjust the z origin.



This sounds like a new addon device to be added to the roadmap!


Dear Madam or Sir

For me it is worth. The CNC does not start due to having a toolchance in the gcode.
At least with the same drill (the smallest one) the machine should work.
Ok … I have to possibility to split the raw-code with a lot of work. But I do not know whats so complicated to make a simple “stop”. I make then a manual “new calibration” and it is going on again.


Like this?

Hopefully soon I’ll have one that works for auto z height setting using G38

Also, @xchrisd, I think it’s not so hard. Just need to recompile with EMERGENCY_PARSER, and even without touch screen support at least the break and continue g code will function, allowing M0 to be used for a tool change, followed by M108. Scheduled pause at specific layer in print job

1 Like