Skip to content

Releases: Sukecz/esp32-birdnet-mic

Firmware 2.04

Choose a tag to compare

@Sukecz Sukecz released this 31 Oct 13:46

2.04 - 2026-10-31

  • Smoother Listen: schedule incoming PCM continuously instead of inserting small gaps or dropping ordinary network bursts. Start with a 500 ms browser-side reserve and increase it after playback starvation, with bounded buffering and memory.
  • Preview overflow: retain audio already captured in the Listen queue. Reject only incoming blocks that cannot fit, preserving PCM order and partially sent samples. Report actual rejected PCM bytes without losing concurrent overflow reports.
  • Recording resources: keep preview queue capacities, capture/SD independence and task counts unchanged. Static RAM grows by only 16 bytes on C3/C6; S3/C5 static RAM is unchanged.
  • Validation: four-board builds, recording-memory regressions and source/embedded browser checks; C6 local OTA and measured playback continuity. Long network stalls can still lose audio once the finite preview queue fills. See the validation record for results and physical SD limits.

Firmware 2.03

Choose a tag to compare

@Sukecz Sukecz released this 31 Oct 10:44

2.03 - 2026-10-31

  • Recording: fix false memory-allocation failures with PSRAM, Device Wi-Fi, PDM and mDNS enabled. Use the Recording budget for capture restarts, retain the larger internal-buffer reserve, and show the actual reason when a start is blocked.
  • Listen: fix Chrome's generic “Failed to fetch” for busy connections and retry a quick Stop → Listen restart. Recover temporary TCP stalls and automatically reopen interrupted or stalled audio transfers, preserving playback volume. Stop and intentional Wi-Fi-off cancel recovery; repeated failures remain bounded.
  • Device Wi-Fi password: set your own 8–63-character password in Network or Device configuration. Save or cancel independently, retain drafts across polling and preserve existing passwords/settings during upgrade. Stop recording before changing it; reconnect AP clients with the new password afterward.
  • mDNS: respect saved OFF when the OTA service starts, including after reboot.
  • Validation: all four firmware targets, 117 native/Python tests and source/embedded browser checks passed. C6 playback/recovery and S3 settings persistence were physically checked; see the validation record for hardware limits.

Firmware 2.01

Choose a tag to compare

@Sukecz Sukecz released this 30 Oct 21:54

2.01 - 2026-10-30

  • S3 PSRAM: enable the XIAO S3 OPI PSRAM in the common build helper and use
    it for Streaming and Listen buffers, sharing the C5 allocation/fallback policy.
    DMA and capture/DSP working buffers stay internal.
  • Recording memory on all boards: do not allocate an unused RTSP ring in
    Recording. Keep Listen independent, release the SD PCM queue before returning
    to Streaming, and restore the previous mode if capture restart fails.
  • SD checks: the first card check uses the same smaller I/O reserve as later
    checks, with a separate worker-stack budget and contiguous-memory check.
  • Listen stability: give preview transport its own bounded worker so web
    requests cannot starve audio sending. Catch up in bounded bursts; recover
    short preview queue overflows by discarding stale preview PCM while keeping
    partial TCP blocks aligned. Keep slow-reader limits and SD recording independent.
    Expose transport reasons, memory/stack reserves and preview recovery counters.
  • Retries: a new recording attempt reports its current allocation error,
    instead of keeping an earlier missing-card error.
  • Diagnostics: report free, largest and minimum internal heap plus detected
    PSRAM on every board.
  • Validation: 112 native/Python tests, all four firmware targets and S3/C5
    builds without PSRAM. Physical checks covered S3/C5/C6, including actual C5
    SD recording with continuous Listen. C3 and Sense were not physically qualified.
    See the validation record.

Firmware 2.00

Choose a tag to compare

@Sukecz Sukecz released this 30 Oct 17:07

2.00 - 2026-10-30

  • Standalone Recording: save mono 16-bit WAV to microSD, with timed or continuous
    sessions, automatic file splitting, optional start after power-on, free-space/time
    estimates and Stop & save. Streaming remains a separate mode; Listen works in both.
  • SD hardware: external SPI modules on C3/S3/C5/C6 (Adafruit BFF #5683), plus
    Sense's built-in slot. AtomS3U remains Streaming-only. Improve SPI ready/busy handling,
    buffer allocation and WAV finalization; preserve partial files on errors.
  • Field power: turn Wi-Fi off while recording, then sleep when the offline session
    ends. Reconnection requires reset or power cycling. Optional low-battery stop/save
    and sleep; voltage monitoring and calibration, with C5's built-in divider.
  • Device configuration: new setup wizard, board/startup-mode selection, tested
    home Wi-Fi credentials, protected direct access and offline recovery access point.
    Add C6 internal/external antenna selection.
  • Logs: bounded RAM history, paging/download and optional persistent rotating SD
    journal; Normal/Detailed levels. PSRAM-aware buffers retain internal audio headroom.
  • Time and protection: confirm real SNTP responses and retry pending synchronization;
    coordinate Recording with thermal shutdown/recovery, OTA and definitive session ends.
  • Documentation: beginner-focused two-mode guide, board/storage matrix, field workflow,
    battery estimates, card capacities and linked parts. Recommend C5 + PDM for new builds.
  • Validation: C5 completed a 9 h 6 min SD session with ten finalized WAV files and
    no observed recording drops or new I2S/DMA errors. This is not multi-day battery
    qualification. Sense and other boards' SD paths still require physical validation.

See the release notes.

Firmware 1.36

Choose a tag to compare

@Sukecz Sukecz released this 25 Oct 16:31

1.36 - 2026-10-25

  • C5 audio restart: keep using the PSRAM audio ring when a disconnected streaming client still holds internal TCP buffers. Apply the existing 64 KiB C5 Wi-Fi allowance to the PSRAM path, retaining producer-stack and contiguous-memory checks. Fix rejected gain/settings changes and failed rollback until automatic recovery. Other boards and C5 builds without PSRAM keep their existing allocation rules.
  • Add a regression case for restarting capture with 84 KiB internal RAM and a 25 KiB largest block. The permanent v1.35 OTA bridge and partition layouts are unchanged.
  • Web flasher: add download totals and per-release/board/source breakdowns, persistent light/dark themes and responsive presentation. Keep anonymous aggregate download counts separate from page-visit analytics; preserve historical collector state across releases.
  • See the validation record for builds, regression tests, C6 OTA and hardware-validation limits.

Firmware 1.35

Choose a tag to compare

@Sukecz Sukecz released this 24 Oct 08:09

1.35 - 2026-10-24

  • More room on C3/C6: expand both firmware slots from 1.25 MiB to 1.94 MiB with Prepare device, directly on the OTA page. Confirm once; copying, restarts, reconnection and verification are automatic. Saved settings are kept.
  • Safe upgrade sequence: older firmware first receives the small, permanent v1.35 bridge, even when later releases are larger. After that update, C3/C6 owners complete Prepare device before another OTA. Prepared devices use the current-release update channel. S3/C5 do not need preparation.
  • Clear update controls: explain preparation before further automatic or manual updates and enforce the check before flash writes. Read/checksum errors and a stale partition map cannot enable an update. Preserve ordinary OTA for valid custom layouts and configurations without this tool.
  • Migration safeguards: verify the table and boot selection, pause capture/RTSP, temperature evaluation and scheduled actions, retry failed writes and attempt to restore the original table. A power failure during the table rewrite can still require USB recovery; keep power connected.
  • USB installs: new C3/C6 installations start with larger slots. Keep the permanent bridge within the old slot limit and freeze its files for future skipped-release upgrades.
  • Documentation: simple first-update and one-time preparation instructions in all user guides. Maintainer PDM listening tests report excellent sound with no audible noise; this is not a measured SNR or long-run qualification.
  • See the validation record for four-board builds, host/browser checks, skipped-release routing and physical C6 OTA evidence and limits.

Firmware 1.34

Choose a tag to compare

@Sukecz Sukecz released this 22 Oct 07:36

1.34 - 2026-10-22

  • C5 PSRAM: enable PSRAM automatically in the build helper; allocate the 64 KiB RTSP ring and 32 KiB browser-listening queue in PSRAM. Keep DMA, PDM and capture/RTP working buffers internal. Preserve the adaptive internal-RAM fallback and check internal Wi-Fi/producer headroom before starting capture.
  • Audio buffer lifecycle: pair capability-aware allocation/deletion, clean up on task-start failure and prevent replacing listening storage after use or repeated initialization.
  • Sense: allow external Philips I2S and MSB/left-justified microphones while retaining the Sense board profile. PDM uses its built-in microphone. Preserve the chosen format across reboot/OTA, with existing transactional rollback on restart failure.
  • AtomS3U: record contributor hardware confirmation with BirdNET-Go on v1.33; keep its working CLK/DATA pins and left PDM slot. Sense remains experimental; maintainer hardware validation of both boards is pending.
  • Diagnostics: expose RTSP buffer placement and listening queue size, plus C5 PSRAM size/free space and the true minimum internal heap.
  • All four builds, a C5 PSRAM-disabled build and 59 host regression tests passed. C6 I2S OTA, TCP/UDP reception and browser listening passed with checked settings retained. See the validation record for evidence and hardware limits.

Firmware 1.33

Choose a tag to compare

@Sukecz Sukecz released this 21 Oct 13:47

1.33 - 2026-10-21

  • Manual recovery: after explicitly switching thermal protection OFF, acknowledge a saved shutdown immediately, including emergency/repeated trips and sensor faults. Switching OFF alone keeps streaming paused until acknowledgement. With protection ON, the five-minute cooling requirement still applies.

  • OTA: stop RTSP/browser listeners, audio capture and I2S/PDM clocks before flash writes on automatic download, manual upload and ArduinoOTA. Keep capture paused until reboot after success; restore it after failure without bypassing a thermal shutdown or stream schedule.

  • Thermal shutdown: stop capture and its clocks so the module can cool, including after reboot with a saved shutdown. Restart capture successfully before clearing the latch or restoring RTSP.

  • Temperature monitoring: use checked ESP-IDF sensor reads and supported measurement ranges instead of Arduino's fixed 10–50 °C configuration. Failed reads never become valid samples even when the driver supplies a finite number.

  • Cooling recovery: require five continuous minutes at least 10 °C below the shutdown limit, reduced from 15 °C. Migrate saved shutdowns to the new margin once, preserving trip history, emergency/manual blocks and existing user settings. Invalid/missing samples reset the cooling timer.

  • All four builds and 55 regression tests passed. C6 I2S OTA, thermal shutdown, immediate manual acknowledgement in the real Web UI and RTSP reception passed with settings retained. Sensor-failure and cooling boundary cases were simulated; see the validation record for coverage and hardware limits.

Firmware 1.32

Choose a tag to compare

@Sukecz Sukecz released this 21 Oct 13:04

1.32 - 2026-10-21

  • Add Audio → S3 board to the shared S3 firmware. XIAO ESP32-S3 with an external microphone remains the default; select XIAO ESP32-S3 Sense or M5Stack AtomS3U for their built-in 48 kHz PDM microphones. Both are Experimental — needs more testing.
  • Save board selection across restarts and OTA updates; restore the previous audio configuration if switching fails.

Firmware 1.31

Choose a tag to compare

@Sukecz Sukecz released this 20 Oct 07:53

1.31 - 2026-10-20

Highlights

  • Recommended microphone settings: review board-specific values before saving, keep saved settings or cancel. Apply a profile later with Recommended settings.
  • Clearer save feedback: Unsaved indicators clear when values return to their saved state, including equivalent numeric input such as 1.50 and 1.5. Newer edits survive status polling and pending/failed saves.
  • C5 audio startup fix: reduce the browser-listening queue from 16 KiB to 4 KiB, freeing 12 KiB for capture and Wi-Fi/TCP. A bounded fallback allows the minimum capture reserve with 64 KiB Wi-Fi headroom when the normal 80 KiB allowance cannot fit. Applies to I2S and PDM startup/reconfiguration.
  • Optional 240 MHz CPU setting on S3/C5, with board-aware save/boot validation. C3/C6 remain limited to 160 MHz; defaults remain 160 MHz.
  • Clearer hardware guide: separate ESP32 boards, microphones and accessories; recommend SPH0645LM4H for I2S and identify IM73D122 as Best quality by its specified microphone SNR. Add contributor-reported Adafruit PDM / MP34DT01 alternatives and their wiring labels. PDM remains experimental.
  • Remove the unused old Web UI screenshot and superseded versioned firmware copies from the current tree. Current board images and legacy OTA recovery routes are retained.

Audio settings

  • Apply microphone and recommended values in one capture restart; restore audio/CPU settings on failure and save only on success. Recommendations are optional and never replace settings automatically on update or boot.
  • PDM recommendations start at 48 kHz, Gain 24, 512-sample packets and 160 MHz for software conversion. Check actual levels and clipping for the microphone and location. I2S Shift is unused in PDM mode.
  • When upgrading from the contributor's v15 PDM firmware, start with new Gain = old Gain × 2^(16 − old Shift). Example: Shift 12 / Gain 1.5 becomes Gain 24. Existing Gain settings are preserved.
  • Slow browser listeners disconnect without blocking RTSP. Other boards retain the 16 KiB browser queue. Memory checks retain producer-stack, allocation-overhead and contiguous-block requirements.

Validation

All four board builds, 48 regression tests and source/embedded browser checks pass. Final C6 I2S OTA retained all 32 checked settings and served the exact packaged UI. Concurrent 48 kHz browser audio and a 15-second RTSP/TCP reception passed without new capture, DMA, buffer or write errors. Physical PDM validation and long-running C5 PDM testing of this integrated firmware remain pending.