laser.emission-witness required the hardware button latch clear in every sample the engine reported armed, and, after a first fix, in every sample up to the last nonzero emission count. Both windows were drawn from lagging signals: the engine's armed flag follows the controller's next report, and the emission counter latches once per second and reads nonzero about two seconds past the relock. Both reached into the tail where the job-end relock sets the button latch by design, and the rule refused three clean runs on image 20260902144848 (all four sides burned; the trail shows the latch clear from the press to the relock, emission through the fourth side, HV_ENABLE's dip in the dwell and its return). The rule now uses the window the hardware defines: from the first emission, in every sample whose readback word shows the laser latch unlocked, the button-latch bit of that same word must be clear. That spans the kernel-run gap of the dwell and ends at the relock, and no lagging flag can misplace it. dwell_gap() is a pure function; tests/test_laser_dwell.py holds the relocked tail, a set inside the gap, and a trail without emission. The recorded trail of the third run replays to a pass (47 unlocked samples, none set). The live runs keep a per-sample trail in the evidence (TRAIL_FIELDS: the readback word, the switches, the lock flag, the controller's state and messages), so a run's timeline can be read back without a rerun. A fourth run then errored on a name the refactor had removed and one later check still used; py_compile does not catch it and a live drill never executes on the host, so the CI job now fails on any undefined name in the harness (pyflakes). Catalog consequence: the laser implementation hashes move.
OpenGlow/ForgeFIRM Firmware for Glowforge
⚠️ BETA
ForgeFIRM is in beta. Every release below 0.1.0 is a beta release. Expect problems, and expect frequent updates. Upgrade whenever a newer release is available, and report what you find on the community forum.
Open-source firmware for Glowforge brand CNC lasers. ForgeFIRM replaces the cloud-dependent factory software on the stock control board - no hardware modification - and gives the machine a local controller, a local web control panel, and a standard Grbl interface.
- Latest Release
- Installation Instructions
- Build Instructions
- Connecting LightBurn
- How motion and the laser are driven
- How cooling and airflow work
- The cameras and the video stream
- How the laser safing works
- How a release is tested before being accepted
- Community Support
What it does
Two controller modes, selected in the web panel and switchable while the machine is idle:
- GRBL mode: grblHAL runs on the machine and speaks Grbl 1.1 over TCP port 23, so LightBurn, UGS, cncjs, etc... drive the laser directly. Motion runs on the board's own hardware step engine (SDMA + EPIT), fed live by a local planner. M3/M4 dynamic laser power, coolant-flow verification, over-temp holds, and an operator button press to arm the laser for each job.
- Cloud mode: The machine presents itself as a stock Glowforge to the Glowforge web service, so the phone and web apps work as they always did. Optional, and off by default. GRBL mode jogs and cuts without it; the one GRBL-mode function that still reaches the Glowforge service is camera-referenced homing (below), until limit-switch homing lands.
- A web control panel: Machine status and position, coolant and fan telemetry, safety-switch states, live camera stream, machine settings, hardware diagnostics, firmware updates, and boot-slot management.
- Camera-referenced homing:
$Hfrom any sender runs the factory-style camera homing cycle through the Glowforge service (a Glowforge account and a live service session are required for$H; everything else in GRBL mode runs without them).
Hardware
The control board is common to Glowforge Basic, Plus, and Pro. The 5 MP (OV5648) camera modules are fully supported and hardware-validated. The 8 MP (OV8856) modules found in "HD" units have a complete capture path - the kernel patches, device tree and sensor-aware capture profile they need are all in the build, but it has never run on an 8 MP machine, so treat it as untested.
What this costs
ForgeFIRM is free in both senses: free as in beer, free as in speech. All of it is public and released under MIT and GPL licenses. Read it, build it, change it, use it, pass it on.
The work happens in public, including the parts that don't work yet, which are written up with more candor than flatters anyone. No paid tier. No license key, no subscription, no activation, no Pro edition, no feature parked behind a paywall. Nothing is held back for a rainy day, mostly because there's no plan for a rainy day.
If someone offers to sell you this firmware, the licenses allow it and nobody's calling it theft. Just note that you'd be paying for something that's given away. Get it from the source. Same price everywhere, and here you get to read what you're running.
Safety
These machines contain a CO₂ laser: it burns, blinds, and starts fires. Never defeat the lid switches or interlock. Never leave a running job unattended. Keep a fire extinguisher within reach. Read this before you cut your first job, and read this regulatory and legal section before installing. This page describes the hardware safety chain and the software gates ForgeFIRM stacks on it.
THIS IS EXPERIMENTAL SOFTWARE
Use of this software
could seriously maim or kill you or others, and could void your warranty.
Use it at your own risk.
This project is not affiliated with or endorsed by Glowforge.