BitSetter in the future?

Will there be a BitSetter in the future? :thinking:


+1 :+1:

That would be a GREAT addition to the machine. Hopefully its already in their “bag of tricks” that will be reviled soon as additional accessories.

BitSetter takes the guess work out of your tool change bit height… AWESOME!



I don’t want to speak out of place because I don’t have the OneFinity, (yet), but their 3 axis touch plate will be able to zero all three axis or just the Z axis alone. This means that you will be able to use it to initialize your origin at the beginning of a carve and use it as a “bit setter” after a bit change during a multi bit carving to reset your Z axis height without messing up your X and Y axis setting. Three axis probing IS the way to go!!


Morning Charlie,

Totally agree with you a 3-axis touch-plate can accomplish the same thing. One of the main benefits (at least in my mind) is that the Bit Setter is attached to the machine all the time and you program in its location. That way every time you have to do a bit-change, it automatically goes over to its position and double checks new z value and recalculates the cut.

You can certainly do the same with whipping out your 3-axis, connecting the magnet to your bit, then resuming the zeroing process, then putting it all away. But the Bit Setter is a set it once and forget it tool.

The less I have to do the more likely I am to remember do something. :slight_smile:



Well if there is one thing I can’t do, it’s to argue with that logic!! But I never forget things like that, at least never more than once, or twice, maybe three times a year, or maybe each day of the year.


LOL sounds like you and I suffer from the same OOPS Syndrome from time to time. :slight_smile:

Well at least we are in good company.

1 Like

I also have a several cnc machines, one of them a shapeoko xxl with spindle and cnc4newbie z axis.
i run the bitsetter and find it one of the most useful tools to get repeatable z axis bit changes very fast.
i run a lot of multi tool(3 or more) jobs and this is a great thing to power down, tell you the bit number to load, you load and hit go, and it zero’s automatically. Then it powers up and continues on.

the only thing close for the onefinity is depth stop collars right now.

these guys will set the depth if you know what you want it set at. they set depth rings precisely positioned to ±0.0015 in. (0.038mm), virtually eliminating the need for resetting Z-axis zero

great place to buy bits at a good price as well.


This would be a great add on!

Chris Powell at Full Steam Designs uses locking collars and a block with a preset depth to make an inexpensive, homebrew bitsetter alternative.

He has lots of great tips and shortcuts too. Check him out!

1 Like

Is the controller capable of using a bit-setter? It would seem to me if it is capable of using a touch probe, then a bit setter would just be a different script. Yes? No? Maybe? : )

1 Like

Technically aren’t they functionally the same? Don’t have experience with these yet but seems to me that you change bits and reset your z… Tool pathing would say how deep to go after that. Am I missing something?

an auto z (like the bitsetter) has a fixed known location (usually outside the cutting area, but in Shapeoko not) that you machine automatically taps after every tool change. So for example if you changed mills mid job it would just automatically measure the new zed height then carry on with the new operations.

1 Like

EDIT removed Z12 from second to last line as this had the potential to cause a crash if using machine bed for zero

Howdy Folks,

Start with thanks to Warren Brown for reposting from Bulidbotics forum on this subject.
I’ve managed to write a tool change that mimicks a bit setter. There seems to have been some interest from some people out there on this. It works a bit differently than Carbide Motion but gets the job done, drawback to this is you have to probe both tools on every tool change, but don’t have to probe the first tool on the bit setter before zeroing work piece as is the case in Carbide Motion. I’ve tested this with Vectric and it works in all situations that I’ve attempted for different size materials etc. I’m just using the 1F probe flipped upside down no other probe or bit setter required.

Need to be careful and make sure you attach the magnet when prompted as this is set to seek all the way to the bottom of the Z slider. Also, if working with very thick material if the Z offset after you zero the Z to work piece is more than -25.4mm or -1 inch when I say more than I’m meaning 0 to -25.4mm or -1 inch, it will error as an over. I’ve tested with up to 2 1/4" thick material with Z slider on the lowest mounting point and 3/4" wasteboard.

This will make for very simple tool changes where the material is unlikely to be in the way. If you’re working with a large piece and need to set the probe on top somewhere you may run into an issue with height to change the bit. The code is mostly done in absolute values so I recommend trying to work from the area that I’ve specified but you can, of course, modify to your liking.

Here’s the code that I’ve entered into the Controller>Settings>tool-change dialogue box with some explanations in { } DO NOT ENTER these parentheses or anything between these parentheses!
BACKUP YOUR CONFIG before doing this. THIS IS AT YOUR OWN RISK. Also this is for the Woodworker, the machinist would need different X value on line #6.

I’ve tested it in as many different configurations as I can think of and it has worked for all of them. Once I had the controller pause when touching the probe and wouldn’t continue, but I’ve had that happen a couple times on a regular probe so feel it is likely a little hiccup with the controller.

M70 {Pause modal}
S0 {Spinle to zero}
G21 G40 G49 {Metric, cancel tool offsets}
G17 G90 {XY, Absolute Coordinates}
G53 G0 Z-10 {Move to 10mm below absolute zero}
G53 G0 X800 Y15 {Move to bottom right, you may need to change these coordinates if you
pocket a hole for probe}
G92.2 {Temporarily suspend offsets}
G53 G0 Z-70 {Move to -70MM absolute}
M0 (MSG, Wait for the spindle to stop. Attach Probe, Click “Continue”) {Prompt for 1st probe cycle}
G38.2 Z-133 F100 {First probe}
#5000=#<_Z> {Store Value from first probe}
G53 G0 Z-70 {Move to -70 absolute}
M0 (MSG, Change Tool, Attach Probe. Click “Continue”) {Prompt for tool change and attach magnet}
G38.2 Z-133 F100 {Second Probe with new tool}
#4999=#<_Z> {Store Value from second probe}
G92.3 {Restore original offsets}
G0 Z25.4 {Move to 25.4mm above original Z}
G92 Z[#5000-#4999+25.4] {Calculate diff in tool height, set new Z0}
G53 G0 Z-10 {Move 10mm below absolute zero}
M0(MSG, REMOVE MAGNET!!! Click “Continue”) {Don’t forget this}
G0 X0 Y0 {Return to Workpiece XY 0}
M72 {Restore modal}

Trying to post a video as well but am having trouble getting it to email from my phone. Feel free to send me any questions, I’ll do my best to answer them. And again a big shout out to Warren Brown!!

Here’s the code again without explanations so you can copy and paste.

G21 G40 G49
G17 G90
G53 G0 Z-10
G53 G0 X800 Y15
G53 G0 Z-70
M0 (MSG, Wait for the spindle to stop. Attach Probe, Click “Continue”)
G38.2 Z-133 F100
G53 G0 Z-70
M0 (MSG, Change Tool, Attach Probe. Click “Continue”)
G38.2 Z-133 F100
G0 Z25.4
G92 Z[#5000-#4999+25.4]
G53 G0 Z-10
M0(MSG, REMOVE MAGNET!!! Click “Continue”)
G0 X0 Y0


Video of bit setter mod. I’ve since pocketed out a spot in the corner for the probe.


Resolved by removing Z12 from second to last line

There is a potential for a crash with this code that I overlooked. It would be possible to have a crash when using machine bed for zero. This code is written to put Z to 12mm after tool change so if using machine bed for zero and workpiece is thicker than 12mm it will be a problem. Will work on a solution to this. I think the easiest solution will be to just remove the Z12 call on the second last line and let the software move bit down after tool change.

I also should have mentioned that due to
the many possible combinations of router/spindle and Z slider configurations the Z heights may need to be altered to suit your setup.

This was written with Makita with Z on lowest position and a 3/4” wasteboard.

Any updates or changes to this @BNB187?

Do you manually inject this or did you add it to the post processor?

No modification required to PP the code gets entered into the settings on the controller. For this version just copy and paste everything into the tool_change dialogue box and it will run automatically when file calls for a M6.

I’ve been using the 2.0 version that is linked here for several weeks. It measures the first tool at the beginning of the file and then only has to measure the each subsequent tool when you make the change instead of probing both tools at tool change. Drawback is if using the laser the code in the program_start dialogue has to be disabled on the 2.0 version. I’m likely going to switch back to this version that measures both tools when the M6 is called now that I have my laser.

Keep in mind the machine must be homed for this to work properly. And I’ve only tested with 1.0.5 firmware.

1 Like

So big upgrade to this code with a huge shout out to @Cryptonym he re-wrote my very basic code to include subroutines. Really streamlined everything, top notch work Warren! So this version will measure both tools at the first tool change, each subsequent change will only need to measure the new tool. Also, it will carry the tool # forward to the correct dialogue box. Also, I added a move towards the middle of the machine for the actual changing of the bit, little easier than working way off in the corner. This version will not cause problems with the laser.

So this has been tested with the Onefinity PP for Vectric. I’m not sure how other PP’s or software will work with this code. Firmware 1.0.8. I suspect that all the 1F PP’s will be similar so should work for them. IF your gcode has an M06 command for the FIRST tool there is some modifications that can be made to avoid the first probe sequence that would be unnecessary.

In the program-start dialogue box under settings in the flyout menu copy and paste the following:

(Runs at program start)
G90 (Absolute distance mode)
G17 (Select XY plane)
o10 sub
G53 G0 Z-10
G53 G0 X780 Y50
o15 if [[#5000] EQ -999]
M0 (msg, Remove Dust Boot, Attach Magnet, Click “Continue”…)
o15 else
G53 G0 X600
M0 (debug, Remove Dust Boot, Insert Tool #<_selected_tool>, Attach Magnet, Click “Continue”…)
G53 G0 X780
o15 endif
G53 G0 Z-70
G38.2 Z-133 F100
G0 Z[#<_Z>+1] F100
G38.2 Z-133 F25
o10 endsub

In the tool-change dialogue in the settings copy and paste the following:

(Runs on M6, tool-change)
S0 M5
G21 G40 G49 G17 G90
o20 if [[#5000] EQ -999]
o10 call
#5000 = #<_Z>
G53 G0 Z-10
o20 endif
o10 call
#4999= #<_Z>
G0 Z25.4
G92 Z[#5000-#4999+25.4]
G53 G0 Z-10
#5000 = #4999
M0(MSG,Remove Probe, Install Dust Boot, Click “Continue”…)
G0 X0 Y0