Added SPDX

This commit is contained in:
ScottW514
2026-09-18 12:14:22 -04:00
parent 07158e5d7f
commit 0eb764bf75
157 changed files with 634 additions and 1 deletions
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Does the coolant reading hold still when the run airflow comes on?
With cool_aa_offset_counts at the machine's value the engine takes the
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""De-risk drill for the head-accelerometer crash detector.
The LIS2HH12 on the head bus (i2c-3 @0x1e) carries an on-chip interrupt
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Fast direct-I2C sampler for the two LIS2HH12s on the head bus (i2c-3).
Unbinds st_accel from both for the capture (rebinds after), programs
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""How fine an arc the one core can plan: a $12 ladder on the 9 in circle (on the board).
Usage: arc_tolerance_sweep.py [--mode M] [tolerances...]
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Milestone-2 motion-quality bench: factory-true rates/accels over TCP.
Runs a bounded, return-to-start jog sequence against grblHAL on the board
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""End-of-data protocol bench.
Motion-safe by construction: all four motors are locked via motor_lock (the
+4
View File
@@ -1,4 +1,8 @@
#!/bin/bash
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
# Cross-compiles the bench feeder for the factory board, borrowing the
# Yocto cross toolchain from the ulfius recipe work directory.
#
+4
View File
@@ -1,4 +1,8 @@
#!/bin/bash
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
# Cross-compiles forgectrl (the sibling repo) for the factory board,
# borrowing the Yocto cross toolchain + sysroot from the forgectrl
# recipe work directory (which carries ulfius, jansson, gnutls,
+4
View File
@@ -1,4 +1,8 @@
#!/bin/bash
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
# Cross-compiles grblHAL-glowforge (the sibling driver repo) for the
# factory board, borrowing the Yocto cross toolchain from the ulfius
# recipe work directory. Regenerate a cleaned toolchain path with:
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Accelerometer bump-seek prototype: creep toward a rail in bounded jog
segments, detect the contact jolt on the head LIS2HH12, jog-cancel at once,
back off. This is the homing-cycle detection loop, run standalone.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Software check: laser PWM carrier frequency from PWM2 registers.
Expected with the fsl,extra-prescale=<13> fix: PWMCR prescaler divider = 13,
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Charge-pump watchdog timing (runs ON the board, as root).
Measures the HV watchdog one-shot (U1-1, SN74AHC123A) directly from the
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Coolant critical-tier drill: the loop warmed through the lines by the
engine itself, inside one run session.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Debug-kernel drills: lock correctness across glowforge.ko load/unload
and a forced -EPROBE_DEFER unwind.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Fan floor measurement: the numbers the airflow gates ship with.
Two modes, both sampling the four tachometers (/status fans, rpm) and the
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Fan/coolant bench: snapshots the fan PWMs, tachs and coolant readings,
drives M8 (cut-profile fans), then M9 (cooldown -> idle), and prints
each snapshot for the tach readbacks to be judged. Needs the controller
+4
View File
@@ -1,4 +1,8 @@
#!/bin/sh
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
# Runs ON the board. While forgectrl spawns helper children (the update
# check's curl, the snapshot's media-ctl/v4l2-ctl), scan every child for a
# descriptor on the pulse device. Expected: none - only the controller
+5
View File
@@ -1,3 +1,8 @@
/*
* Copyright 2026 514 LLC d/b/a OpenGlow
* Written by Scott Wiederhold
* SPDX-License-Identifier: MIT
*/
/*
* feeder.c - prove no-underrun continuous live feeding of the glowforge.ko
* SDMA pulse ring under load.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""FIRE-line drop-timing test - runs ON the board. Usage: fire_test.py A|B|U
Stream: power(0) first byte (duty forced to ZERO before any FIRE bit -
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Characterize the coolant flow signature using the FACTORY temperature
curve, and recommend flow-fault thresholds.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Bench drill for the flow-check suspicion/confirmation state machine.
Runs ON THE BOARD (scp it over, then: python3 flow_confirm_drill.py).
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Bench drill for the starved-re-check escalation path.
Runs ON THE BOARD with the controller running. The cooling engine's
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Coolant flow-detection design matrix: heating cost AND detection
precision across heater duty cycles and check durations.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Characterize a SHORT periodic flow re-check for use DURING a job.
Why a separate design from the job-start check: with the laser firing
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Board-side coolant sampler: prints 'elapsed,raw_down,raw_up' lines.
Usage: flow_sampler.py <duration_s> <interval_s>
Kept on the board so sampling cadence is not at the mercy of ssh
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Sustained-load test for periodic flow re-checks.
Question: what does repeated interrogation cost thermally over a long
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Validate the flow check at a WARM loop baseline - the condition a
real job actually presents.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""GATE A kernel drills - runs ON the board. Usage: gate_a_kernel_drills.py K1|K2|K3
The pulse device must be free: stop forgectrl first
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Shared helpers for the bench tools that can run either ON the board or
from a LAN host.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Host-side verification of the operator-armed window lifecycle.
Runs the native grblHAL_glowforge binary in null-sink mode (no
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Host-side verification of the laser pulse-stream emission.
Runs the native grblHAL_glowforge binary in null-sink mode with
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Lens stop detection by the head accelerometer: a bench drill.
Steps the lens one half-step at a time from the hall's rising edge toward
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Lens travel drill: where the carriage's stops sit against the hall edge.
Runs on the board with the controller stopped (through forgectrl, so the
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Live-fire bench drills - Phases 4, 5, 6. Runs on the board (the bench
page) or from a LAN host, against grblHAL over TCP (port 23) and
forgectrl over HTTP (:80, FORGECTRL_PORT overrides); the machine is GF_HOST, default 127.0.0.1.
+4
View File
@@ -1,4 +1,8 @@
#!/bin/sh
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
# Runs ON the board while a cloud session is live: blackhole every
# established :443 peer and break name resolution for N seconds, then
# restore both. The cloud client must notice the dead socket, exit toward
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Coolant-sensor offset probe: which actuator moves both thermistors?
The coolant ADC reads about 1 C low on both sensors while the run airflow
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Pacing-fix bench check - runs ON the board (localhost). Dry motion,
no laser. Verifies:
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""LASER_PGOOD (J1_14) against the rest of the laser chain, through the
kernel's readbacks.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Host-side verification that a deep planner buffer starts.
$398 (planner buffer blocks) is a reboot-required setting with a range of
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Kernel platform drills - runs ON the board, with forgectrl stopped
(/etc/init.d/forgectrl stop) so the pulse device is free. Restart forgectrl
afterward. Usage: platform_drills.py deadman|rmmod|decay|led|all
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Extract motion profiles from Glowforge pulse files.
Decodes a factory .puls byte stream (one byte per machine tick) and reports
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Hold LASER_PWM at one duty value for a measurement window, then restore.
Usage: pwm_hold.py [sar] [seconds] (defaults: 8, 30)
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""LASER_PWM stream-path test - runs ON the board.
Streams POWER BYTES ONLY (bit 7 set) through /dev/glowforge and lets the
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""LASER_PWM scope test - runs ON the board.
check: read-only - safety-chain readbacks + PWM2 register dump.
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""A dry raster at top speed at each XY microstep mode (on the board).
Usage: raster_dry.py [modes...] (default: 8 16 32)
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Resume dark-lead characterization (runs ON the board, as root).
Measures what the safety chain does across a pause and a resume, at pad
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Coolant temperature spot-check helper (runs on the board or from a
host; gfbench: GF_HOST).
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Host-side verification of the XY microstep mode wiring.
The XY microstep mode is one number in the shared config, xy_microsteps
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""The XY microstep modes by the head accelerometer, the machine silent (on the board).
Usage: xy_pattern_accel.py [modes...] (default: 8 16 32)
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""Host-side verification that the Z envelope survives a settings write.
The Z soft limit belongs to the driver, not to $20. glowforge_homing.c
+4
View File
@@ -1,4 +1,8 @@
#!/usr/bin/env python3
# Copyright 2026 514 LLC d/b/a OpenGlow
# Written by Scott Wiederhold
# https://community.openglow.org
# SPDX-License-Identifier: MIT
"""The files forgetest's page shares with forgectrl's panel, byte for byte.
theme.css (the OpenGlow theme on Bootstrap) and the vendored Bootstrap