Repository navigation
Testing
The source package TESTING.md contains the complete regression checklist for v0.2.0 and the inherited v0.1.1 stable baseline.
Run:
./run_host_tests.shThe suite covers the existing playback engine and sound registry plus Night Mode HH:MM parsing, same-day intervals, overnight intervals, equal-boundary full-day mute semantics, and the complete optional C bridge.
Already verified on hardware for Night Mode:
- disabling Night Mode immediately restores playback while inside the configured quiet interval;
- re-enabling Night Mode immediately mutes playback again;
- Night Mode configuration persists across application/device reset.
Validate both a same-day interval and an interval that crosses midnight. Confirm that From/To are hidden while Night Mode is disabled, that all playback paths are blocked while muted, that an already-running sound is stopped when the interval begins, and that playback remains available if WLED has no valid local time yet.
The optional bridge now includes playRepeat, beep, and tone in addition to the v0.1.0 operations. A real iDotMatrix consumer smoke test has passed on the v0.2.0 release baseline.
All 15 built-in sounds, active/passive playback, repeat/loop behavior and the existing UI remain inherited from v0.1.0 and should receive a short smoke test only. Do not retune qualified sounds unless a genuine regression is found.
See repository TESTING.md for the full matrix.
For WLED_BUZZER_AUDIO_WAVESHARE_S3_MATRIX, verify Audio appears as a third Buzzer Type, /buzzer reports backend audio, the SPK connector reproduces built-in sounds, Volume/Stop/repeat/loop/Night Mode behave correctly, and HUB75 refresh remains stable during playback. Also switch back to Active/Passive to verify the original paths still work.
The current build has sample playback for fail, star_wars, alarm, connect, disconnect, notification, yankee_doodle, success, warning, attention, error, victory, imperial_march, trumpet, and wakeup. Verify those IDs use source: sample; verify the three Audio-only IDs appear only on Audio; and verify WLED_BUZZER_DISABLE_AUDIO_SAMPLES removes those three IDs while victory falls back to tone synthesis.
The v0.2.0 stable baseline is hardware-qualified for smooth speaker/AudioReactive output, zero observed write/short/late errors in the captured run, clean AudioReactive OFF -> ON -> OFF transitions, cold-boot saved volume, backend switching, Web API control, iDotMatrix consumer playback, expanded sample playback, and an ESP32-C3 build where the Audio-only IDs are absent.
An earlier coexistence observation was invalid because the Buzzer was not actually configured for Audio. Qualification requires Audio (I2S) to be selected and the backend to report ready/shared-I2S.
Configure the Buzzer explicitly as Audio (I2S) before testing. On Waveshare hardware with the board microphone configured in AudioReactive:
- cold boot with both usermods enabled;
- verify
/json/inforeports Buzzershared-I2S,TX I2S1 slave, 22050 Hz,clock tap GPIO-matrix,RX I2S0 untouched, andDMA 8x256; - verify Buzzer state is
idle, notnot ready; - verify AudioReactive peak/noise floor at silence remains comparable to a build without Buzzer;
- play Buzzer audio and verify the microphone reacts only acoustically;
- after playback, verify AudioReactive returns to its normal noise floor;
- toggle AudioReactive off/on and confirm Buzzer transitions between standalone/shared modes without corrupting RX.
- during a long PCM-backed playback, record
writes,err,short,maxWrite,maxGap,late,core0,core1, andstackMin; compare perceptual smoothness against b012/b013.
For a healthy continuous stream err, short, and late should remain zero. If maxGap exceeds DMA coverage, the TX producer missed its buffered deadline. If maxWrite approaches 100 ms, investigate clock/DMA progress separately from scheduler latency.
If Buzzer remains not ready, inspect the extra Buzzer audio error line before changing any other setting.
The qualified clock-routing implementation enables BCLK/LRCK input sensing without removing the I2S0 master output routes and verifies physical LRCK activity before starting I2S1 slave TX. This behavior must remain intact.
This is intentionally a Buzzer-side change only. AudioReactive/I2S0 remains the owner of RX and of the physical MCLK/BCLK/LRCK outputs.
WLED Buzzer Usermod · Documentation v0.2.0 · https://github.com/piggei/wled-usermod-buzzer