mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 08:41:13 -07:00
- LIGHTBURN.md: mandatory "Before you cut" safety section; the walkthrough now reflects the firing machine (dry runs need the layer output off or M5; live first-cut instructions); the homing entry documents homing_mode and the gfcloud method; the machine address is a placeholder. - README.md: condensed safety section linking the full text and the regulatory notes. - INSTALL.md: "Regulatory and legal" section ahead of the install steps; routine updates route through the panel updater rather than the installer. - BRINGUP.md: the release signing key is described as held offline (no on-disk path); bench address and credential notes removed; Next-work item 7 corrected (the installer embeds the production release key); status entry for audit remediation Phases 0-1; the GATE A kernel drills join the pending image-flash checklist. - bench scripts: the target host comes from GF_HOST (or argv) instead of a hardcoded address. - laser_stream_test.py: per-session controller runs with a hermetic cooling-verdict publisher; new assertions that every stream terminates with FIRE clear (including M3 held to stream end) and that no FIRE bit rides a zero-step gap; a cycle-churn session exercises the stop/start seams. Audit findings D-1, D-2, D-3, D-5, D-10, D-12, B-10, and the harness half of D-4/G-1.
117 lines
5.0 KiB
Markdown
117 lines
5.0 KiB
Markdown
# Installing OpenGlow/ForgeFIRM
|
|
|
|
ForgeFIRM installs **alongside** the factory firmware on the stock eMMC,
|
|
using the factory's own A/B rootfs slot scheme: the installer writes
|
|
ForgeFIRM to the slot the factory firmware is *not* running from, and
|
|
switches the bootloader to it. Nothing is repartitioned, the factory
|
|
`/data` partition (settings, calibration, logs) is untouched, and the
|
|
booted factory firmware stays installed in the other slot.
|
|
|
|
Before anything is overwritten, the installer archives **every** factory
|
|
firmware version on the machine — both rootfs slots and the recovery
|
|
boot partitions — to `/data/forgefirm/archive/`, so a full offline
|
|
factory restore is always possible, no Glowforge cloud required.
|
|
|
|
> **Requires a ForgeFIRM release that ships the `forgefirm.fw` asset
|
|
> (v0.1.0 or later).**
|
|
|
|
## Prerequisites
|
|
|
|
- [Serial console](SERIAL.md) access. Current factory firmware does not
|
|
offer SSH, so the install is run at the console (login `root`, no
|
|
password).
|
|
- ~300 MB free on `/data` (a factory machine has far more).
|
|
- Internet access on the machine for the standard flow. For an offline
|
|
install, place a `forgefirm.fw` on `/data` beforehand and pass its
|
|
path to the installer.
|
|
|
|
**A very important warning: this is experimental software. Use of this
|
|
software could seriously maim or kill you or others, and voids your
|
|
warranty. It is not affiliated with or endorsed by Glowforge. Use it at
|
|
your own risk.**
|
|
|
|
## Regulatory and legal
|
|
|
|
Installing ForgeFIRM replaces the firmware of a certified laser product.
|
|
This is disclosure, not legal advice — but understand the categories
|
|
before you install:
|
|
|
|
- **Laser product certification (US).** The factory machine is
|
|
certified under FDA/CDRH 21 CFR 1040.10 and 1040.11. Modifying it
|
|
makes **you** the manufacturer of a modified laser product for
|
|
regulatory purposes; the original accession no longer describes the
|
|
article you operate.
|
|
- **CE/UKCA (EU/UK).** The manufacturer's declaration of conformity no
|
|
longer covers the modified machine.
|
|
- **Safety listing.** Any UL/ETL or equivalent listing applies to the
|
|
product as shipped, not as modified.
|
|
- **Insurance.** Property and liability policies commonly exclude fire
|
|
loss involving modified equipment. Check yours before running jobs.
|
|
|
|
The hardware safety interlocks (lid switches, interlock, power-fault
|
|
chain) remain active under ForgeFIRM — but the regulatory status of the
|
|
machine is yours to own once you flash it.
|
|
|
|
## Install
|
|
|
|
Log in at the factory console and run:
|
|
|
|
```sh
|
|
curl -fL https://raw.githubusercontent.com/ScottW514/forgefirm/master/scripts/install-forgefirm.sh --output /tmp/install-forgefirm.sh
|
|
sh /tmp/install-forgefirm.sh
|
|
```
|
|
|
|
(For an offline install: `sh /tmp/install-forgefirm.sh /data/forgefirm.fw`)
|
|
|
|
One stage, no intermediate reboots. The installer:
|
|
|
|
1. Confirms it is running on factory firmware, from a factory eMMC
|
|
slot, with the factory partition layout.
|
|
2. Stops the Glowforge services (including the updater).
|
|
3. Archives every factory slot version and the recovery boot
|
|
partitions to `/data/forgefirm/archive/` (manifest with checksums;
|
|
a few minutes each, with progress).
|
|
4. Downloads the latest `forgefirm.fw` release (or uses the local file
|
|
you passed) and **verifies its signature** before touching anything.
|
|
5. Writes ForgeFIRM to the inactive slot with the factory's own `fwup`,
|
|
then verifies the written filesystem.
|
|
6. Installs `/data/ffboot` (the boot-slot tool) and switches the saved
|
|
U-Boot environment to the new slot — the switch is read-back
|
|
verified; on any failure the machine keeps booting factory firmware.
|
|
7. Reboots into ForgeFIRM.
|
|
|
|
Login is `root`, no password (also via SSH). Change it.
|
|
|
|
## Switching firmware
|
|
|
|
Both systems stay installed; `ffboot` switches between them (as
|
|
`/data/ffboot` on factory firmware, on the PATH in ForgeFIRM):
|
|
|
|
```sh
|
|
ffboot -l # inventory: what is in each slot, what boots next
|
|
ffboot -e # switch to the factory firmware (newest factory slot)
|
|
ffboot -e2 # switch to ForgeFIRM (slot 2 on a standard install)
|
|
```
|
|
|
|
Switch targets are probed first — `ffboot` refuses to select a slot
|
|
that does not look bootable (`-f` overrides). Reverting to factory
|
|
firmware and back requires no reinstall.
|
|
|
|
**Routine updates do not use the installer.** Update from the web
|
|
control panel's System page, which downloads (or accepts an upload of)
|
|
a signed `forgefirm.fw` release, verifies it, and applies it to the
|
|
inactive slot. Rerunning the installer is only for recovering a broken
|
|
ForgeFIRM install: switch to factory firmware and run it again — it
|
|
skips archives it already has and simply rewrites the ForgeFIRM slot.
|
|
|
|
## Upgrading from a legacy dual-partition install
|
|
|
|
Machines installed with the previous (partition-carving) installer
|
|
migrate automatically: run this installer from the factory firmware;
|
|
on ForgeFIRM's first boot from its new slot, the legacy partition is
|
|
reclaimed and `/data` grows back to the full factory size. `/data`
|
|
contents are preserved throughout.
|
|
|
|
**NOTE:** This firmware is in beta. It mostly works. It is for
|
|
experimentation purposes — not for production. Expect problems.
|