BitSetter and other tool length sensors supported in gSender

Can anyone point me to information on using a tool height/offset probe for tool changing? I have a Shapeoko 3 with the BitSetter and I’m going to try setting up gSender instead of Carbide Motion…but glancing through the gSender start guides I didn’t see anything about it.

1 Like

I’ve got it working @geoffburtner, but they’re a couple things with gSender that I’m waiting on to release it. Have you ever used CNCjs?

Nope, I haven’t used CNCjs…so far I’ve only used the Carbide Motion software that came with my Shapeoko but I’ve quickly outgrown its basic functionality. Any idea on how far down the road a version of with tool offset support will be?

@geoffburtner Are you on Carbide 3Ds forum. Lots of info from me there.
Once they address the M0 for macros it’ll be ready for primetime. I can confirm it works, though I have yet to run a job with gSender.

Just wanted to update here:
My CNCjs Macros will now work seamlessly with gSender (v0.75) and the BitSetter.
These can be imported right into gSender. (1.1 KB)
or, unzipped:
gSender-macros-BitSetter.json (3.1 KB)

For those without a Carbide3D BitSetter, you can achieve the same thing with your probe plate/block. You’d want to use these macros, though. The non-BitSetter ones are currently untested, so I’d love some feedback.

I’d go with gSender with or without BitSetter. So much better than Carbide Motion


The macros are instructional. I tested bits of them successfully on gSender 1.0.0; I need examples and docs like these. Since I use a bash script to post process Gcode files I can insert some of these bits into my Gcode automatically for tool changing.
G53 seems untrustworthy without homing switches

Yes, it is.
That said, homing has been a “standard” with grbl for several years now.


What does having the BitSetter give you over the probe? Is it because its a touch switch and does not rely on continuity like the longmill probe does, thus can be more automated?

By the way thanks for posting these,I will take a look, and see whats going on. I’ve not used macros under CNCjs or Gsender - I know in the “tool change” you can put g-code, but was not sure how you would run a macro there instead.

Thanks again!

1 Like

BitSetter gives you multi tool gcode files. Tool change code.

Right, so does the manual touch plate as well right? you still have to stop the router, get out the wrenches, swap the bits. If I did a macro I could have the longmill go to the touch plate, especially if I mounted it in a little block, it could go zero the zool and be on its way.

I think the bitsetter looks like its 1) spring loaded on its button, this prevents damage when seeking the touch plate on the bitsetter, and 2) it’s got some custom scripting in Carbide motion, that Neil has adapted or improved for use in Gsender.

Is that correct?

BitSetter gives the offset length of the new tool that you switch in at a bit change moment in gcode. That’s the same thing as going back to your probe block, but it doesn’t change the Z-zero.

Ok, got it - Looking at Neils macros, it looks like he creates a temp variable for the current zero, then does the probe, and does some simple math to get at the adjusted “zero” which is recalculated from the original z-height from the original tool (meaning it had to be probed as well) , the known z-position of the bitsetter, and the new z height from the new tool. with that calculation ,you can then compute the new zheight I believe.

I just glanced at the code though, so I may be reading too much into it. I’ve been fighting other code problems and have not had a chance to look at Neil’s work, even though it would probably be more fun :slight_smile:


@mikecmp The bitsetter is a fixed location probe that uses a proximity switch to eliminate the need for adding alligator clips or similar. It is really a well designed accessory, but in the end, it’s just a probe. I was using aluminum foil before the bitsetter.
The idea behind the macros are simple.
Initial Tool:

  1. Set zero.
  2. Probe and store probe’s relative position.

New tool:

  1. Change tool
  2. Probe and set probe location to be the stored value in step two above.
  3. Repeat as necessary.

Thanks @NeilFerreri that was what I gathered skimming the code. What is the main difference between the bitsetter macros and the touch plate ones?

Sounds like you use a Shapeoko - but now use Gsender instead of Carbide Motion - When I first got my longmill I thought the carbide motion software looked pretty decent, What turned you off to using it?


The non-BitSetter ones have included pauses to allow the connection and removal of additional probing wires.


Motion doesn’t think the way I do. I don’t like when the UI software makes the machine do things I didn’t tell it to. Also, I switched away from Motion pretty much off the bat 6years ago or so. It’s much better now, but not enough (yet) to bring me back. I joined the team over at CNCjs, and I really like where gSender is going.
In my opinion, the best thing a sender can do is to make it really clear what the user is telling the machine to do. When they start pushing people to follow a workflow, it will break down.


First of all thanks for sharing these macros! I’m a bit lost. I’ve tested the non bitsetter macros after adjusting to my needs and they seem to be working correctly but they don’t flow intuitively. How do we add this to the tool change in the settings to further automate the process? I’m currently using bCNC and would like to get similar workflow to my current. Ideally after the initial tool probe when a m6 is encountered I’d like to see the popup show the tool that needs to be loaded and when clicking the confirmation the new tool is probed and returned and another prompt to resume the program. Is this possible now or planned for a future release?

1 Like

You’re welcome. They’ve been used with CNCjs for a couple of years. Happy to share. I used to avoid tool changes as much as I could, but now I just use what makes the most sense for the job.

I agree.

I’d love to see Custom messages on M0 pauses. Awesome if those could include variables like Tool_Number.

Also, currently you have to set the Tool Change setting to “Code”. When an M6 is encountered, you have to Cancel the dialog box (not intuitive) to run the Macro.

I’d love to see a “Macro” setting option for tool changes with a dialog box that simply tells you to choose your macro and a simple OK button.


thanks for your reply.

this 100%