Skip to content

About

a GRBL laser controller from the browser

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chisel Laser

A GRBL laser controller that runs entirely in the browser over the Web Serial API.

I couldn't get Lightburn to run on my MacBook (M1 - I suspect the problem might be Apple Silicon support) so I just... made my entire own laser engraving software.


Running it

Any of these work:

Live: https://laser.brennan.computer

# 1. Just open the file. Web Serial works from file:// in Chrome, so just open index.html locally

# 2. Or serve it, if you prefer a localhost origin
python3 -m http.server 8000   # then http://localhost:8000

Requires Chrome, Edge, or another Chromium browser. Safari and Firefox do not implement Web Serial and never load the serial picker.

Everything is client-side. Nothing is uploaded, there's no server; no data or images you trace ever leave your machine.


Using it

  1. Top right: hit CONNECT, then choose the USB port your laser is connected to (usually it's named something obvious)
  2. On connect it sends $$ and learns $30 (max S) and $130/$131 (work area, drawn as the dashed envelope in the preview).
  3. Drop a .gcode/.nc file or an image onto the preview.
    • Images open the vector tracer (see below).
  4. ▢ OUTLINE walks the job's bounding box with the laser off, looping until you click it again — use it to position material before burning.
  5. ▶ RUN streams the job. The browser and computer MUST stay on for this, it's streaming commands to the machine in realtime so disconnects mean the laser stops running.

Controls

Control Notes
Jog pad $J= jog commands. Arrow keys work too; PgUp/PgDn for Z; Esc = jog cancel
HOME / UNLOCK $H / $X
ZERO XY / ZERO Z G10 L20 P1 — sets work origin at current position
HOLD / RESUME Realtime ! / ~
STOP Feed hold, then soft reset 400 ms later — decelerates instead of losing steps
Overrides Realtime bytes 0x90–0x9D, live feed/power trim while running
Console Full history (↑/↓). Error and alarm codes are decoded to plain English

Vector tracer

Drop an image → threshold it → trace contours → generate G-code.

  • Threshold — auto-set per image via Otsu's method, then adjustable live.
  • Invert — trace light areas instead of dark.
  • Despeckle — drop contours below N mm² (potrace's turdsize).
  • Simplify — Douglas-Peucker tolerance in mm.
  • Smoothing — Chaikin corner rounding, capped in mm so straight edges stay straight.
  • Width / power / feed / passes live in the left sidebar and stay adjustable after the tracer closes — changing them regenerates the job in place.

Output uses M4 dynamic power, orders paths greedy-nearest, and rotates each closed loop to start nearest the previous path's end to cut travel time.

This is outline tracing — good for logos, text, line art, cutting. It is not photo engraving, which needs raster scanning with per-pixel power modulation.


macOS + Phecda notes

If the serial port doesn't appear in Chrome's picker, the Mac isn't enumerating the laser's USB-serial chip — which would break LightBurn too, not just this app.

ls /dev/cu.*                    # laser plugged in and powered on
system_profiler SPUSBDataType   # find the vendor ID
  • A cu.usbserial-* / cu.wchusbserial* node appears → drivers are fine.
  • Nothing appears → try a different USB cable first. Engravers ship notoriously bad ones, and a charge-only cable looks exactly like a software problem.
  • Still nothing → check the vendor ID. 0x1a86 = WCH (CH340/CH9102): brew install --cask wch-ch34x-usb-serial-driver, approve it in System Settings → Privacy & Security, replug. 0x10c4 = Silicon Labs CP210x.

About

a GRBL laser controller from the browser

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages