ESP32 S3 Box3

This thread should become a collection of helpful configurations and tips for the newer ESP32-S3-Box 3, the successor of the ESP32-S3-Box.

The new Box3 comes also with some additional components, like a Sensor-Box (Radar, for Presence-Detection, IR Controller, Temperature and Humidity Sensor and a Baterry (charger)…
I hope, that we will figure out, how to use these components in HA … :slight_smile:

The Display Backlight is no longer connected to GPIO 45 as it is for the S3-Box.
The Backlight for the S3-Box3 is connected to GPIO47

The “Reset”-Pin remains the same, as well as the cs and dc pin (as far as I could get).

  - platform: ledc
    pin: GPIO47
    id: lcd_backlight_pin

  - platform: monochromatic
    output: lcd_backlight_pin
    id: lcd_backlight
    name: "LCD Backlight"
    restore_mode: ALWAYS_ON

is working - I am still trying to get the display itself showing something - but right now, this might just be a small issue with my text-configuration ^^

The i2c configuration is:

  sda: GPIO41
  scl: GPIO40

With this, you should at least get the Temperature- and Humidity Sensor, which is an AHT-30, unfortunately, this sensor seems not to be supported by ESPHome, yet.

Yet, I need to see if the IR emitter / receiver and the Radar-Sensor can also be made available… (which are also using GPIO40 & 41) based on the schematics

– RADAR (MS58-3909S68U4 (?)) IO41 / IO40
– IR Receiver (IRM-H638T) IO38
– IR Transmiter IO39


thanks mine arrived yesterday trying to get my head round it atm also have the older S3

Mine arrived today. Could someone kindly please share their esphome config?



right now, there’s not much to share :frowning:
The device is barely working… I got the Backround LED from the Display to work… the Display itself not…
The Temp. & Humidity Sensor from the SENSOR-Dock is not working, probably, because the used AHT-30 sensor isn’t yet implemented in the code (it is only showing “unknown” in HA)…

I haven’t yet tried the other components … but here you’ll find my current config:

This Display config work with BOX3
The problème is the RESET PIN

- platform: ili9xxx
model: s3box
cs_pin: GPIO5
dc_pin: GPIO4
#reset_pin: GPIO48

1 Like

Thanks :slight_smile:
Another issue I do have - it seems that the compiled program is already too big…

Compiling .pioenvs/esp32-s3-box-3/src/main.cpp.o
Linking .pioenvs/esp32-s3-box-3/firmware.elf
RAM:   [==        ]  20.3% (used 66548 bytes from 327680 bytes)
Flash: [==========]  101.8% (used 1868869 bytes from 1835008 bytes)
Error: The program size (1868869 bytes) is greater than maximum allowed (1835008 bytes)
*** [checkprogsize] Explicit exit, status 1
========================= [FAILED] Took 20.66 seconds =========================

it might be, that it is due to the background image I am using here… and that I am using too many “informational” sensors, like Wifi-Information, Uptime, Internal Temperature etc.

Update: Maybe, I just found the reason in an issue from last year…


If you’re using BLE proxies with arduino and having this issue, try to switch to esp-idf framework.

And yes - with ESP-IDF Framework, it seems to work much better, but I still can’t use everything I’ve added… ^^

Thanks for sharing. Support for this thing doesn’t look too good for now.

I am having some trouble flashing it. When connecting:
CleanShot 2023-11-12 at 11.11.37

I get:

CleanShot 2023-11-12 at 11.10.02

What Am I missing?

can you share your config?

It’s practically your config:

edit: Works now.

Just flashed the demo app using the esplaunchpad and that does work.

ok, that’s interesting, that it’s telling that the platform does not match the detected device… :thinking:

I don’t know - maybe, you should remove the homeassistant entities which I’ve used for the status of my charging station… I guess, you don’t need them…?

Never mind, my entire esphome setup was broken. I reinstalled the addon and now it all seems to be working.

That was a first in all the years I have been using esphome.

1 Like

Anyone knows how to setup speaker and mic?


you can find the schematics of the box 3 here:

the pdf is for revision 1.1 - and your board is showing version 1.0 - but I think, that it should basically be the same and on the pinout nothing should have changed.

although, it really depends on what you want to do, you can try to setup this (which is copied from a config for the Box (the older one)

  - source: github://pr#4793
    components: [ tt21100 ]
  - source: github://pr#4861
    components: [ es8311 ]
#  - source: github://rpatel3001/esphome@es7210
#    components: [ es7210 ]
#  - source: github://pr#5230

# mutually exclusive with media_player
#  - platform: i2s_audio
#    id: ext_speaker
#    dac_type: external
#    i2s_dout_pin: GPIO15
#    mode: mono

# currently only available with platform 'arduino'
#  - platform: i2s_audio
#    name: Media Player
#    id: ext_speaker
#    dac_type: external
#    i2s_dout_pin: GPIO15
#    mute_pin:
#      number: GPIO46
#      inverted: true

#  address: 0x40

#  - platform: i2s_audio
#    id: ext_mic
#    adc_type: external
#    pdm: false
#    i2s_din_pin: GPIO16
#    bits_per_sample: 16bit

I haven’t tested this on the Box nor on the Box-3, since I am using the ESP-IDF Framework and the media_player is currently only working for the Arduino Platform, afaik…

In my opinion: Just give the devs the time to create firmwares / components and so on for the box-3 …

I’m too impatient, I know that. Thank you very much for the schematics and the yaml :+1:

Did someone already tried to use this for the voice commands integration? How can this be accomplished?

The display works, my configuration:

  clk_pin: GPIO7
  mosi_pin: GPIO6

  - platform: gpio
    pin: GPIO48
    name: LCD Reset
    id: id_LCD_Reset

  - platform: ili9xxx
    model: S3BOX
    dc_pin: GPIO4
    cs_pin: GPIO5
    #auto_clear_enabled: false
    lambda: |-
      it.print(20, 20, id(fntSml), TextAlign::TOP_LEFT, "Hello World!");

  - file:
      type: gfonts
      family: "Roboto"
    id: fntSml
    size: 14
1 Like

yes, the display works without the reset pin configured.
I already updated my gist accordingly.

yet, I did not get the touch screen to work with the config from the older Box… still need to figure out, what changed there.

The voice satellite improvements will require more advanced hardware and we’re aiming for the ESP32 S3 Box 3.

i2c scanning

# Results from i2c bus scan:
# Found i2c device at address 0x18
# Found i2c device at address 0x40  
# Found i2c device at address 0x5D  ->  Touch GT911 Controller
# Found i2c device at address 0x68  

Framewark espressif:

ESPHome components (working with errors):


  - source:
      type: local
      path: my_components
    components: [gt911]

  id: i2c_bus_intern
  sda: GPIO08
  scl: GPIO18
  scan: true
#  scan: false
#  frequency: 400kHz

  - platform: gt911
    id: gt911_touchscreen
    interrupt_pin: GPIO36
      - logger.log:
          format: Touch at (%d, %d)
          args: [touch.x, touch.y]
1 Like