User Tools

Site Tools


pibot_cnc_laser_series:software_introduction:start

Software Introduction

Design, CAM, senders and firmware for PiBot FluidNC, grblHAL and GRBL controllers

Getting a part cut involves four different programs, and beginners usually lose time because they expect one program to do everything. This page shows what each layer does, which tools are worth using in 2026, and the commands and workflow that apply to every PiBot controller.

The Toolchain — What Runs Where

On your computer On the PiBot controller / machine 1 · Design CAD / vector Inkscape, FreeCAD Fusion, Carbide Create 2 · CAM toolpaths Kiri:Moto, CAMLab Estlcam, Easel 3 · G-code .nc / .gcode 4 · Sender streams the file gSender, WebUI LightBurn, UGS 5 · Firmware motion planning FluidNC / grblHAL GRBL 6 · Machine motors, spindle USB / Wi-Fi / SD Some programs cover several steps at once — LightBurn and Rayforge do 1–4 for lasers; Easel and Estlcam do 1–4 for routers.
Where each kind of software sits. Steps 1–4 run on your computer; steps 5–6 are the controller and the machine.
The firmware and the sender are two different programs. FluidNC, grblHAL or GRBL runs on the PiBot controller. A sender runs on your computer or browser and streams G-code to it. You always need one of each — and for anything you design yourself, a CAD and a CAM step in front.

Firmware and Software Compatibility

FirmwareFluidNC WebUIgSenderOpenBuilds CONTROLCandleUGSCNCjsbCNCioSenderLaserGRBLRayforgeLightBurn
FluidNC✓✓✓✓✓✓✓—✓✓✓
grblHAL—✓✓✓✓✓✓✓✓✓✓
GRBL 1.1f / 1.1h—✓✓✓✓✓✓✓✓✓✓
Firmware and software compatibility with application logos
The same matrix as a picture. Logos are those of the respective projects and vendors.
Compatibility does not mean every plugin or machine feature is automatic. Sender versions change, and grblHAL can be built with different plugins. Test your exact firmware build and software version before operating a machine.

Which Software Should You Use?

What are you running? Laser engraver / cutter CNC router / mill FluidNC or GRBL grblHAL build with plugins Free, Windows → LaserGRBL Free, Linux/Win → Rayforge Paid, all-in-one → LightBurn First setup → FluidNC WebUI Daily use → gSender Probing / levelling → bCNC Full grblHAL → ioSender Windows only, free, great for raster photos New in 2026 · sketcher + 3D preview Design, layers, camera · 30-day trial Already on the board · nothing to install Probing wizards · Win / mac / Linux Surface scan + auto-levelling Written by grblHAL’s own maintainer
A short route to a sensible first choice. Nothing stops you installing several — they all talk to the same controller.

Senders — Streaming G-code to the Board

gSender connected to a grblHAL controller
gSender connected to a grblHAL machine — every region from the diagram above is here: port and state at the top, DRO and jog wheel on the right, 3D toolpath in the middle, feed and spindle overrides along the bottom. Screenshot: Sienci Labs / gSender project.
your G-code sender COM3 / ttyUSB0 115200 Connect Idle WORK POSITION X 120.500Y 64.250Z -2.000 JOG ↑←•→↓ step 1 mm · feed 1000 TOOLPATH PREVIEW CONSOLE > $Hok > ?<Idle|MPos:0.000,0.000,0.000> 1 · port, baud, connect 2 · position readout (DRO) 3 · jog controls 4 · toolpath preview 5 · console match 115200 or nothing works work vs machine position step size matters more than speed check it before you cut where $ commands go
Every sender arranges these five things differently, but they all have them. Learn the layout once and any sender becomes readable.
SoftwareCostRuns onBest for
FluidNC WebUIFreeAny browser, served by the boardFirst setup and diagnostics on FluidNC. Console, jogging, file upload, SD access, live status — nothing to install.
gSenderFree GPLv3Windows, macOS (Intel + Apple Silicon), Linux (Intel + ARM)Everyday CNC work. Modern UI, 3D toolpath view, probing wizards, macros, calibration tools. USB or Ethernet.
UGS — Universal Gcode SenderFreeWindows, macOS, Linux, Raspberry Pi (Java)The long-standing reference sender. Classic is minimal; Platform adds a customisable UI, macros, a G-code editor and SVG/DXF/image import.
CandleFreeWindows, LinuxThe simplest possible sender: load G-code, jog, preview the toolpath, run.
OpenBuilds CONTROLFreeWindows, macOS, LinuxBeginner-friendly but capable, with built-in probing helpers.
CNCjsFreeNode.js host — typically a Raspberry Pi — used from any browserLeaving a Pi at the machine and driving it from a phone or laptop on the network.
bCNCFreeWindows, macOS, Linux (Python)Probing and auto-levelling. Scans the surface into a height grid and warps the G-code to follow it — the standard answer for PCB isolation milling and warped stock.
ioSenderFreeWindows onlygrblHAL builds. Written by grblHAL's own maintainer, so it exposes features other senders do not.
bCNC showing a PCB isolation job with an auto-levelling height map
bCNC running a PCB isolation job. The coloured, warped surface is a probed height map — bCNC bends the G-code to follow it, which is why it is the usual answer for PCB work and uneven stock. Screenshot: bCNC project.

Laser Software

SoftwareCostRuns onNotes
LightBurn 30-day trialWindows, macOS, LinuxThe production standard. Design tools, layers, camera alignment, material test grids, rotary. Lists GRBL, FluidNC and grblHAL among supported controllers. Two tiers (Core / Pro); check the site for current pricing.
Rayforge NewFree open sourceLinux, Windows (GTK4 / Libadwaita)The strongest free LightBurn alternative to appear recently: 2D parametric sketcher, multi-layer jobs, camera alignment, rotary support, material recipes, path optimisation and image tracing in one app.
LaserGRBLFreeWindows onlyLightweight and fast to learn, particularly strong at raster photo engraving. Sends only — design elsewhere.
Inkscape + laser extensionFreeWindows, macOS, LinuxDesign in Inkscape, then export G-code with the J Tech Photonics Laser Tool or a gcode-tools extension, then send with LaserGRBL or a CNC sender. Three steps instead of one — fine occasionally, tiring daily.
Rayforge showing a rotary laser job with a layered workflow
Rayforge previewing a rotary job. The panel on the right is the layer workflow — a Contour pass at 80% power and an Engrave pass at 100%, each with its own settings. MIT-licensed and free. Screenshot: Rayforge project.
LaserGRBL raster workflow from artwork to engraved result
LaserGRBL end to end: source artwork, the raster import and vectorise dialog, the G-code preview, and the finished engraving. Screenshot: LaserGRBL project.

Design and CAM — Making the G-code

A sender does not create toolpaths. For anything you design yourself you need a CAD step and a CAM step first. These are the free and near-free options that produce GRBL-compatible G-code.

SoftwareCostCoversNotes
Carbide CreateFree2D CAD + CAMFrom the makers of Shapeoko. Easy to learn, runs offline, and its G-code works on most GRBL routers. A good first CAM program.
EaselFree tierCAD + CAM + senderBrowser-based, so it runs anywhere — but it is cloud-only, with no offline mode.
Kiri:MotoFreeCAMBrowser CAM that turns STL models into G-code; also available as an Onshape plugin. CAMLab (Sienci) is built on the same engine.
FreeCADFree open sourceParametric 3D CAD + CAMFully open source with a Path workbench for G-code. Very capable, but the CAM workflow has a real learning curve.
InkscapeFree open source2D vector designThe usual starting point for laser artwork and 2D profiles; add an extension to emit G-code.
EstlcamCAM + senderUnusually beginner-friendly for 2.5D routing. The trial keeps working with a nag screen, so you can evaluate it properly.
Not sure where to start? Set the machine up with the FluidNC WebUI — it is already on the controller. Once it homes and jogs correctly, add gSender (router) or LightBurn / LaserGRBL / Rayforge (laser) for real jobs, and Carbide Create or Kiri:Moto to make the G-code.

Machine States — and How to Get Out of Them

Every GRBL-family controller is always in one state, and most beginner confusion is really a state problem: the machine will not move because it is in Alarm, or a job will not resume because it is in Hold.

Alarmposition unknown Idleready Runcutting Holdpaused Homeseeking switches Jogmanual move $X $H done run job ! ~ $J= done job finished Ctrl-X soft-resets from anywhere. ? reports the current state at any time.
The states you meet in practice, and the single character or command that moves between them.
$X is not the same as homing. It only clears the alarm so the machine will move — the controller still does not know where it is. Use $X to get out of trouble, then $H to establish real position.

Essential Commands

Type these into the sender's console or the FluidNC WebUI command line. They behave the same on GRBL, grblHAL and FluidNC unless noted.

System commands

CommandWhat it does
$$View all settings. $x=val writes one, e.g. $110=5000.
$#View G-code parameters — G54–G59 work offsets, G28/G30 positions, tool length offset, probe result.
$GReport active modal states (motion mode, coordinate system, units, plane…).
$IShow firmware version and build info.
$NShow startup blocks. $N0=line stores G-code that runs at every reset.
$HRun the homing cycle. The only correct way to establish machine position.
$XClear the alarm lock. Movement is allowed again, but position is still unknown.
$CCheck mode — parse the G-code and report errors without moving anything.
$J=lineJog without disturbing modal state, e.g. $J=G91 X10 F1000.
$RST=$ / $RST=# / $RST=*Reset settings / clear work offsets / erase everything. Use with care.
$SLPSleep mode — de-energises steppers, spindle and coolant until reset.

Real-time commands

These act immediately, even mid-job, and are never queued behind buffered motion.

KeyWhat it does
!Feed hold — decelerate to a controlled stop without losing position.
~Cycle start / resume — continue after a feed hold or an M0 pause.
?Status report — current state plus machine and work position.
Ctrl-XSoft reset — stop and reset the firmware without a power cycle.

Senders expose feed, rapid and spindle overrides as buttons rather than typed characters — typically ±10% and ±1% steps over a 10–200% range for feed and spindle, and 100 / 50 / 25% for rapids.

FluidNC additions

CommandWhat it does
$CMDList every command this firmware supports. The fastest way to explore FluidNC.
$SShow all settings. Most commands also have a long form, e.g. $Gcode/Mode for $G.
$LimitsLive monitor of limit, probe and tool-setter inputs. Send ! to leave the monitor.
$MD / $MEDisable / enable the steppers so an axis can be moved by hand. $MD=X targets one axis.
$MIRe-initialise the motors — useful after powering the drivers late or changing a run-current setting.
$SSRepeat the startup messages, for when the console was opened after boot.
$ByeRestart the controller from the console.
FluidNC $ commands generally only work in Idle state. If one is refused, stop the job or clear the alarm first.

Machine Zero vs Work Zero

Two different origins exist at the same time, and mixing them up is the most common way to crash a first job.

machine table your stock machine zero G53 · set by $H work zero G54 · you set this work offset In practice 1. $H — sets machine zero 2. jog to the corner of your stock 3. zero X / Y / Z in the sender 4. $# — check the G54 offset 5. run the job Homing does not move your work zero.
Machine zero comes from homing and never changes. Work zero is where your part starts, and you set it for every job.

First Run, Step by Step

  1. Connect. USB serial, or join the controller's Wi-Fi and open the WebUI. Serial senders use 115200 baud.
  2. Check it answers. Send ? — you should get a status line. Send $I to confirm the firmware build.
  3. Clear the alarm. A controller with homing enabled starts in Alarm. Send $X to unlock, or go straight to homing.
  4. Home the machine. Send $H. Watch the first homing move with a hand on the power switch — a reversed direction or a mis-wired switch shows up here.
  5. Check the limit inputs before trusting them. On FluidNC $Limits shows every input live; on PiBot boards the matching bench test is step 2.5 of your controller's checklist.
  6. Set the work zero. Jog to the start point and zero the axes in your sender, then confirm with $#.
  7. Dry-run first. Use $C check mode, or run the job with the spindle/laser off and Z raised, before you cut anything.

The FluidNC Toolset

Beyond the WebUI, the FluidNC project ships several tools that are directly useful on PiBot boards.

FluidNC WebUI

Served by the controller itself over Wi-Fi. Console, jogging, file upload, SD browsing and live status from a browser on any device.

FluidNC Web Installer

Flashes firmware straight from a Chrome-family browser over USB — no toolchain, no Python. The usual way to install or update.

FluidTerm

A serial terminal aimed at FluidNC. Shows the boot log and startup messages that a graphical sender hides — the first place to look when a board seems dead.

FluidDial pendant

A physical jog dial. It can run over ESP-NOW, a direct radio link between ESP32s, so the pendant keeps working even if your Wi-Fi network does not.

FluidTerm running on Windows, showing its shortcut keys
FluidTerm on a PiBot board — it prints its own shortcut keys on connect: Ctrl-U upload, Ctrl-R reset, Ctrl-S STM32 loader, Ctrl-Q exit.
PiBot pendants use ESP3D Wi-Fi, FluidDial over ESP-NOW, or a wired RJ12 connection depending on model — see your controller's 4.4 Connect Pendant page for what applies to your board.

Connection Methods

PiBot controller FluidNC / grblHAL / GRBL Main USB 115200 baud · firmware + senders Wi-Fi WebUI · AP or your router microSD card run a job with no PC attached RJ12 pendant jog dial / I/O expander Secondary USB model-specific host port Wi-Fi AP: fluidnc / 12345678 · WebUI at 192.168.0.1 Not every port exists on every model — check your controller’s pinout page.
The ways a PiBot controller can be reached. USB and Wi-Fi are the two you will use for setup.

Main USB

Firmware installation, boot-log diagnosis and desktop senders. 115200 baud. Install the CP2102 / CH340 driver if the port never appears, and avoid charge-only cables.

Wi-Fi

FluidNC WebUI, or a network-enabled grblHAL build. PiBot boards ship with the access point fluidnc, password 12345678, WebUI at 192.168.0.1. You can also join the board to your own router from the WebUI.

SD card

Local G-code storage when enabled by the firmware and the YAML/build. Running from SD removes USB dropouts and sender stalls from the equation entirely — worth it for long jobs.

RJ12 / auxiliary USB

Model-specific pendant and expansion interfaces. They are not automatically general-purpose PC connections — check your controller's pinout page first.

CNCjs web interface
CNCjs runs in a browser and is usually installed on a Raspberry Pi left at the machine. Screenshot: CNCjs project.
Candle sender showing a toolpath
Candle — about as simple as a sender gets: load, preview, jog, run. Screenshot: Candle project.
Universal Gcode Sender Platform
UGS Platform — the long-standing reference sender, Java-based so it also runs on a Raspberry Pi. Screenshot: Universal Gcode Sender project.

Going Further

Probing

A touch plate finds the top of the stock and sets Z zero far more accurately than paper-shimming. gSender and OpenBuilds CONTROL both ship guided probing wizards; PiBot boards expose a dedicated probe input.

Surface auto-levelling

For PCB isolation milling or warped stock, bCNC scans a grid of probe points and warps the G-code so a 0.1 mm engraving follows the real surface instead of an imaginary flat plane.

Macros and startup blocks

$N0= stores a G-code line that runs at every reset — handy for forcing units or a coordinate system. Senders add their own macro buttons for tool changes and repeat operations.

Running from SD

Upload the file through the WebUI, then start it from the controller. The job no longer depends on your computer staying awake, connected and un-updated.

Common Problems

SymptomWhere to look
Serial port missingUSB driver not installed, a charge-only cable, or the port is still held open by another sender.
Connects but replies are garbageWrong baud rate — use 115200.
Stuck in Alarm after power-onNormal when homing is enabled. $X to unlock, then $H to home.
Homes the wrong way, or into the frameHoming direction or limit-switch pin assignment. Cut power first, then re-check wiring and axis configuration.
Cuts in the wrong placeWork zero, not machine zero. Re-zero on the stock and confirm the G54 offset with $#.
Laser fires while jogging, or never firesLaser mode and the sender's S-value range. On FluidNC the laser is a separate tool from the PWM spindle — select it with M6.
Job stutters or stops part-wayUSB noise or a busy computer. Run from SD card, and route the data cable away from motor and spindle wiring.
Engraving depth varies across the sheetThe stock or the bed is not flat. Probe and auto-level with bCNC, or face the spoilboard.

Official References

Screenshot credits. Application screenshots on this page belong to their respective projects and vendors (gSender / Sienci Labs, bCNC, Rayforge, LaserGRBL, CNCjs, Candle, Universal Gcode Sender). They are reproduced here to identify and describe each program. Logos are the property of their owners. PiBot is not affiliated with or endorsed by any of them.

For troubleshooting, continue to the shared PiBot Controller FAQ.

pibot_cnc_laser_series/software_introduction/start.txt · Last modified: by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki