CNCjs is a Game Changer!

CNCjs can be found here:

There are soo many nice features of this software, layout, style/theme, customizable widgets, 3D view, auto connect serial port, easy edit macros, loading macros as production, sleep/unlock, laser test, etc.

The biggest feature, which I would encourage anyone to use, is system variables in macros. The script below will trace the boundary of the current production file (what is loaded into 3D viewer). It takes all the guess work out of clearances.

; Traverse around the boundary
G0 Z40 ; go to z-safe
G0 X[xmin] Y[ymin]
G0 X[xmax]
G0 Y[ymax]
G0 X[xmin]
G0 Y[ymin]

Many macros can be found here:

I’m curious to explore/start using these!


Yep, and I see you found @neilferreri’s treasure chest full of CNCjs macro goodness :slight_smile:


@Julien Yes I did! Flipping through, I can see they all seam to focus around probing. I guess this is my next frontier to expand/improve my work flow.

1 Like

Probing, and tool length measurement (see initial tool / new tool macros, these are for the BitSetter), certainly make for a smooth and efficient workflow!

1 Like

2 suuuper noob questions.

1-what exactly is a macro?

2- how do you add them?

I downloaded cncjs yesterday and tried loading macros for probe and bit setter from @neilferreri with no luck. Do i need to be connected to the machine to load these? Is there a video tutorial on cncjs somewhere? Like marklindsaycnc has for vcarve.


  1. Simply - a set of commands that you want to repeat.
  2. Check this:
    CNCJS CNC Control Software

You may also want to check this general CNCjs intro video from @Luke :


Just like when I tried using UGS the 1st pass was about 3 times deeper than what I had it set for. It should have been .125 and instead it was what looks like 3/8. I stopped the program and went back into V carve and I recalculated my tool paths and saved it I double checked everything to make sure my depth of cut was .125 and i ran the program again with the same result. This is the same thing that happened when I tried to use UGS. When I look at the preview in CNCJS, I can actually see that the 1st Layer of material to be removed is much thicker then all the subsequent layers during the roughing file. I save my tool paths as shapeoko inch and when I get in CNCJS, I change from millimeter to inch. Could that have an effect? The other little thing that popped up was when I finished my roughing tool path I changed to my tapered bit and reset 0 at the exact same spot using the exact same method and it seemed that when I started to cut my finish to a path it was not getting as deep as it needed to, leaving unfinished areas from the roughing toolpath. I ended up having to set my 0 about a 16th of an inch deeper than the surface of my material in order for it to cut the way it should.

Can you share your roughing gcode? The sender shouldn’t make a difference.


I will post as soon as I get home from work. Didn’t mean to steal this thread but I really appreciate the help.

I tried attaching my roughing toolpath but it says it is not supported in the forum

(make a zip and attach that)

1 Like

I have been having issues with CM and resetting after using Lightburn. Following from another post I ran into this section. Considering switching to CNCJ’s until I can figure my mess on CM. Are there macros for the bit setter and quick positioning available for CNCJ’s? Also I have a couple of Beaver CNC Zero Probes with the whole to auto set the bits etc. Wondering if anyone can point me in the right direction to find these macros and software.


It is starting off too low even though I triple checked my Z zero

Viking Ship #1 Roughing (36.0 KB)

Yes, all CNCjs macros from @neilferreri are available here, and they do include macros to manage the BitSetter (see “Initial & New tool” directory). You will need to edit those to customize the BitSetter location for your machine, but that is quite easy. He also has macros for the probe, includind those taking the internal hole into account. Go check them out, if you are going to be using CNCjs sooner or later, this is well worth it.


Can the XYZ buttons be colored customized on CNCjs. I struggle to see the XYZ layout with the other nice button features surrounding the XYZ buttons.

Yes they can.
Are you using the desktop version or is it runnning on a Raspberry PI?

1 Like

Just installed it and talking first look see. Are there machine settings (ie: the $nnn variables) like there was in UGS?

Those are stored on the controller. To change them, just type the values in the console ($22 = 1). To see them (they will show in the console on connection) you can send $$ in the console. There aren’t many reasons to change those once they’re set.

1 Like

I liked the way the UGS let me change them then export a copy in case the controller ever broke. I guess I can just keep them in a file somewhere.