Absolute x, y AND z with BitSetter on initialization

I’ve just gotten the BitSetter (https://shop.carbide3d.com/collections/accessories/products/bitsetter?variant=31288336875581) and the corner square (https://shop.carbide3d.com/collections/workholding/products/carbide-corner-square-guides?variant=31487905988669) and I want to zero the x, y, and z-coordinates to the bottom corner of the corner square on each initialization:

Right now I’m zeroing the x and y-coordinates by moving the gantry as far to the right and back as it can, zeroing the gantry, and then moving it to the absolute position that I’ve written down. I don’t know if there’s a better way to do this?

When it comes to the z-axis, I don’t know what to do though. When the machine initializes, it “zeroes” on the BitSetter and then goes back to the middle forward rapid position. I can’t set an absolute z-height though, since the height of the bit me differ How would you deal with the situation?

I wouldn’t bother with the X&Y zeroing. You can calculate the position of the corner guide as an offset from one of the post-initialization rapid positions, and then layout your design in your CAM/CAD program to suit. Maybe even draw the corner guide in a template project so you always make your design relative to it?

The Z position is tricky. I’m not sure the bitsetter offset position is available anywhere handy, though there might be a gcode instruction to grab it. I think you’d need that and then manually have to calculate the difference between the current value and your “golden zero” value from a previous measurement with a known bit. And your stock would have to be exactly the same size. It’s probably much simple to use a BitZero or a piece of paper each time to find and zero Z.

edit: of course, if you end up using a BitZero it will do X&Y zeroing for you anyhow.

Thanks for the suggestion. I’m planning on making a bunch of the same object on the Shapeoko, so the stock will be the same every time. Being able to set the z-axis from an absolute position every time would spare me from doing it manually every time I initialize the machine.


If it’s a single bit for the job, you should be okay, particularly if you leave the machine on.

If not, you could always risk it and jam the first bit right up in the collet so it’s always just about the same position at the start of the job.

These are all bad suggestions, though :slight_smile:

Haha… jamming the collet all the way up is certainly a way to do it. I guess it would also be precise down to a level of 0.1mm or so?

I would imagine so… if it were clean each time - a build up of dirt, a stray chip, and general wear might make it unreliable.

Have you thought about a BitZero ? If you have the absolute X/Y sorted, doing a Z probe should be very quick indeed.

I have a BitZero. I just wanted to see if I can totally avoid to do any unnecessary x-y-z actions when my stock is the same.

I’m not sure I understand the link with the BitSetter here, but my understanding is that you would like to be able to quickly reset zeroes to that known position you highlighted on picture, after e.g. you have set zeroes elsewhere for a different job.

One option to do this is the following.

Setup (you have to do this just once):

  • Home
  • jog manually to that specific point, touch off (like you would for zeroing manually there with the paper method), and make a note of the absolute Xref, Yref and Zref values there (NEGATIVE values).

Then whenever you need to reset zeroes to that specific point without having to go and grab your bitZero, just send the following MDI oneliner:

G90 G21 G10 L2 P1 X[Xref value] Y[Yref value] Z[Zref value]

Note: I’m assuming the ref coords values are in millimeters. If they are in inches, the G21 must be replaced by G20.

1 Like

Thanks for the suggestion. I haven’t tried the “MDI oneliner” thing before. Didn’t know it was an option.

The reason I’m mentioning the BitSetter is that I want to do this after I turn the machine off and on. So after the Shapeoko has been turned on again, it runs the initialization and zeroes the z-axis on the BitSetter. Will it reset the z-value to the same place after that? Can I trust that I can use the MDI oneliner after the z-axis has been zeroed on the BitSetter?

Just to clear up the “absolute values”, I’m guessing those are the values after I click “Clear offsets”?

The machine is very good at returning to the stored zero position, even after a full power cycle. The BitSetter measurement is just preparation before the next tool change, as far as I know it does not affect understanding of the tool position initially.

So in your scenario, you should be able to run part of a job, power cycle, and finish the job (in this example via multiple files, it won’t remember your line number partway through a file) without needing to manually rezero any of the coordinates. Just make sure you only do tool changes via carbide motion and not at random times without going through the tool change routine.

Alternately, you can adjust your Travel dimensions so that one of your Rapid Position points lines up with the Square — that’s what I did on my SO3 where I installed the Corner Square — it’s just a bit of math, and if you’re careful in positioning the square you can keep the center position point along the machine center (or also adjust the X-axis homing switch position to line things up).

Think of it this way :

  • the zeroes are persistent after power off, no need to worry about setting them again. If you only ever cut pieces from the same zeroes (setting Z0 reference to the bottom of the stock as you want to do here), you may never need to have to set them again.
  • the G20 command is basically the “set zeroes” command that the CarbideMotion does when you use the BitZero or use the zeroing buttons. So the workflow would be unchanged: whenever you would have used the BitZero or the manual method to zero there, send that oneliner and it does the same thing.
  • The BitSetter only ever adjusts the Z zero based on the a) the Z zero currently set, b) the length of the the tool as measured during the last probing sequence that was performed and c) the length of the tool as measured during the current probing sequence

On the left of the CM UI, if you click on the “Position” label, it will switch to “Machine Position”, and display the absolute coordinates then (e.g. it will be -3, -3, -3 after homing, since the machine pulls off 3mm on each axis during homing)

NOW, I must apologize because I tested my recommendation using CNCjs, and I just found out that it won’t work with Carbide Motion for some reason (it probably interferes with its internal logic), so forget what I said… :frowning:

1 Like

I just looked into it again and figured out that I can “rapid move” to a machine position (absolute position) with this oneliner:

G53 G0 X-100 Y-100

A couple of questions:

  • How do I zero to that machine position without first “rapid moving” to that position?
  • How do I set the z-position? I have a Bitsetter, so on each new machine initialization the tool is getting homed on the Bitsetter, but I don’t know how I take that position and set it to the wasteboard z-position via MDI. Any suggestions?

G10 L2 X-100 Y-100

Not sure what you mean here.


When I run that commend, then the spindle moves to that position. I just want to set that position as the zero point without moving to it. How do I do that using an MDI oneliner?

If you look at the first picture in this thread, the z position I want to set is the same every time, but I can’t set the z-position using the machine coordinates the same way I do with the x an y-axis, since the height of the bottom cutter position changes every time one attaches a new cutter.

From what understand it the Bitsetter figures out where the bottom of the cutter is and adjusts for that, so I was wondering if there was a way to set the z-position using an MDI oneliner after the cutter has been initialized on the Bitsetter?

I think this has something to do with absolute and relative mode (G90 and G91): https://gcodetutor.com/gcode-tutorial/g90-g91-gcode.html

1 Like

Are you sure? There is no motion command in that line.

G10 L2 will set the offset as you want.

I see. You might want to try out CNCjs to get into this. You could keep the same zero until you get a new machine if you’d like.

You’re right.

Even if I change tools? There’s no way to accomplish this in CM?


I really can’t say. I abandoned Motion 6yrs ago. I’ve come back to test it out once in a while, but then it started clearing my offsets and moving all over when I didn’t tell it to. I prefer when the machine only does what I tell it to…when something gets jacked up, I know who to blame.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.