forgectrl: implement the camera MJPEG service

Persistent imx-media capture engine (lid/head via the shared video-mux, 409 arbitration, 10 s idle teardown), 1296x972 MJPEG stream via 2x2 Bayer superpixel, full-resolution bilinear snapshots, mjpg-streamer-compatible aliases, sysvinit script; installed in both images. Bench-verified: 3.2 fps stream, clamped 0 during simultaneous motion.
This commit is contained in:
ScottW514
2026-08-03 12:26:23 -04:00
parent f396dbde34
commit b3a8924c91
11 changed files with 1435 additions and 26 deletions
@@ -3,13 +3,14 @@ require recipes-glowforge/images/glowforge-image.bb
DESCRIPTION = "OpenGlow/ForgeFIRM image for Glowforge"
# ForgeFIRM cuts the cloud dependency: drop the Glowforge cloud client
# (gfui-client connects to Glowforge's servers) — exactly what ForgeFIRM
# replaces with a local grblHAL controller (forgectrl, currently a placeholder;
# see kas/README.md backlog #5). Removing it here (override only; the shared
# glowforge-image base is untouched) also sidesteps its do_package failure.
# (gfui-client connects to Glowforge's servers). Removing it here (override
# only; the shared glowforge-image base is untouched) also sidesteps its
# do_package failure. Its slot is filled locally by forgectrl (camera MJPEG
# service; the grblHAL controller recipe is tracked in kas/README.md
# backlog #5).
IMAGE_INSTALL:remove = "gfui-client"
# Camera bring-up tooling: v4l-utils provides v4l2-ctl (the media-ctl binary is
# already pulled in) for configuring the imx-media pipeline and grabbing frames
# while the gfhardware capture path is ported off the factory NXP V4L2 model.
IMAGE_INSTALL:append = " v4l-utils"
# forgectrl: the ForgeFIRM control daemon (camera MJPEG service on :8080).
# v4l-utils provides media-ctl / v4l2-ctl for the imx-media pipeline (also a
# forgectrl runtime dependency, kept explicit here for bring-up use).
IMAGE_INSTALL:append = " forgectrl v4l-utils"