Split out of #444 (PR #450 architect re-entry, 2026-09-14 comment on #444).
Observed on pupu, 2026-09-15 (architect's note on #444): after a JACK restart, the FF400 driver skips a mixer write whose value matches its cached value, so ff400.sh's level/gain/routing/mute writes can leave the device at driver defaults while amixer cget readback shows the requested value. The script (and its show mode) has no way to tell "written and applied" from "written and skipped, cache stale."
Architect's note (issue #444, re-entry): "silent-config defect... belongs in a separate issue, not this one."
This is the same failure class as the phantom-power cache issue #441 already worked around with a toggle-write restore (per MEMORY.md: "pupu logout deletes the JACK socket... the fixing restart resets FF400 to defaults while ALSA readback lies — toggle-write baseline"). Fix direction likely the same toggle-write pattern, generalized to whichever controls this script sets, or an explicit note that readback after this script cannot be trusted post-restart.
Not urgent enough to block #450; filed per qa's "bug found outside PR scope → open new issue" rule.
Split out of #444 (PR #450 architect re-entry, 2026-09-14 comment on #444).
Observed on pupu, 2026-09-15 (architect's note on #444): after a JACK restart, the FF400 driver skips a mixer write whose value matches its cached value, so
ff400.sh's level/gain/routing/mute writes can leave the device at driver defaults whileamixer cgetreadback shows the requested value. The script (and itsshowmode) has no way to tell "written and applied" from "written and skipped, cache stale."Architect's note (issue #444, re-entry): "silent-config defect... belongs in a separate issue, not this one."
This is the same failure class as the phantom-power cache issue #441 already worked around with a toggle-write restore (per MEMORY.md: "pupu logout deletes the JACK socket... the fixing restart resets FF400 to defaults while ALSA readback lies — toggle-write baseline"). Fix direction likely the same toggle-write pattern, generalized to whichever controls this script sets, or an explicit note that readback after this script cannot be trusted post-restart.
Not urgent enough to block #450; filed per qa's "bug found outside PR scope → open new issue" rule.