Tool changes And Z Height

Hey Steve,

just made a few tests. Despite the G28 command moved the Z into the highest possible position (Z home), ‘G38.2 axes’ computes target position with offsets valid, hence the possibility of a limit error.

For the moment, depending on your program loaded (that defines the offsets), try to decrease the Z-100 value until it fits.

What is the procedure for changing the bit? After the first cut is made the router goes back to the home position. Not the original probe position. There is a message on the screen that says Gcode message. (See Picture). When I Click continue the router starts slowly lowering to within about 1/2 in. above the home position. Than I get a message saying to make sure bit is above the probe block. (See Picture). The joy stick will not move any thing. I have to turn the controller off to move anything.

Hey Steve,

you have a typo. The “G0 X0 Y0” and the rest that is shown should not be inside the message! Looks like you omitted a closing parenthesis on the “Change tool and thighten collet” message!

The second message says you did not put the probe underneath the bit when probing started. That is the fault of the rather short messages. I left them untouched, but I would replace

M0 (MSG, attach probe)


M0 (MSG, Please connect the touch probe to the controller, place the touch probe underneath the bit and attach the magnet end to the collet of your router.)


I think that was the problem, it seems to be working like it should. I did omit the parentheses. It worked with the test gcode I made up. Thank you very much for your help. I really appreciate your help.


Hey Steve, hey all,

I don’t know where the stock Onefinity g-code in the ‘tool-change’ field of SETTINGS page comes from (you know, the code before the modification, that is unusable and let the users stuck with no possibility to change the bit or to probe), but two things are not understandable:

  1. What means the comment “probe to minimum z soft limit, which is -10”? This makes no sense. I would remove this comment.

  2. There is a G91 (set incremental distance mode) lacking before the G38.2 probing command. It should be there since otherwise you probe towards an absolute position (relative to the new probed workpiece zero of Z axis though)

Can you try this (insert a G91 before the G38.2 probe command) and tell me if it works like expected now, with G38.2 Z-10 and G38.2 Z-100? I can’t test it since I have only the Onefinity Controller here, but no machine attached to it :slight_smile: (which means as long as I don’t probe, the machine thinks the steppers move according to the commands, that’s what “open loop” steppers mean :wink: )

In the ‘tool-change’ field of SETTINGS page, please replace

G38.2 Z-10.0
G92 Z15.4
G0 Z30


G91 G38.2 Z-10.0
G92 Z15.4
G0 Z30

(the Z-10 and the Z30 can, of course, additionally both still accomodated to your needs)

Hey all,

feel free to test this (you can copy it with all the comments directly into the ‘tool-change’ field of SETTINGS Tab):

Aiph5u’s ‘tool-change’ routine


(Runs on M6, tool change)
M70 ; Save modal states
G90 ; Set absolute distance mode
G21 ; Set metric units mode
S0 ; Set spindle speed to 0
G53 G0 X0 Y0 Z0 ; Go rapidly to the home position
M0 M6 (debug, Please insert tool Nr. #<_selected_tool> and tighten the collet with both wrenches)
G0 X0 Y0 ; Go to the workpiece X and Y zero
G0 Z35 ; Lower Z to a position 35 mm above old workpiece zero before probing
M0 (MSG, Please connect the touch probe to the controller, place the touch probe underneath the bit and attach the magnet end to the collet of your router.)
F100 ; Set feedrate to 100 mm/min for probing. (which means slow)
G91 ; Set incremental distance mode
G38.2 Z-50 ; Move the probe downwards until we reach the touch probe
G92 Z15.4 ; Set this position as the new Z zero value (to reflect new tool length - including subtraction of the probe's height which is 15.4 mm thick)
G0 Z30 ; Lift Z by 30 mm
M0 (MSG, Please remove the touch probe and start the router)
M72 ; Restore the modal states that we previously saved with M70 above

(Feel free to accomodate the Z-50 and the Z30 to your needs)

Note 1: The above ‘tool-change’ routine is for the case you have the workpiece zero on top of the workpiece in your 3D model. Should you have the workpiece zero at the bottom of your workpiece, you have to disable this line by prepending a semicolon:

; G0 X0 Y0                                                    

; Go to the workpiece X and Y zero

This will make that you probe on machine bed at home position instead of workpiece top.

I will work on this to automatize the selection of these two different cases.

How to copy this ‘tool-change’ routine to your machine

  1. Open a new browser tab on the user interface and open the page you look at at the moment by navigating to its URL or by pasting the exact URL ( into the URL bar.

    Note that attaching a USB keyboard (and a USB mouse) to the Onefinity Controller, or opening the user interface in the web browser of a computer connected remotely over network (http://onefinity.local) helps a lot, especially as the touch display’s on-screen keyboard lacks a Ctrl key :frowning: which you usually use for “select all” (Ctrl-A), “cut” (Ctrl-X), “copy” (Ctrl-C), and “paste” (Ctrl-V).

  2. Please follow these steps:

On the SETTINGS page, click into the ‘tool-change’ text field, do “select all” (Ctrl-A), and “cut” (Ctrl-X)

Switch to the new tab which shows this forum page. Select the new routine with finger (touch screen) or pointer (mouse). Now “copy” (Ctrl-C) to clipboard.

Now go back to the Onefinity User Interface tab, click into the 'tool-change" field, and “paste” (Ctrl-V)

Click on the green “Save” button.

Now on the next occurence of M6 (tool-change) in your g-code, the new tool-change routine will be used.

Note: Inside the ‘tool-change’ text field, all text after the “;” is treated as comment and ignored. Therefore you can paste the routine with all its comments, it will still work.


I will try it out this evening if I have a chance.

1 Like

You know some of us are going to have to change this to a G20 operation right? :slight_smile:

(And the absolutes you used in your probe offsets like Z35…vs a nice Z1,5 for those of us who use the King’s measurement system.)

Hey Jim,

surely not. This is only used inside the ‘tool-change’ routine. At the end of the routine, as you can see, all modal settings that were previously active are restored with M72. If you had units set to imperial before, they will be imperial after, same applies to any modal settings. A tool-change routine would make no sense if it changed something of the calling g-code program :slight_smile: It just probes for new tool length and resumes program exactly where the program was, including all of its modal settings. The reason to use metric inside the tool-change routine is because the machine internally uses metric values, so you have no conversion.

Hope you are reassured! :slight_smile:

But someone’s OCD might rebel against having a metric program running :wink:

1 Like

Would you know if the Elite Masso controller would be able to do something like this within the user interface settings or how something like this would be accomplished for manual tool changes using the Masso controller?

you can jog and move the elite in between tool changes unlike the buildbotics controller

1 Like

Hey Mike,

this thread was originally not about the Elite/Masso, but about the buildbotics-derived Onefinity Controller of the Original X-35 / X-50 (today PRO) Series.

As OnefinityCNC already answered, you can jog around during tool change (not possible with the buildbotics-derived Onefinity CNC Controller (request 1, request 2)). Additionally, the Masso offers this for manual tool change:

Setting tool change position

To be able to change tools easily, a tool change position can be set. This option is also helpful if your machine bed is very large and you want the spindle moved to a certain location for easy tool change, for example on the front of the machine every time a tool change is required.

Double click the 1: Manual Tool Change in the list and the below Tool change position window will open where the axis position for a tool change can be entered.

Automatic Door

The manual tool changer logic has provision for opening and closing an automatic door.

For more information on integrating an automatic door with manual tool change please visit the section on adding Automatic Doors

– Source: Manual Tool Change – Masso Documentation


Would an automatic tool changer be an option with the elite controller?

1 Like

The Software is already built into the masso controller.

1 Like

Here’s a video of someone who did it with the Masso pre-elite

1 Like

Hey GrimResistance,

you would still need an ATC spindle like the Jian-Ken JGL-80 or the Mechatron ATC-8022-42-HSK25 (Unboxing video), a tool magazine, and the pneumatics to run it. See all this in action here. Tom @TMToronto already presented here the Masso G3 before the Onefinity Elite Series came out.

The Masso Documentation for different tool changing setups is is here.

Onefinity offers a tool setter here. You could also buy another one, e.g. here.

1 Like

Thank you for pointing me in right direction… much appreciated.

I’d like to get deeper into custom programming the Masso post processor to see if I can gain any efficiencies for batch production work, such as using multiple fixtures/jigs, etc. Since Masso can more gracefully handle manual tool changes, can you think of any pros/cons of running a single gcode file with multiple manual tool changes vs running them as separate files, one for each tool change?

1 Like

Great to hear! Thank you.

Hey Mike,

usually you would say, if your program is well-tested and mature for production, one g-code program with all the tools saves time.

Many forum members here say the advantages of one g-code program per tool is that you can change the program for a certain tool easier or re-run a pass easier. They put the name of the tool into the file name, and the pass that it is for.