Does BitSetter work with UGS?

Is there a way to use the new BitSetter with UGS? I know it works with CM and at least CNCjs.

Should just be a matter of working up suitable macros.

1 Like

Thanks Will guess I’ll be writing and testing macro’s.

Or, try CNCjs, @neilferreri has written the macros already for CNCjs and posted on his GitHub. I and others use them every day.

1 Like

UGS, last I checked, doesn’t have the ability to store dynamic values. Because of that, you won’t get the seamless “automatic” benefits of the BitSetter with UGS.


Agreed. Someone could write a plug-in to do it but it needs more than simple gcode

Any update on this topic?
Does Bitsetter works with UGS?

BTW does bitsetter has something “special” or is it the same of those tool length sensor one can find on the Net for 50$ or so?

as far as I am aware, the situation is still the one described above, i.e. out of the box it is not possible to leverage the BitSetter in UGS, one would need to develop a plug-in to add to UGS code to manage the BitSetter.

Functionally it is the same (a tool length sensor is a tool length sensor, they are all glorified push buttons), but in my opinion the BitSetter is much better built that your average “button in a 3D-printed case” or Aliexpress variant, and it integrates nicely onto the front rail of the Shapeoko.

1 Like

Thank you Julien, I just pulled the trigger on the Bitsetter.

Now I must switch to CNCjs (from UGS)
I remember when I compared these software initially, last year, I was unable to use CNCjs at all, don’t remember why, UGS was relatively easy to setup, hope this time it will go smoothly…

1 Like

Make sure you get the “Desktop App” version of CNCjs for an easy install

1 Like

wow , thank you
hope it will work smootlhly!

CNCjs installed, now I have to configure everything, including the bitsetter and the bitzero v1.
Since I have the shapeoko in the garage but the PC with a big screen and internet at home (and it’s hot like hell outside), I would like to configure most things at home, before going testing everything.
Does anybody knows if there’ a step to step guide, a tutorial (or something similar) to setup CNCjs with the shapeoko and accessories?
I’m searching the forum but I can only find fragmented information, it should take days for me to setup everything…

Thank you!

1 Like

There is no tutorial (that I know of), however it’s really simple, so here’s a step by step:

  • if you got CNCjs installed, out of the box you should be able to connect to the Shapeoko. You only have to go in the “GRBL” tab of the connection panel, select the COM port corresponding to the Shapeoko,


and click “Open”

you should then get output in the GRBL console

  • At this point you should be able to home, using this button


with the machine going to the far right corner to the X/Y/Z home position, as it does when using CM, but without going to the BitSetter.

  • then you should be able to jog

  • to support the BitSetter and BitZero, you’ll need to use @neilferreri 's macros

if you have a BitZero v1, look at " C3D_3axis_probe", copy the text for that, then create a new macro using “+” button in the Macro widget, give it a title, and paste the code from Neil:

Finally, adjust the X/Y/Z thicknesses in the macro, if they are not 7/7/22mm on your probe.

  • to use the probe, connect everything as usual (magnet/clip on the endmill, probe on the stock), and run the macro using the little “play” button next to the macro name in the macro list

  • for the BitSetter, you’ll need to create two macros: one for initial tool measurement, one for tool change measurement. The two associated pieces of G-code are on Neil github too, proceed as above.

you WILL need to update the X/Y/Z absolute location of your BitSetter in the macro, i.e. edit those lines in the “Initial tool” macro:

%global.state.PROBE_X_LOCATION = -500;machine coordinates
%global.state.PROBE_Y_LOCATION = -230 ;machine coordinates
%global.state.PROBE_Z_LOCATION = -20   ;machine coordinates --> lower this (more negative) to start the probing closer to wasteboard

To do this, manually jog to over the BitSetter button, make a note of absolute X/Y/Z coordinates (e.g. “Machine position” in CNCjs jog section), and use those values in the macro

  • to use the BitSetter with those macros, Neil documented the procedure on github too.

And that’s basically all there is to it.
Asa bonus, you may want to edit CNCjs setting to disable/hide the widgets you are not using. Me, I only keep the Connection pane, GRBL console, Jog pane (of course), Macro widget.


So, Julien, do you have an equally succinct and educational way to describe how multiple tool changes are done in CNCjs as they are done in CM? Does it involve further post processor editing?

It’s in Neil procedure I linked above, and assuming a post processor that does support tool changes (CC obviously, or VCarve with Neil’s post, or fusion360 with…Neil’s post, you get the idea)
Any specific question you had in mind?

1 Like

I’ve read the procedure 10 times, but it just occurred to me (with your question) that “edit” means to edit it initially; not every time. :smiley:

Once the macro is edited, then the operation is performed similar to how CM motion performs with BitSetter or BitZero. I guess my brain needed the words “BitSetter” or “BitZero” written into the macro. :smiley:

1 Like

@Julien you are THE Man!
Thank you sooooo much for this guide, it is just what I was looking for!
I made all the settings and the macros, tomorrow I’ll test everything.

I needed a macro for resetting only the Z height, I followed this suggestion
hope this will work.

Now I only need to make few very simple macros to rise the tool above the sucking boot, to place the head at the top center of the shapeoko, etc

TOP CENT - G53 X-442 Y-5;
BIT CHG - G53 X-442 Y-720 Z-5;

these are some of the macros I use with UGS, may I just copy these commands to a new macro in CNCJs?

Yes. I sometimes find it faster to just type those types of one liners right into the console.

You can also create custom buttons that’ll run commands like that.

You also might want to add a G0 to those to ensure rapid motion.


I can make that clearer. Edit: Done

The macros pre-date those wonderful accessories, but I’m all about making things easier to understand. Open to suggestions and questions.