Hello community,
I’m (once again) at my wit’s end. I ordered an ESP32-S3N16R8 development board from AliExpress to experiment with the Micro-Wake-Word.
Unfortunately, I can’t get PSRAM to work.
I’ve already tried a big amount of combination of examples I found online, and when the lines `
psram:
mode: octal
speed: 80MHz
are added, after booting, only the green LED blinks fast, and the ESP32 seems to crash every half second.
Has anyone actually gotten PSRAM working on this exact board and could tell me the parameters/settings (Board: https://de.aliexpress.com/item/1005009488143006.html)?
How can I proceed? How can I find out if PSRAM is even present, or if the supplier lied to me?
Example of one of the last tested settings:
esphome:
name: teststation
friendly_name: TestStation
platformio_options:
build_flags: "-DBOARD_HAS_PSRAM"
# board_build.arduino.memory_type: qio_opi
# board_build.flash_mode: dio
# board_build.flash_mode: qio
# board_build.flash_mode: qout
# board_build.flash_mode: dout
esp32:
board: esp32-s3-devkitc-1 #esp32s3box # N16R8 esp32-s3-devkitc-1
flash_size: 16MB
variant: esp32s3
framework:
type: esp-idf
# sdkconfig_options:
# CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
# CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
# CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
# CONFIG_AUDIO_BOARD_CUSTOM: "y"
# CONFIG_ESP32S3_INSTRUCTION_CACHE_32KB: "y"
# CONFIG_ESP32_S3_BOX_BOARD: "y"
# Moves instructions and read only data from flash into PSRAM on boot.
# Both enabled allows instructions to execute while a flash operation is in progress without needing to be placed in IRAM.
# Considerably speeds up mWW at the cost of using more PSRAM.
# CONFIG_SPIRAM_RODATA: "y"
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS: "y"
# CONFIG_BT_ALLOCATION_FROM_SPIRAM_FIRST: "y"
# CONFIG_BT_BLE_DYNAMIC_ENV_MEMORY: "y"
# CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC: "y"
# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3: "y" # TLS1.3 support isn't enabled by default in IDF 5.1.5
psram:
mode: octal
speed: 80MHz
...
Log of the last version, which doesn’t crash constantly (but uses mode: quad and speed: 40MHz)
…and I can’t find any trace of PSRAM:
[03:37:58.092][I][app:185]: ESPHome version 2025.10.4 compiled on Nov 8 2025, 03:32:34
[03:37:58.102][C][wifi:679]: WiFi:
[03:37:58.120][C][wifi:458]: Local MAC: XX:XX:XX:XX:XX:XX
[03:37:58.127][C][wifi:465]: IP Address: 192.168.XXX.XXX
[03:37:58.154][C][wifi:469]: SSID: 'ABCDEFGHIJKLMNOP'[redacted]
[03:37:58.154][C][wifi:469]: BSSID: YY:YY:YY:YY:YY:YY[redacted]
[03:37:58.154][C][wifi:469]: Hostname: 'teststation'
[03:37:58.154][C][wifi:469]: Signal strength: -49 dB ▂▄▆█
[03:37:58.154][C][wifi:469]: Channel: 6
[03:37:58.154][C][wifi:469]: Subnet: 255.255.255.0
[03:37:58.154][C][wifi:469]: Gateway: 192.168.XXX.XXX
[03:37:58.154][C][wifi:469]: DNS1: 192.168.XXX.XXX
[03:37:58.154][C][wifi:469]: DNS2: 0.0.0.0
[03:37:58.155][C][logger:261]: Logger:
[03:37:58.155][C][logger:261]: Max Level: DEBUG
[03:37:58.155][C][logger:261]: Initial Level: DEBUG
[03:37:58.169][C][logger:267]: Log Baud Rate: 115200
[03:37:58.169][C][logger:267]: Hardware UART: USB_SERIAL_JTAG
[03:37:58.179][C][logger:274]: Task Log Buffer Size: 768
[03:37:58.201][C][esp32_rmt_led_strip:263]: ESP32 RMT LED Strip:
[03:37:58.201][C][esp32_rmt_led_strip:263]: Pin: 21
[03:37:58.214][C][esp32_rmt_led_strip:267]: RMT Symbols: 192
[03:37:58.227][C][esp32_rmt_led_strip:292]: RGB Order: GRB
[03:37:58.227][C][esp32_rmt_led_strip:292]: Max refresh rate: 15000
[03:37:58.227][C][esp32_rmt_led_strip:292]: Number of LEDs: 12
[03:37:58.235][C][template.select:064]: Template Select 'Wake word engine location'
[03:37:58.246][C][template.select:362]: Update Interval: 60.0s
[03:37:58.259][C][template.select:068]: Optimistic: YES
[03:37:58.259][C][template.select:068]: Initial Option: On device
[03:37:58.259][C][template.select:068]: Restore Value: YES
[03:37:58.302][C][light:088]: Light 'RGB'
[03:37:58.315][C][light:091]: Default Transition Length: 0.0s
[03:37:58.315][C][light:091]: Gamma Correct: 2.80
[03:37:58.330][C][template.switch:087]: Template Switch 'Use listen light'
[03:37:58.330][C][template.switch:087]: Restore Mode: restore defaults to ON
[03:37:58.341][C][template.switch:057]: Optimistic: YES
[03:37:58.354][C][template.switch:087]: Template Switch 'Use wake word'
[03:37:58.354][C][template.switch:087]: Restore Mode: restore defaults to ON
[03:37:58.368][C][template.switch:057]: Optimistic: YES
[03:37:58.378][C][template.switch:087]: Template Switch 'Mute'
[03:37:58.378][C][template.switch:087]: Restore Mode: restore defaults to OFF
[03:37:58.390][C][template.switch:057]: Optimistic: YES
[03:37:58.401][C][psram:016]: PSRAM:
[03:37:58.411][C][psram:019]: Available: NO
[03:37:58.436][C][i2s_audio.microphone:079]: Microphone:
[03:37:58.436][C][i2s_audio.microphone:079]: Pin: 15
[03:37:58.436][C][i2s_audio.microphone:079]: PDM: NO
[03:37:58.436][C][i2s_audio.microphone:079]: DC offset correction: NO
[03:37:58.482][D][sensor:131]: 'Heap Free': Sending state 231048.00000 B with 0 decimals of accuracy
[03:37:58.495][D][sensor:131]: 'Loop Time': Sending state 89.00000 ms with 0 decimals of accuracy
[03:37:58.510][D][sensor:131]: 'CPU Frequency': Sending state 160000000.00000 Hz with 0 decimals of accuracy
[03:37:58.521][D][sensor:131]: 'Heap Max Block': Sending state 163840.00000 B with 0 decimals of accuracy
[03:37:58.531][D][sensor:131]: 'Free PSRAM': Sending state 0.00000 B with 0 decimals of accuracy
[03:37:58.541][W][component:453]: debug took a long time for an operation (59 ms)
[03:37:58.552][W][component:456]: Components should block for at most 30 ms
[03:37:58.571][W][component:453]: debug took a long time for an operation (80 ms)
[03:37:58.583][W][component:456]: Components should block for at most 30 ms
[03:37:58.609][C][i2s_audio.speaker:074]: Speaker:
[03:37:58.609][C][i2s_audio.speaker:074]: Pin: 10
[03:37:58.609][C][i2s_audio.speaker:074]: Buffer duration: 100
[03:37:58.621][C][i2s_audio.speaker:088]: Communication format: std
[03:37:58.638][C][esphome.ota:093]: Over-The-Air updates:
[03:37:58.638][C][esphome.ota:093]: Address: teststation.local:3232
[03:37:58.638][C][esphome.ota:093]: Version: 2
[03:37:58.648][C][esphome.ota:100]: Password configured
[03:37:58.657][C][safe_mode:018]: Safe Mode:
[03:37:58.657][C][safe_mode:018]: Successful after: 60s
[03:37:58.657][C][safe_mode:018]: Invoke after: 10 attempts
[03:37:58.657][C][safe_mode:018]: Duration: 300s
[03:37:58.674][C][api:222]: Server:
[03:37:58.674][C][api:222]: Address: teststation.local:6053
[03:37:58.674][C][api:222]: Listen backlog: 4
[03:37:58.674][C][api:222]: Max connections: 8
[03:37:58.686][C][api:229]: Noise encryption: YES
[03:37:58.700][C][mdns:179]: mDNS:
[03:37:58.700][C][mdns:179]: Hostname: teststation
[03:37:58.711][C][micro_wake_word:064]: microWakeWord:
[03:37:58.720][C][micro_wake_word:065]: models:
[03:37:58.723][C][micro_wake_word:014]: - Wake Word: Hey Jarvis
[03:37:58.723][C][micro_wake_word:014]: Probability cutoff: 0.97
[03:37:58.723][C][micro_wake_word:014]: Sliding window size: 5
[03:37:58.763][C][debug:018]: Debug component:
[03:37:58.765][C][debug:015]: Free space on heap 'Heap Free'
[03:37:58.765][C][debug:015]: State Class: ''
[03:37:58.765][C][debug:015]: Unit of Measurement: 'B'
[03:37:58.765][C][debug:015]: Accuracy Decimals: 0
[03:37:58.784][C][debug:029]: Icon: 'mdi:counter'
[03:37:58.799][C][debug:015]: Largest free heap block 'Heap Max Block'
[03:37:58.799][C][debug:015]: State Class: ''
[03:37:58.799][C][debug:015]: Unit of Measurement: 'B'
[03:37:58.799][C][debug:015]: Accuracy Decimals: 0
[03:37:58.808][C][debug:029]: Icon: 'mdi:counter'
[03:37:58.821][C][debug:015]: CPU frequency 'CPU Frequency'
[03:37:58.821][C][debug:015]: State Class: ''
[03:37:58.821][C][debug:015]: Unit of Measurement: 'Hz'
[03:37:58.821][C][debug:015]: Accuracy Decimals: 0
[03:37:58.832][C][debug:029]: Icon: 'mdi:speedometer'
[03:37:58.837][D][debug:033]: ESPHome version 2025.10.4
[03:37:58.851][D][debug:037]: Free Heap Size: 225496 bytes
[03:37:58.862][D][debug:182]: Chip: Model=ESP32-S3, Features=2.4GHz WiFi, BLE, Cores=2, Revision=2
[03:37:58.872][D][debug:191]: CPU Frequency: 160 MHz
[03:37:58.884][D][debug:199]: Framework: ESP-IDF
[03:37:58.899][D][debug:206]: ESP-IDF Version: 5.4.2
[03:37:58.918][D][debug:211]: EFuse MAC: XX:XX:XX:XX:XX:XX
[03:37:58.924][D][debug:079]: Reset Reason: power-on event
[03:37:58.939][D][debug:107]: Wakeup Reason: undefined
[03:37:58.939][C][debug:112]: Partition table:
[03:37:58.939][C][debug:112]: Name Type Subtype Address Size
[03:37:58.950][C][debug:119]: otadata 1 0 0x00009000 0x00002000
[03:37:58.959][C][debug:119]: phy_init 1 1 0x0000B000 0x00001000
[03:37:58.972][C][debug:119]: app0 0 16 0x00010000 0x007C0000
[03:37:58.982][C][debug:119]: app1 0 17 0x007D0000 0x007C0000
[03:37:58.996][C][debug:119]: nvs 1 2 0x00F90000 0x0006D000
[03:38:03.486][D][sensor:131]: 'Heap Free': Sending state 232612.00000 B with 0 decimals of accuracy
[03:38:03.517][D][sensor:131]: 'Loop Time': Sending state 247.00000 ms with 0 decimals of accuracy
[03:38:03.562][D][sensor:131]: 'CPU Frequency': Sending state 160000000.00000 Hz with 0 decimals of accuracy
[03:38:03.562][D][sensor:131]: 'Heap Max Block': Sending state 159744.00000 B with 0 decimals of accuracy
[03:38:03.580][D][sensor:131]: 'Free PSRAM': Sending state 0.00000 B with 0 decimals of accuracy


