< All Topics

CNC Workflow – Using CNCjs

Note: Before you go through this manual, please ensure that you have the G-code files ready for the coaster. For coaster G-code files, see the articles below:

1.0 Introduction

CNCjs is an open-source web-based CNC milling controller software. It provides a user interface to control and monitor CNC machines using a web browser. CNCjs supports various CNC machines, including milling machines, routers, engravers, and more.

Key features of CNCjs include real-time G-code interpretation, a web-based interface accessible from different devices, and the ability to visualize G-code in 3D. It also offers features like jogging, homing, and manual tool changes.

At Maker Store, CNCjs used for xPRO V5 CNC controller, which is plug and play system that uses the advanced stepping and power of Trianamic drivers along with Wifi and USB interfaces, all powered by a 32 bit processor

This manual discusses the CNCjs software and its use in the CNC phase of the CNC workflow to make a coaster.

1.1 Tools Required

1.2  CNCjs – User Interface

The user interface (UI) of CNCjs is engaging and easy to navigate. The main components of CNCjs required for CNC workflow are listed below and have been shown in Figures 1 & 2.

Figure 1

Click on the image(s) to expand

  • Connection: The connection window sets the communication channel through which CNCjs will talk to your CNC machine via the controller (xPRO V5). It’s marked by the red rectangle in Figure 1.
  • Console: The console window is the command line interface. Here, you can send direct commands to your CNC machine via the controller. It’s marked by the blue rectangle in Figure 1.
  • Reset: The reset window contains buttons such as homing, reset, unlock, and sleep. This window allows you to reset and unlock the controller after an alarm. It also lets you home your machine to set the machine coordinates. It’s marked by the purple rectangle in Figure 1.
  • Axes: The Axes Window provides a visual representation of the X, Y, and Z axes. It’s like a GPS for your CNC machine, offering a clear view of its current position in three-dimensional space. This window has your machine position and workpiece position. The Axes window also holds the jog panel, which enables you to control the movement of different machine axes. It’s marked by the green rectangle in Figure 1.
  • G-code: As your CNC machine executes G-code, this window updates in real time to display the toolpath coordinates. It also shows the max and min limit of your G-code being executed in mm. It’s marked by the orange rectangle in Figure 1.
Figure 2

Click on the image(s) to expand

  • Probe: The probe window allows you to set the work coordinates using a touch probe. It’s marked by the green rectangle in Figure 2.
  • Spindle: The Spindle Window allows you to set and control the rotational speed of the spindle. It also enables you to change the direction of spindle rotation. It’s marked by the purple rectangle in Figure 2.

1.2 CNCjs – Connection with controller

Be sure to download and install the CP210x driver for the xPRO V5 in the link below: 


Unzip the file and run:

  • CP210xVCPInstaller_x64 if you have a 64-bit computer
  • CP210xVCPInstaller_x86 if you have a 32-bit computer
Figure 3

Click on the image(s) to expand

Step 1: A USB type C cable is required for a wired connection to your computer. Please make sure that it is a USB type A to USB type C cable. A USB type C to USB type C will not work.

After connecting to the computer via USB, open CNCjs and navigate to the connection widget. Click on the refresh icon shown by the two arrows to check for controller connections. See Figure 1 for reference.

Figure 4
Figure 5

Click on the image(s) to expand

Step 2: Click on the down-facing arrow in the Choose Port section. In our case, the COM port for our controller (xPRO-V5) is COM4. Note that the Manufacturer is Silicon Labs. See Figure 4 for reference. Click open, the controller will connect and machine data will be displayed, as shown in Figure 5. Sometimes you may have to press the physical reset button on the side of the xPRO V5 case to establish a successful connection with the controller and load machine data.

2.0 CNC Phase

Now after you have connected your controller (xPRO V5) to your machine and computer, the actual machining process for the coaster begins. The CNC Phase consists of the following steps:

Step 1: Do a walk around the machine and ensure no unwanted objects are laying around the machine. 

Figure 6

Click on the image(s) to expand

Step 2: Using the jog panel, move different axes of the machine to ensure they are working as expected. If you are standing in front of the machine with the spindle facing you, clicking on:

  • X+ will move the spindle/tool of the machine in the right (→) direction,
  • X- : left (←) direction
  • Y+: away from you
  • Y- : towards you
  • Z- : down (↓) 
  • Z+  up (↑)

You can set the distance to be moved by clicking on the 1mm button shown in Figure 6 and selecting the desired distance.

Figure 7

Click on the image(s) to expand

Step 3: If your CNC machine is equipped with limit switches, set the machine coordinates using the Homing button on the toolbar. Please see Figure 7 for reference. Performing Homing enables the machine/controller know where it is located. After you click on the Homing button, the axes will start moving towards the limit switches one at a time. The sequence is Z-Axis first then X-Axis and finally Y-Axis. After hitting its limit switch, the respective axis will retract by 10mm to create a safe distance.

Figure 8

Step 4: Properly mount, square and clamp your workpiece on the machine bed/spoiler board, as shown in Figure 8. 

Figure 9
End Mill no. 188

Figure 10

End Mill no. 100

Figure 11

Click on the image(s) to expand

Step 5: Mount your end mill/bit in the spindle as per the order of operation. We are using the example of making a coaster that has following operations involved:

Engraving: Uses Maker Store end mill no. #188 ( shown in Figure 10)

Pocketing : Uses Maker Store end mill no. #100 ( shown in Figure 11)

Contouring: Uses Maker Store end mill no. #100

Since, contouring is an operation that will cut the whole coaster profile from the workpiece, this operation has to be performed at last. Additionally, contouring uses the same end mill (#100) as pocketing, it will be efficient to perform pocketing before contouring. So the order of operations will be:

  1. Engraving → using end mill no. #188 
  2. Pocketing → using end mill no. #100
  3. Contouring → using end mill no. #100
Mount the end mill no. #188 in the collet, that is already inserted into the collet nut. Then screw the collet nut onto the spindle and tighten using spanners. See Figure 9 for reference.
Figure 12

Click on the image(s) to expand

Figure 13

Click on the image(s) to expand

Step 6: Attach the touch probe to your machine and navigate to the Probe window of CNCjs. Depending on the touch probe you have, select the different axes and set the parameters such as Touch plate thickness, retraction distance, probe depth and probe feedrate. 

If you are using Maker Store’s Touch Probe set the parameters as shown in Figure 12. For the coaster, we will be only doing the Z-Axis probing ass the work holding clamps are in the way of the probe. The X and Y coordinates will be set manually.

Move the machine axes to your desired position over the workpiece and set the Work Position for X,Y and Z = 0 using the Axes tab, as shown in Figure 13.

For the Z-Axis probing, flip the touch probe and click on Probe, as shown in Figure 12

Figure 14

Figure 14 shows the Z-Axis probing sequence using Maker Store Touch Probe.

Figure 15
Figure 16
Figure 17
Figure 18

Click on the image(s) to expand

If you wish to do the XYZ Probing, follow the steps below:

  • Download the XYZ Probe Macro from here. The probing sequence is Z, then Y and then X-axis.
  • Copy the contents of the above macro.
  • Navigate to the Macro widget in CNCjs and click on “+” button to add a new macro. See Figure 15 for reference.
  • Name the macro as XYZ Macro and paste the contents of the macro copied earlier, as shown in Figure 16.

Note: Depending on the diameter of the end mill you are using, please update the “ENDMILL_DIAMETER = …” accordingly. See Figure 16 for reference.

  • Click on Save Changes.
  • Place the XYZ touch probe at the corner of the workpiece. Ensure the clamps are not in the way of the spindle. Jog the machine (spindle) above the touch probe.
  • Run the XYZ Probe macro by clicking on the play button and selecting Run. See Figures 17 & 18 for reference.

See the XYZ Probing video below.

Step 7: In the CNC world, Framing is a feature that allows the user to preview the design outline before cutting. The machine traces around the perimeter of the part, taking the minimum and maximum dimensions of the workpiece into consideration. It allows you to see whether you are machining within the stock or out of the stock.

In CNCjs we have to add Framing Macro to execute the framing feature. The Framing Macro is mentioned below:


G0 Z10

G0 X[xmin] Y[ymin]

G0 X[xmax]

G0 Y[ymax]

G0 X[xmin]

G0 Y[ymin]

Step 8: If you are using a VFD and Spindle Pump, turn them on.

Figure 19
Figure 20
Figure 21
Figure 22

Click on the image(s) to expand

  • In the Macro Tab click on the New macro button (+ sign).
  • In the Macro Name type Framing. Copy the Macro mentioned above and paste it in the Macro Commands window as shown in Figure 20. Click OK
  •  Click on the play button and then click on Run. See Figures 21 & 22 for reference.
  • The machine will frame the coaster design.
Figure 23

Click on the image(s) to expand

Step 9: In your CNCjs window, click on Upload G-code and select the G-code file (Text Engraving – 188) of the first operation i.e. Engraving. See Figure 23 for reference.

Figure 24

Click on the image(s) to expand

Step 10: The Text code will appear as shown in Figure 24. To execute this engraving operation, click on the Play button indicated by the red mark in Figure 20.

Note: If you are using G-Code files generated by Fusion 360, you will need to click on the play button twice to execute the operation.

Step 10: Once the above operation is executed, take out the end mill no. #188 and install end mill no. #100 for the next operation i.e. pocketing. 

Step 11: Perform the Z-Axis probing again as per Step 6.

Step 11:  Similar to Step 8, upload the G-code for pocketing (Gear Pocketing – 188) and hit play. Once this operation is done, upload and execute the file for contouring.

Step 12: Once the Contouring operation is finished, remove the workpiece from the clamps and with a Stanley Knife remove the tabs

Figure 25

Congratulations, you have used a CNC machine to create a coaster. Figure 25 shows the final product i.e. coaster.


For any questions or concerns, please contact us at sales@makerstore.com.au

Australian customers: For more project ideas and solutions, please visit makerstore.com.au

North American customers: For more project ideas and solutions, please visit makerstore.com.cc

UK Customers: For more project ideas and solutions, please visit makerstore.co.uk


  • The Maker Community.
  • Our fantastic customers, whose feedback constantly helps improve our proceses and guides.
Table of Contents