From the installation to the first job. If your CNC already works with another program (e.g. Grbl Controller or UGS), skip steps 2 and 3.
1Installation
Download the installer from the CNC program page and run it. It installs without an administrator in a few seconds and puts a "The Mahala Workshop - CNC Controller" shortcut on the desktop.
The program isn't signed with a paid certificate, so the first time Windows shows "Windows protected your PC". Click "More info", then "Run anyway".
On the first start the program shows the terms of use and a laser safety warning. Read them and accept.
2USB driver (CH340)
The computer sees the Arduino as a COM port. Original boards and Windows 10/11 usually work right away; most cheaper clones have a CH340 chip.
Connect the Arduino with a USB cable and open Device Manager (right-click on Start).
Under "Ports (COM & LPT)" it should say e.g. "USB-SERIAL CH340 (COM4)". Note the port number.
If the board sits under "Other devices" with a yellow sign, install the CH340 driver from the maker's website (WCH) and plug the cable in again.
If nothing appears, try another cable: some USB cables only charge.
3Grbl on the Arduino
The Arduino must run Grbl, the firmware that turns G-code into motor steps. If your CNC came assembled or worked with another program, Grbl is already there.
For a new board we recommend Grbl 1.1:
Install the Arduino IDE from arduino.cc.
From github.com/gnea/grbl download the code (Code → Download ZIP), unzip it and copy the "grbl" folder inside into Documents\Arduino\libraries.
In the Arduino IDE open File → Examples → grbl → grblUpload, choose the board and port, and click Upload.
Uploading Grbl erases the program that was on the Arduino and resets the settings to the defaults. Set them afterwards (step 5).
4First connection
In the CNC card choose the COM port from step 2 and the port speed: 115200 for Grbl 1.1 and 0.9, 9600 for Grbl 0.8. Click "Connect".
The bar at the top should say e.g. "Grbl 1.1h", and the state "IDLE". If it says "WAITING FOR GRBL", the port speed is wrong or the Arduino doesn't have Grbl.
If the state is "ALARM" (Grbl with homing starts like that), check that the CNC can move freely and click "Unlock ($X)".
No CNC yet? Choose the port "Simulator" or "Simulator 1.1" and try everything without a machine.
5Grbl settings ($$)
Click "Grbl settings" in the Log and commands card. The program reads all the settings and explains each one. The most important for Grbl 1.1:
$100, $101, $102: steps per mm for X, Y and Z. If the CNC moves exactly 10 mm when you ask for 10 mm, the value is right.
$110, $111: maximum speed (mm/min); $120, $121: acceleration.
$30: full laser power (usually 1000); $32=1: laser mode.
$3: reverses an axis that moves the wrong way.
Change a value and click "Save changes to Grbl". Grbl keeps it after power off too. Grbl 0.8 numbers its settings differently, and the program shows the descriptions for its version.
6Jogging and zero
In the Manual control card choose a step (0.1, 1, 10 or 100 mm) and move with the X and Y arrows. Try a small step first to see that the axes move the right way.
Bring the laser over the lower left corner of the material and click "Set zero". That spot becomes X0 Y0, and Grbl keeps it after a reset too. Below the large work position, the absolute position, which Grbl counts from power on, is shown small.
7The first job
In the Job card click "Open file..." and choose a G-code file (.nc, .gcode, .tap). The drawing and the time estimate appear. An original ArtCAM file is first converted for the laser, and the program asks for the speed of each toolpath.
Before starting, click "Frame": with the laser off it traces the drawing's edges, so you see whether it fits on the material. For Grbl 1.1, enter the laser power in the "Laser power (S)" field.
Put on safety glasses and click "Start". "Pause" stops the movement, but the laser stays on. "Emergency stop" (or the Esc key) stops everything and switches the laser off. An interrupted job continues with "Resume from...": the program suggests the line where the laser stopped.
8The phone in the local network
At the bottom of the window click "Local network" and turn the access on. The window shows the address, a 6-digit code and a QR code.
If the "Firewall" line says the port isn't allowed, click "Allow in firewall" and confirm.
The phone must be on the same Wi-Fi as the computer, and Windows must treat the network as private.
On the phone, scan the QR code: the page opens and the code is remembered.
On the phone everything works as on the computer: state, drawing, start, pause, emergency stop, jogging and uploading a file. The phone doesn't replace an emergency stop switch, because a Wi-Fi connection can lag or drop.
9Language, resuming after a restart and new versions
The EN / BS button at the top right changes the language of the whole program, on the computer and the phone.
If the Arduino restarts in the middle of a job (power glitches), the program asks whether to restore the remembered position. With "Resume by itself after a restart" on, it restores it and continues by itself, up to 10 times per job.
The bottom of the window shows the program's version. When a new one comes out, "New version: update" appears there; a click downloads and starts it. The settings and the log stay.
Lasers are dangerous. Wear safety glasses for your laser's wavelength, keep a fire extinguisher within reach and work with fume extraction. "Emergency stop" in the program does not replace a physical emergency stop switch on the machine. The program is free and you use it at your own risk.