Home Assistant
Hardware- 6 Devlogs
- 5 Total hours
Chip alive on WiFi, PSRAM detected 8 MB, pin maps correct (mic GPIO 6, speaker GPIO 16) — but the wake-word engine never produced log lines after channel/bit/log-level/diagnostic-YAML sweeps, including a stripped-down bare-mic build at DEBUG verbosity on a fresh breadboard. Conclusion: the INMP441 itself is the open suspect (likely loose L/R pin or faulty chip), not the firmware. After the rewiring + BOOT/RESET, the chip came back on WiFi but the API server refused to bind = safe mode. Pending: hard power-cycle, USB reflash of the bare-mic YAML, fresh INMP441 if still silent.
Wired-up 4D Systems PCB carried an ESP32-S3-N16R8 module under the shield, but YAML board manifest was wrong (4d_systems…). Switched board: to esp32-s3-devkitc-1, added psram: octal at root level (not under esp32:), and after a ProBook reboot the chip flashed cleanly and joined home WiFi at -26 dBm. After rebuilding one component at a time, the firmware now prints Microphone: Pin: 6, Speaker: Pin: 16, PSRAM: 8192 KB — wiring matches the original plan exactly. A long series of 2026.6.4 schema changes had to be patched: bits_per_sample: 32bit (with units), media_player: i2s_audio became speaker: (with dac_type: external, no name:, buffer_duration: 100ms), micro_wake_word swapped from github://shorthand to bare - model: okay_nabu, and voice_assistant accepted noise_suppression_level: 1 and auto_gain: 0dBFSinstead of booleans.Status. Chip alive on WiFi, OTA updates working, all components loaded, audio in/out wired correctly. Open issue: speaking “Okay Nabu” produces no wake-word detection — and there’s no audio-level sensor in States — so the I2S mic path isn’t producing samples yet. Untested fixes for next session: dc_offset_correction: yes in the mic block, flipping channel: right to rule out polarity, and verifying 3.3V at INMP441 VDD with a meter. Gemini pipeline itself can be tested independently through HA’s Assist mic to confirm the AI side works.
Phase 3 — Standing Up the “Brain” (Home Assistant OS on the ProBook)Hardest, most setback-heavy phase. Target: HAOS bare-metal on a salvaged HP ProBook 6560b (2011). Setback: balenaEtcher crashed on macOS Catalina 10.15.8 — used Terminal’s dd instead. Setback: 2GB USB stick too small; swapped in 31.5GB SIMMAX. Setback: Ubuntu 26.04 too new — froze at “Generating APT cache,” ACPI errors, black screen. Setback: Lubuntu 26.04 — same kernel/hardware mismatch. Setback: no WiFi drivers in the live session. Breakthrough: moved the ProBook to wired Ethernet at the router — Lubuntu went online, downloaded haos_generic-x86-64-18.0.img.xz. dd’d it to /dev/sda. Result: Brain is alive.Voice-satellite bring-up. Installed the official ESPHome add-on. Plugged the 4D Systems GEN4-ESP32 (chip label ESP32S3-R8N16) into the ProBook’s USB. “Plug into HA server” → “No serial ports found.” Two stacked causes: (a) USB cable was charge-only 4-wire — swapped to data-capable; (b) add-on had no USB pass-through — fixed via Settings → Add-ons → ESPHome → Configuration → Options → Edit in YAML → usb: true → Stop → Start. Log confirmed “Found serial port: /dev/ttyACM0.“Wiring: MAX98357A on GPIO 7/15/16 with VIN=5V; INMP441 on GPIO 4/5/6 with VDD=3V3, L/R grounded. YAML: two I2S buses (i2s_amp, i2s_mic), media_player, microphone, micro_wake_word, voice_assistant for the Gemini pipeline.First compile/flash: ESPHome 2026.6.4. ESP-IDF toolchain ~100 MB, ~12 min total. Bootloader preamble clean up to entry 0x403c8914, then no app log lines. RGB LED flickered cyan once, then solid red; ~15 sec later rst:0xc (RTC_SW_8914) — app called its own reset. Heap-starved init.Tried (all the same hang): esp-idf vs. arduino framework, octal/quad/disabled PSRAM, ProBook USB vs. external 5V USB-C, stripped WiFi+API+OTA-only config, BOOT+RESET into download mode + clean re-flash. Power ruled out. BOOT+RESET cleanly entered boot:0x2 (DOWNLOAD(USB/UART0)) — chip and host acceptance are healthy.Root cause. Compile log: HARDWARE: ESP32S3 240MHz, 320KB RAM, 4MB Flash. Despite the 16MB badge, actual module has 4MB flash, 320KB RAM, no PSRAM — even minimum WiFi+API exceeds that. Voice examples assume ≥8MB PSRAM. Decision: order ESP32-S3-DevKitC-1-N16R8 (16MB flash + 8MB octal PSRAM, dual Type-C, $4–10, 3-pack). 4D Systems parked as backup. Wiring stands; future swap is pull/push + change board: in YAML. Brain untouched, satellite in transit.Phase 3 setback ledger: ESPHome dashboard blank → patience, hard refresh. Charge-only USB cable → data-capable. Add-on no USB passthrough → added usb: true, restart. App-level hang on every config → hardware incompatibility (320KB RAM, no PSRAM), replaced with N16R8. Power-supply suspicion → ruled out. Silent software reset mid-init → heap budget exhausted, real fix is the new board.
Wired the components according to the diagram, pretty simple. After this I will put some code on the ESP so it will be used as a voice satellite.
=== ESP32-S3-N16R8 audio build — wiring log ===
GPIO MAP
DEVICE WIRES
MAX98357A (amp)
INMP441 (mic)
— Phase 0 — Concept & Parts Decisions