Connecting a laser: USB, WiFi and what firmware you have
Most hobby lasers run GRBL or a fork of it — FluidNC on ESP32 boards, grblHAL on faster ones, with Marlin and Smoothieware also in use. Connect over USB serial or, on WiFi-capable boards, a WebSocket. The controller announces which it is the moment you connect; read that message rather than guessing.
Finding out what you have
When a controller connects it sends a welcome line. That line names the firmware, and everything else follows from it.
| Welcome message | Firmware | Notes |
|---|---|---|
Grbl 1.1f ['$' for help] | GRBL | The classic Arduino-based controller |
GrblHAL 1.1f ... | grblHAL | GRBL-compatible, more axes and features |
[MSG:INFO: FluidNC v3.x] | FluidNC | ESP32; WiFi and a web UI. YAML config rather than $ numbers |
Grbl 3.7 [FluidNC v3.7.11 (wifi)] | FluidNC | Announces itself as Grbl for compatibility — it is not |
Marlin 2.x | Marlin | From 3D printing; laser support varies by build |
Smoothie | Smoothieware | LPC1768 boards such as Smoothieboard and Cohesion3D |
USB or WiFi
- USB serial — universal, and the only option on most Arduino-based GRBL boards. Reliable, but the cable is a trip hazard and USB ports sleep.
- WiFi / WebSocket — FluidNC and grblHAL boards. No cable, and you can put the machine where the extraction is rather than where the computer is. Susceptible to interference and drop-outs.
Browser-based software reaches USB through the Web Serial API, which is available in Chrome and Edge but not Firefox or Safari. It requires the page to be served over HTTPS and needs you to pick the port explicitly — the browser will not open a serial device without a click.
The states a machine reports
Once connected, the controller answers a status query several times a second. The state it reports is the fastest way to understand what it is doing.
| State | Means |
|---|---|
Idle | Ready |
Run | Executing a job |
Hold:0 / Hold:1 | Paused — 1 while still decelerating, 0 once stopped |
Jog | Executing a jog move |
Home | Running a homing cycle |
Alarm | Locked out; movement refused until cleared |
Door:0–Door:3 | A safety door or interlock is open |
Check | Running the file without firing the laser |
A board with homing enabled starts in Alarm deliberately, because it does not know where the head is. Home it with $H, or clear the alarm with $X if you accept the position as it stands.
When a connection drops mid-job
- Stop before you investigate. A half-streamed job may leave the laser on. Power down the tube or module if you are unsure.
- USB: check the cable first, then USB power management. A port that sleeps mid-job disconnects the machine. Disable selective suspend for that port.
- WiFi: check signal at the machine, not at the desk — a metal enclosure is a good Faraday cage. Consider a fixed IP so the board does not change address mid-session.
- Ground loops are a real cause of USB drop-outs on machines with poor earthing. A USB isolator is cheap and often fixes it outright.
- Restart the job from the beginning unless the software can genuinely resume. Restarting mid-file without knowing the machine’s exact state cuts in the wrong place.
Common questions
Which browsers can talk to a laser cutter?
Chrome and Edge, via the Web Serial API, plus any browser for WiFi-connected controllers that speak WebSocket. Firefox and Safari do not implement Web Serial, so USB connections are not available in them. The page must be served over HTTPS, and you have to pick the port from a browser prompt.
Why does my machine start in Alarm?
Because homing is enabled and it does not yet know where the head is. That is deliberate — it refuses to move rather than move somewhere wrong. Run a homing cycle with $H, or clear the alarm with $X if the current position is acceptable and you would rather not home.
Is my FluidNC board just GRBL?
No, although it announces itself with a Grbl prefix so GRBL software will work with it. FluidNC runs on ESP32, is configured with a YAML file rather than numbered $ settings, and adds WiFi and a web interface. Software that checks for "Grbl" first will misidentify it and hide those features.
What causes USB disconnects during a job?
Most often USB power management putting the port to sleep, a marginal cable, or a ground loop between the machine and the computer. Disable selective suspend for the port, try a shorter shielded cable, and if the problem persists a USB isolator often resolves it outright.