ESP32 S3 DevKitC-1 N16R8 - using PSRAM - howto

Yes, I already tried that and it doesn’t seem to make a difference

Did the log I pasted make any sense,?

The logs seem to stop at the entry point. Is that what you would expect

yes, it looks normal from what i can see, it should go on further and show the component setup, including wifi,

I think it is continually rebooting after that point, which is what is what is perhaps causing the log screen to crash

So people in the ESP32 Platformio community also seem to be struggling with getting the N32R8V to work

They too had problems with this device entering a boot loop

One post suggested this platformio.ini configuration works:

platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
board_upload.flash_size = 16MB
board_build.partitions = default_16MB.csv
build_flags = 
    -DBOARD_HAS_PSRAM 
    -mfix-esp32-psram-cache-issue
board_build.arduino.memory_type = opi_opi

They said the “memory_type = opi_opi” was the crucial element

I have tried to recrate this for ESPHome but the flash types don’t allow opi_opi

Here is the original post: ESP32-S3-DevKitC-1-N32R8V configuration assistance - Development Platforms - PlatformIO Community

Any ideas?

The issue seems to have been reported more than a year ago on GitHub: ESP32-S3-WROOM-2 reboot loop after flash · Issue #4149 · esphome/issues · GitHub

For me I had success with the following setting (warning - this is just copy and pasted what i found in the net):

esphome:
  name: ${dev_name}
  friendly_name: ${dev_name}
  comment: AI-S3
  platformio_options:
    board_build.flash_mode: dio

esp32:
  board: lolin_s3
  flash_size: 16MB
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_ESP32_S3_BOX_BOARD: "y"
  
psram:
  mode: octal
  speed: 80MHz


...

light:
  - platform: status_led
    # this is the green LED
    id: led43
    pin:
      number: GPIO43
      inverted: true
  - platform: binary
    output: light_output
    id: led_blue
    name: "Onboard LED blue"    
  - platform: esp32_rmt_led_strip
    rgb_order: GRB
    pin: GPIO48
    num_leds: 1
    rmt_channel: 0
    chipset: ws2812

output:
  - id: light_output
    # this is the blue LED
    platform: gpio
    pin:
      number: GPIO44
      inverted: true

might be this helps someone - might be someone has improvements?

1 Like

i recently bought the " ESP32 S3 UNO N16R8 ESP32 S3 WROOM1 ". Not much available on this board but this post seems clossest…
I have the board basicly working (onboard RGB flashing) with arduino IDE as an ESP32S3 dev module.
Should the code above also be working on this board?

Happy to see that this thread is evolving and serving the purpose initially intended :slight_smile:

W.r.t. the specific board, keeping in mind that I’m not an expert, but in general, the board definitions determine how the pin-out is specified etc. So, if the pinout of this uno-board matches one of the known ones, it should be usable. Otherwise it might be that pin references do not work (or not all of them work).

At the moment, the platformio site only lists one esp32 ‘UNO’ but that doesnt appear to be an S3 one, so you could simply try the above codes, and see if it behaves as you expect it to…

Has anyone gotten the esp32-s3-devkitc-1 N16R8 Rev 0.2 board working? I’ve tried all of the configurations above in their exact formats. The closest I could get was using framework type esp-idf but the device never showed as online in esphome. If I try using arduino for the framework type I keep getting a core 1 panic’ed followed by a core register dump.

Log Output
[10:47:55]Rebooting...
[10:47:55]�ESP-ROM:esp32s3-20210327
[10:47:55]Build:Mar 27 2021
[10:47:55]rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
[10:47:55]Saved PC:0x4209d78e
[10:47:55]SPIWP:0xee
[10:47:55]mode:DIO, clock div:1
[10:47:55]load:0x3fce3808,len:0x39c
[10:47:55]load:0x403c9700,len:0x9bc
[10:47:55]load:0x403cc700,len:0x28dc
[10:47:55]entry 0x403c98c0
[10:48:06]Guru Meditation Error: Core  1 panic'ed (Unhandled debug exception). 
[10:48:06]Debug exception reason: Stack canary watchpoint triggered (loopTask) 
[10:48:06]Core  1 register dump:
[10:48:06]PC      : 0x40380397  PS      : 0x00060036  A0      : 0x8037eda8  A1      : 0x3fce1060  
[10:48:06]A2      : 0x3fc967a0  A3      : 0xb33fffff  A4      : 0x0000cdcd  A5      : 0x00060023  
[10:48:06]A6      : 0x00060023  A7      : 0x0000abab  A8      : 0xb33fffff  A9      : 0xffffffff  
[10:48:06]A10     : 0x00000000  A11     : 0x3fc966e0  A12     : 0x7db80000  A13     : 0x27be0000  
[10:48:06]A14     : 0x02c967a0  A15     : 0x00ffffff  SAR     : 0x0000000e  EXCCAUSE: 0x00000001  
[10:48:06]EXCVADDR: 0x00000000  LBEG    : 0x400556d5  LEND    : 0x400556e5  LCOUNT  : 0xffffffe9  
[10:48:06]
[10:48:06]
[10:48:06]Backtrace:0x40380394:0x3fce10600x4037eda5:0x3fce10a0 0x4037d308:0x3fce10d0 0x4037d2fe:0xa5a5a5a5  |<-CORRUPTED
[10:48:06]
[10:48:06]
[10:48:06]
[10:48:06]
[10:48:06]ELF file SHA256: 0000000000000000

This output repeats indefinitely.

This is the board I’m using https://www.aliexpress.us/item/3256806080061048.html - specifically the “N16R8” variant.

Config
esphome:
  name: some-device
  friendly_name: Some Device
  platformio_options:
    board_build.arduino.memory_type: qio_opi
    board_upload.maximum_ram_size: 524288

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  flash_size: 16MB
  partitions: "default_16MB.csv"
  framework:
    type: arduino

psram:
  mode: octal
  speed: 80MHz

I’ve also made sure to clean my build files in between attempts to avoid cross contamination.

Attempt with esp-idf framework type

This output also repeats indefinitely

Log Output
[11:43:33]�e����i� ESP-ROM:esp32s3-20210327
[11:43:33]Build:Mar 27 2021
[11:43:33]rst:0x7 (TG0WDT_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
[11:43:33]Saved PC:0x400454d5
[11:43:33]SPIWP:0xee
[11:43:33]mode:QIO, clock div:1
[11:43:33]load:0x3fce3808,len:0x1658
[11:43:33]ets_loader.c 78 
[11:43:33]ESP-ROM:esp32s3-20210327
[11:43:33]Build:Mar 27 2021
[11:43:33]rst:0x10 (RTCWDT_RTC_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
[11:43:33]SPIWP:0xee
[11:43:33]mode:QIO, clock div:1
[11:43:33]load:0x3fce3808,len:0x1658
[11:43:33]ets_loader.c 78
Config
esphome:
  name: some-device
  friendly_name: Some Device

esp32:
  board: esp32-s3-devkitc-1
  variant: esp32s3
  framework:
    type: esp-idf
    version: recommended
    sdkconfig_options:
      CONFIG_ESP32_S3_BOX_BOARD: "y"

psram:
  mode: octal
  speed: 80MHz

To be honest, not sure what ‘rev’ mine is, but did you also try the config from the start post? As the board seems awfully similar (other than a different color).

My other question would be, are you sure the board is not faulty? When I can’t get ESPHome to work, I typically try uploading some arduino code examples for the given board/sensor (and use the config options for the boards in the arduino software) to see if I can get that to work.

Other than that, I’m afraid I can’t help you…sorry…

I appreciate the quick response - that was the first one I tried. Just tried again and similar core panic log output.

That was my final fall back - I will try using arduino code examples to verify. Thanks!

Edit - I discovered the issue was I’m trying to connect a display to my esp32s3 and it was causing this issue. When I remove the code to initialize the display everything runs as expected. So either there is some compatibility issue with this display and the board or I’m missing something altogether. I’m using the 2.4in display from here aliexpress.us/item/3256805987125685.html

1 Like

Just stumbled across this thread while trying to find out about PSRAM, following a failed attempt to upgrade my current LED display on an ESP device that I built some time ago.
I’m currently running a Wemos D1 Mini Pro with external antennae, due to the device living outdoors and needing the extra WiFi range. This uses an ESP8266 and a small Waveshare 0.96" LCD ST7735S Controller.
I purchased a Waveshare 2.4" LCD with ILI9341, after checking this display was compatible with ESPHome.
Compiling in ESPHome went fine after updating the code for the new display, however the Device started showing as offline, with no API output. Commenting out the code of the display and reflashing brought the device back online again, so this lead me to realise that the ILI9341 requires a board with PSRAM, and is not well suited to an ESP8266.

Looks like I need a new, more powerful board, so either an ESP32 board with external WiFi antenna and PSRAM, or one with just PSRAM like the example linked in the first post here, and some soldering required for the antenna connection.

@bsell93 I’m keen to hear whether you manage to make progress with your particular display and board :crossed_fingers:

Hey @Scoff - seems we are on a similar path. This thread may be helpful to you Work in progress! esphome thermostat - #18 by GreyLinux

From what I can see the ILI9341 works with esp32 dev board like this https://www.amazon.com/dp/B08D5ZD528

I’ve got one of these amazon.com/gp/product/B0B1M9S9V6 on order to verify that.

I’ve not been able to get my esp32-s3 to work with my ST7735 display unfortunately. It’s unfortunate because the esp32s3 seems like a much more capable board - I don’t have the knowledge to know if they can work together and if so how.

From what I can see the ST77xx displays require two SPI interfaces for the display and the touchscreen to work. The basic esp32 devices unfortunately only have one. So in my case I was able to get a esp32 d1 mini to properly render content on the ST7735, but I wasn’t able to utilize the touchscreen capabilities. But the esp32s3 has multiple options for SPI interfaces, but unfortunately I can’t get past a RAM overflow issue to get the display to even initialize and display.

Edit: I have had success using the above linked display and board combination - touch and display functionality works as expected. The config from the thread I linked was the basis of that success.

1 Like

Thanks @bsell93 those links were very useful!

I’ve given it a try with one of my generic no name ESP32 Devkit v1 boards, which doesn’t have any PSRAM, and it does work OK with my display, providing I don’t try to put too much on the screen, as I get warnings about allocating display buffer.
I’ll see what the WiFi signal strength is like and if necessary, do some soldering for an external antenna.

1 Like