Trouble Getting ESP32-S3 to Work with ESPHome Addon in Home Assistant

I’ve been using ESP8266 boards successfully with Home Assistant for a while now, and I have several nodes running without any issues. However, I recently tried to set up an ESP32-S3 board using the ESPHome Builder Addon on the same computer hosting Home Assistant, and I’m running into problems.

Here’s what I’ve done so far:

  • Plugged the ESP32-S3 board into the computer via USB.
  • Used the ESPHome setup wizard and selected ESP32-S3 as the board type.
  • Followed the same process that works perfectly for my ESP8266 boards.

Despite this, I can’t seem to get the ESP32-S3 to work. It doesn’t connect or show up as expected in Home Assistant. It might be a network / wifi-issue.

Has anyone else faced similar issues with the ESP32-S3? Could it be a driver issue, configuration problem, or something specific to this board? Any tips or troubleshooting advice would be greatly appreciated!

Thanks in advance for your help!

Plug it back in to USB and capture and post the logs. Post your yaml…

Log from ESP Home Builder after plugging it back with USB:

INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/esphome-s3.yaml...
INFO Starting log output from /dev/ttyACM1 with baud rate 115200
[16:25:57]ESP-ROM:esp32s3-20210327
[16:25:57]Build:Mar 27 2021
[16:25:57]rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
[16:25:57]Saved PC:0x40378d48
WARNING Decoded 0x40378d48: SysTickIsrHandler at /Users/ficeto/Desktop/ESP32/ESP32S2/esp-idf-public/components/freertos/port/port_systick.c:122
[16:25:57]SPIWP:0xee
[16:25:57]mode:DIO, clock div:1
[16:25:57]load:0x3fce3808,len:0x43c
[16:25:57]load:0x403c9700,len:0xbec
[16:25:57]load:0x403cc700,len:0x2a3c
[16:25:57]entry 0x403c98d8

And this is the log after re-installing the code:

INFO ESPHome 2025.2.2
INFO Reading configuration /config/esphome/esphome-s3.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing esphome-s3 (board: esp32-s3-devkitc-1; framework: arduino; platform: platformio/[email protected])
--------------------------------------------------------------------------------
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
 - toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 
 - toolchain-xtensa-esp32s3 @ 8.4.0+2021r2-patch5
Dependency Graph
|-- AsyncTCP-esphome @ 2.1.4
|-- WiFi @ 2.0.0
|-- FS @ 2.0.0
|-- Update @ 2.0.0
|-- ESPAsyncWebServer-esphome @ 3.2.2
|-- DNSServer @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- noise-c @ 0.1.6
RAM:   [=         ]  12.7% (used 41528 bytes from 327680 bytes)
Flash: [=====     ]  48.0% (used 881097 bytes from 1835008 bytes)
========================= [SUCCESS] Took 2.80 seconds =========================
INFO Successfully compiled program.
esptool.py v4.7.0
Serial port /dev/ttyACM1
Connecting....
Chip is ESP32-S3 (QFN56) (revision v0.2)
Features: WiFi, BLE, Embedded PSRAM 8MB (AP_3v3)
Crystal is 40MHz
MAC: f0:9e:9e:11:4d:fc
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 16MB
Flash will be erased from 0x00010000 to 0x000e7fff...
Flash will be erased from 0x00000000 to 0x00003fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Compressed 881488 bytes to 588162...
Wrote 881488 bytes (588162 compressed) at 0x00010000 in 14.0 seconds (effective 502.7 kbit/s)...
Hash of data verified.
Warning: Image file at 0x0 is protected with a hash checksum, so not changing the flash size setting. Use the --flash_size=keep option instead of --flash_size=16MB in order to remove this warning, or use the --dont-append-digest option for the elf2image command in order to generate an image file without a hash checksum
Compressed 15040 bytes to 10364...
Wrote 15040 bytes (10364 compressed) at 0x00000000 in 0.5 seconds (effective 254.5 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 144...
Wrote 3072 bytes (144 compressed) at 0x00008000 in 0.1 seconds (effective 440.6 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 610.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
INFO Successfully uploaded program.
INFO Starting log output from /dev/ttyACM1 with baud rate 115200

Normally with ESP8266 the device will run a start-up procedure and show WiFi connection etc. But not this one…

Parts of my YAML code:

esphome:
  name: esphome-s3
  friendly_name: ESPHome S3

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
#    version: 2.0.3
#    platform_version: 5.0.0

# Enable logging
logger:

post ALL of the YAML you are using. Start with a minimal YAML, whenever you have a basic failure. Also set log to VERY VERBOSE to help with debugging.

Sure - but not much details in the rest of the code. I usually make it as light-weighted as possible in the beginning and add sensors and logic when i know the node is spinning.

esphome:
  name: esphome-s3
  friendly_name: ESPHome S3 HumanPresence

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
#    version: 2.0.3
#    platform_version: 5.0.0

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "G1dBoNuF1kVBpy/xxxxxxxxxxxxxxx="

ota:
  - platform: esphome
    password: "e61e40463xxxxxxxxxxxxxx0652ba46"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-S3 Fallback Hotspot"
    password: "VdxxxxxxxxxxxxqyLIFy"

captive_portal:

# UART configuration for HLK-LD2420 using ESP32-S3 pins
#uart:
#  id: uart_bus
#  tx_pin: GPIO17
#  rx_pin: GPIO18
#  baud_rate: 115200
#  parity: NONE
#  stop_bits: 1

# Custom component for HLK-LD2420
#external_components:
#  - source: github://yebele/esphome-hlk-ld2420
#    components: [ hlk_ld2420 ]

# Sensor configuration
# Example configuration entry
#ld2410:

Can limited / no support for the N8R2 version be the reason for the trouble I experience? There is also an N16R8 version (differences in flash and RAM size). I have also tried to specify these values directly in the YAML config without success.

I too struggled initially to get my ESP32S3 working. I have the N16R8 variant, so adjust your psram accordingly. He’s where I ultimately ended up. I had to use ESP-IDF framework bc I need encryption on mqtt. But I did have it working with the Arduino framework initially.

esphome:
  name: cst-test-s3
  friendly_name:  CST TEST S3
  platformio_options:
    board_build.flash_mode: dio

psram:
  mode: octal
  speed: 80MHz
esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  flash_size: 16MB
  framework:
    type: esp-idf
    version: recommended
    sdkconfig_options:
      CONFIG_ESP32_S3_BOX_BOARD: "y"   

Also the usb port matters for logging. I want to say I had to initially flash the board with the right usb port, then I switched to the left one looking at both ports head on for logging and subsequent uploads.

1 Like

My yaml for esp32s3 n16r8 looks like this if it helps at all.

esphome:
  name: ${name}
  friendly_name: ${name}
  platformio_options:
    board_build.flash_mode: dio
 
esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: esp-idf
    version: 4.4.8
    platform_version: 5.4.0

    sdkconfig_options:
        CONFIG_ESP32_S3_BOX_BOARD: "y"
        CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM: "16"
        CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM: "512"
        CONFIG_TCPIP_RECVMBOX_SIZE: "512"
        CONFIG_TCP_SND_BUF_DEFAULT: "65535"
        CONFIG_TCP_WND_DEFAULT: "512000"
        CONFIG_TCP_RECVMBOX_SIZE: "512"

Not sure if the framework version is relevant or not.

1 Like