mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 08:41:13 -07:00
README: replace the stalled REST/GUI roadmap with what the firmware does - GRBL mode over TCP for LightBurn/UGS/cncjs, optional cloud mode, the web control panel, cameras, A/B install beside the factory firmware - plus the supported hardware incl. the 8 MP camera limitation and a real roadmap. kas/README: xvclk is the board's 24 MHz oscillator; the pin/push rule covers every source repo; camera and motion sections are hardware-validated, with the OV8856 caveat spelled out; the device-tree item closes with the control_12v residue named; forgectrl is the machine-services daemon with two supervised controllers. LIGHTBURN.md: drop the pre-first-light status line. BUILD.md: state the NXP firmware licensing and where the EULA lives on the machine. The image now installs firmware-imx-lic, so the EULA text ships beside the VPU/EPDC blobs it covers; a bbappend declares that package at parse time, which is what makes it installable from an image recipe.
91 lines
3.0 KiB
Markdown
91 lines
3.0 KiB
Markdown
# Build
|
|
|
|
ForgeFIRM is built with [**kas**](https://kas.readthedocs.io/), which manages
|
|
the Yocto layers and pins their versions. The **forgefirm** repo is the base
|
|
of the build.
|
|
|
|
Builds run on a Linux host, or on **WSL2** (officially supported by Yocto —
|
|
keep the tree on the native ext4 filesystem, not `/mnt/c`).
|
|
|
|
## Host setup
|
|
|
|
On Ubuntu/Debian (including WSL2), install the Yocto host packages and kas:
|
|
|
|
```console
|
|
sudo apt-get install -y gawk wget git diffstat unzip texinfo gcc build-essential \
|
|
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
|
|
iputils-ping python3-git python3-jinja2 python3-subunit zstd liblz4-tool file \
|
|
locales libacl1 lz4 rsync
|
|
sudo locale-gen en_US.UTF-8
|
|
pipx install kas # use pipx — Ubuntu 24.04 (PEP 668) blocks `pip install --user`
|
|
```
|
|
|
|
For other distros, see the
|
|
[Yocto Project Quick Build](https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html).
|
|
Do not build as root (the Yocto sanity checks refuse it).
|
|
|
|
## Get the sources
|
|
|
|
Clone the repos as siblings (the kas config references `meta-openglow` at
|
|
`../meta-openglow` while it is under active Scarthgap migration):
|
|
|
|
```console
|
|
git clone https://github.com/ScottW514/forgefirm.git
|
|
git clone https://github.com/ScottW514/meta-openglow.git
|
|
git clone https://github.com/ScottW514/kernel-module-glowforge.git
|
|
```
|
|
|
|
```
|
|
openglow-forgefirm/
|
|
├── forgefirm/ ← base repo, build runs here
|
|
├── meta-openglow/
|
|
└── kernel-module-glowforge/
|
|
```
|
|
|
|
## Build the image
|
|
|
|
```console
|
|
cd forgefirm
|
|
kas build kas/forgefirm-glowforge.yml
|
|
```
|
|
|
|
kas fetches the upstream layers into `forgefirm/layers/`, builds in
|
|
`forgefirm/build/`, and produces the bootable image at:
|
|
|
|
```
|
|
forgefirm/build/tmp/deploy/images/glowforge/forgefirm-image-glowforge.rootfs.wic.gz
|
|
```
|
|
|
|
(The `u-boot-glowforge.imx` also deployed there is **reference-only**: every
|
|
supported install/boot flow keeps the factory bootloader on the eMMC. Its env
|
|
Kconfig now matches the factory layout — 0x80000 primary / 0x82000 redundant —
|
|
but it is not wired into any install path and flashing it is unsupported.)
|
|
|
|
For exact, reproducible layer versions, generate a lockfile once:
|
|
|
|
```console
|
|
kas lock kas/forgefirm-glowforge.yml
|
|
```
|
|
|
|
See [`kas/README.md`](kas/README.md) for details, the container-build option,
|
|
and the Scarthgap migration backlog.
|
|
|
|
## Third-party firmware licensing
|
|
|
|
The i.MX6 BSP installs NXP firmware blobs (VPU, EPDC) that are distributed
|
|
under NXP's firmware EULA. The build config accepts it
|
|
(`ACCEPT_FSL_EULA = "1"`), and the image ships the license text alongside the
|
|
blobs at `/usr/share/licenses/firmware-imx/EULA` — keep it there in any
|
|
redistributed image. The SDMA firmware comes from `linux-firmware`, which
|
|
carries its own license package.
|
|
|
|
## Write to an SD card
|
|
|
|
```console
|
|
cd build/tmp/deploy/images/glowforge
|
|
sudo zcat forgefirm-image-glowforge.rootfs.wic.gz | dd of=/dev/sdX bs=1M
|
|
```
|
|
|
|
To install onto the factory eMMC (dual-boot with the Glowforge firmware), see
|
|
[`INSTALL.md`](INSTALL.md).
|