ESP32 S3 Box3

i’m just testing now, and yes it does get stuck. however the touchscreen still responds and if i say the wakeword and a command it then goes back to normal, without a reboot. I will investigate further :slight_smile:

if you remove the following from on_tts_end

    - lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
    - script.execute: draw_display
    - delay: 10s

and make a new trigger called on_end: and add the code removed from on_tts_end: so it looks like the following (you can copy and paste the full block below)

    - lambda: id(voice_assistant_phase) = ${voice_assist_idle_phase_id};
    - script.execute: draw_display
    - delay: 10s

that has fixed it for me.
i am not running stock firmware so it may be different in your case, but it should work :+1:

Try using the Glances add-on to see what’s consuming so much memory. Looks like your baseline is about 50% which is high. My guess is other add-ons. If you see which ones are using the most, you can stop them prior to a clean rebuild. A clean rebuild with micro_wake_word needs about 2GB of free memory so this probably explains your issue as it looks like you are borderline.

Thanks for the info, good to know.
Yes I use several add-ons but thought I’m safe at 50%.
Never expected that ESPHome will need another 2GB for compilations…
Should have known before and buy 8GB device instead.
Don’t know if there is a chance to set RAM limit for the compiler somehow.

If my understanding of compilers is still correct, they need what they need. If they are limited to less ram then they are limited in what they can compile.

I have the exact same config
I did a clean build file install , i update to latest version redo the clean file and install i cold start the device.
I can’t get the new text but i got the new date and time format they are great, (i would love to have a long version without year like : wednesday 5th march)

Bob, can you add that to Feature: Continued conversation with text on screen for ESP32-S3-Box-3 · Issue #174 · esphome/firmware · GitHub so we can gather some consensus on some good formats.

It works for me. Can you copy your code that you are using for the new text here?

However, one thing I am seeing when I do a Validate in ESPHome is that the package being used is old and does not contain the actual yaml in github. I suspect something is caching the package somewhere. I’ve tried restarting esphome, restarting core, but to no avail.

  name: "esp32-s3-box-3"
  friendly_name: S3 Box 3
  starting_up: "Démarrage..."
  wake_word_prompt: "Dis \\\"Okay Nabu\\\""
  listening_prompt: "Que puis-je faire ?"
  error_prompt: "Oups, Désolé"

  # esphome.voice-assistant: github://esphome/firmware/wake-word-voice-assistant/esp32-s3-box-3.yaml@main
  esphome.voice-assistant: github://jaymunro/esphome_firmware/wake-word-voice-assistant/esp32-s3-box-3.yaml@continued-conversation
  esphome.voice-assistant-sensor: github://jaymunro/esphome_firmware/esp32-box-docks/box3-sensor-for-voice-assistant.yaml@sensor_dock

  name: ${name}
  name_add_mac_suffix: false
  friendly_name: ${friendly_name}

    key: *****************

  ssid: !secret wifi_ssid
  password: !secret wifi_password

yep that was the fix.
I did a validate and then an install and it finally worked

PR #173 (Continued-conversation for esp32-s3-box-3 by jaymunro · Pull Request #173 · esphome/firmware · GitHub) is ready and awaiting review now.

First of all, thanks for your amazing work!

I have a couple ideas that I think would be nice to have.

  1. An option to make the image either smaller or nonexistent when not assisting (waiting for the wakeword) so the date and tim can be bigger.

  2. An option for it to play a tone when the wakeword is recognized. I’m not always looking at it when I say “hey, Jarvis” so that would cool to have.


Really great work!
For my usecase I would like to have screen off all the time until wake-word is recognized, then it should turn on. Current setting LCD Backlight turns screen to be always off.

Create an automation so that when the “assist in progress” sensor activates, it turns the screen on. And have another automation to turn the screen off when “assist in progress” deactivates.

1 Like

Better yet, one Automation which does both using Trigger ID’s.

Try using this… Optional 2nd package to add radar and battery sensors to esp32-s3-box-3.yaml by jaymunro · Pull Request #165 · esphome/firmware · GitHub
It enables switches to turn off the display and mute the box when no-one is present using the radar

And this… Continued-conversation for esp32-s3-box-3 by jaymunro · Pull Request #173 · esphome/firmware · GitHub
It enables a small clock (with or without date) on the idle screen. And if you don’t want the default graphic there, add this to your yaml:

  idle_illustration_file: <url to a blank image>

you’ll need to find you own url, the default for reference is:


To add the two packages above use the following in your yaml:

  esphome.voice-assistant: github://jaymunro/esphome_firmware/wake-word-voice-assistant/esp32-s3-box-3.yaml@continued-conversation
  esphome.voice-assistant-sensor: github://jaymunro/esphome_firmware/esp32-box-docks/box3-sensor-for-voice-assistant.yaml@sensor_dock

Has anyone figured out how to mute or disable the on board speaker? I have response audio piping to a different speaker and dont need the on board one. I’ve tried setting the id to null but that didnt work. Unsure which pin i could map that isnt in use (ive read thats a way to do it with the m5stack atom echo) but if anyone has any suggestions or knows how to do it, that’d be great. TIA.

How did you make the response on box3 into another media player. I can’t figure it out.
Thank you

Put this in your voice_assistant section and it’ll pipe the response out to whichever entity_id you want.

    - homeassistant.service:
        service: media_player.play_media
          entity_id: media_player.the_kitchen
          media_content_id: !lambda 'return x;'
          media_content_type: music
          announce: "true"
1 Like