M1 gate. Does the FZ stay stable driven from a browser?
Protocol layer is fzproto.js, verified byte-for-byte against
fz.py (274/274). If something fails here, it is the browser or the
radio, not the bytes.
Before you start: stop the Play2Day server. It holds the BLE link to the
FZ and the browser will not get a second connection.
Power the FZ on and have the bass where you can see the whole neck.
1. Connect not run
What happens: a device chooser opens. Pick the Fret Zealot.
Nothing lights up yet — this only opens the link and reports what it found.
2. Single LED not run
Watch for: one red LED on the low E string, 5th fret.
Nothing else lit.
Did you see it?
3. Colors not run
Watch for: the D string, 7th fret cycling through five colors,
about 1.5 s each — red, orange, yellow, purple, white. The names are printed
in the log as each one fires.
Did all five render, and roughly match their names?
4. Additive writes — no CLEAR not run
Watch for: four LEDs lighting one at a time at the 5th fret,
E then A then D then G, about a second apart — and each one staying lit
as the next appears. All four should be on at the end.
This is the whole basis of the heavy-mode hot path: if lighting a new LED
wipes the previous one, the additive design does not survive the browser.
Did all four end up lit at once?
5. Intensity 0 extinguishes not run
Run this right after test 4, with all four LEDs still lit.
Watch for: the A and D LEDs going dark while E and G stay
lit — with no flash, blink, or full-board wipe in between.
Did A and D go out cleanly, leaving E and G?
6. Open strings (fret 0) not run
Watch for: the board clearing, then the four open-string LEDs at
the nut lighting one at a time and all staying lit.
Fret 0 has its own history on this hardware, so it gets its own test.
Did all four open strings light and stay lit?
7. Sustained run not run
This is the real test. Notes change at song speed (0.75 s tick, the
heavy-mode cadence) with a full CLEAR flush every 30 s, exactly like
ledsync.
Watch for: a steady walking pattern up and down the neck that
never freezes, stutters, or goes dark. At 30 s, 60 s, 90 s there is a
brief flush — a single blink is fine, a board that stays dark or stops moving
is a failure.
Keep an eye on the error and disconnect counters below; they should stay
at zero.
On the Pixel, also test backgrounding: about a minute in, switch to
another app for ~30 s, then come back. The LEDs will almost certainly pause
while you are away — what matters is whether they resume on their own
or the link is dead and needs a reconnect. Note which in the Fail box either
way; this is information, not a pass/fail on its own.