You are browsing as a guest. Sign up (or log in) to start making projects!

28igarcia

@28igarcia

Joined June 13th, 2026

  • 6Devlogs
  • 1Projects
  • 0Ships
  • 0Votes
Open comments for this post

1h 29m logged

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.

0
0
1
Open comments for this post

1h 20m logged

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.

0
0
1
Open comments for this post

1h 2m 49s logged

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.

0
0
1
Open comments for this post

18m logged

=== ESP32-S3-N16R8 audio build — wiring log ===

GPIO MAP

  • GPIO 7 -> I2S0 LRC (amp TX word select)
  • GPIO 15 -> I2S0 BCLK (amp TX bit clock)
  • GPIO 16 -> I2S0 DIN (amp TX data in)
  • GPIO 4 -> I2S1 WS (mic RX word select)
  • GPIO 5 -> I2S1 SCK (mic RX bit clock)
  • GPIO 6 -> I2S1 SD (mic RX data)

DEVICE WIRES
MAX98357A (amp)

  • LRC -> GPIO 7
  • BCLK -> GPIO 15
  • DIN -> GPIO 16
  • GND -> GND
  • VIN -> 5V

INMP441 (mic)

  • SD -> GPIO 6
  • VDD -> 3V3
  • GND -> GND
  • L/R -> GND (left channel)
  • WS -> GPIO 4
  • SCK -> GPIO 5
0
0
3
Open comments for this post

18m logged

— Phase 0 — Concept & Parts Decisions

  • Started: Raspberry Pi vs. ESP32 debate.
  • Explored a Raspberry Pi + ReSpeaker 2-Mic HAT as the voice satellite. Realized the HAT is Pi-only (40-pin header) and won’t work with an ESP32 — this ruled out the “Pi does everything” plan.
  • Landed on the cheaper, more local-first split: an old laptop as the always-on brain (free — already owned) + an ESP32-S3 as the voice satellite (~$4–15 in parts). ESP32-S3 was chosen over a plain ESP32/C3 specifically for its dual I2S channels and on-chip NPU for local wake-word detection.
  • Finalized parts list: ESP32-S3 N16R8 dev board, INMP441 I2S mic, MAX98357A I2S amp
    (Adafruit), small speaker, jumper wires/breadboard.
  • Setback: Amazon shipped the wrong board — a WROOM-32U instead of the ordered
    S3. Had to wait on a replacement before hardware work could start. (Kept the WROOM
    as a backup board — not wasted.)
  • AI brain decision: start on Gemini’s free tier, with Claude API earmarked as a future
    paid upgrade if tool-calling reliability becomes a bottleneck. Confirmed early that the AI
    model is just a swappable dropdown in Home Assistant’s Assist pipeline — no hardware
    dependency either way.
    — Phase 1 — Sourcing the Speaker Driver
  • Instead of buying a new speaker, salvaged a driver from a Bose SoundDock Twiddler
    (part 273488-004, ~4Ω) and wired it to the MAX98357A’s screw terminals — one of two
    available drivers from the dock.
  • Briefly investigated repurposing the camera from a VTech DX2 kids’ smartwatch for afuture vision feature. Dead end: the sensor is proprietary and hardwired directly to the watch’s chip with no standard interface — not worth extracting. Filed away 4K camera /ESP32-CAM / USB webcam as real alternatives if a vision feature happens later.
0
0
11

Followers

Loading…