Chip Support and Storage Specs
Before choosing a board or porting a new one, settle three things: which chips the firmware supports, which audio and wake word path each chip uses, and which partition table matches your flash size. This page only records what the firmware source and the release manifest can prove. For electrical parameters of the chips, see the official Espressif datasheets.
1. Supported Chips
The counts below come from the v2.5.2 release manifest (154 board directories, 188 firmware variants). For the full list see Supported Boards.
| Chip | Board dirs | Firmware variants | Audio input engine | On-device wake word |
|---|---|---|---|---|
| ESP32-S3 | 114 | 126 | AfeAudioEngine | Wakenet model with AFE by default when PSRAM is present; MultiNet custom wake words optional |
| ESP32-P4 | 6 | 27 | AfeAudioEngine | Same as ESP32-S3 |
| ESP32-C3 | 10 | 10 | LiteAudioEngine | Wakenet model without AFE optional |
| ESP32-C6 | 10 | 10 | LiteAudioEngine | Same as ESP32-C3 |
| ESP32 | 6 | 7 | LiteAudioEngine | Wakenet model without AFE requires PSRAM |
| ESP32-S31 | 4 | 4 | AfeAudioEngine | Same as ESP32-S3, requires ESP-IDF 6.1 or later |
| ESP32-C5 | 4 | 4 | LiteAudioEngine | Same as ESP32-C3 |
Sources: upstream main/audio/README.md (engine to target chip mapping) and main/Kconfig.projbuild (the depends on conditions of WAKE_WORD_TYPE).
The two engines differ as follows:
AfeAudioEngine: uses one FD AFE instance shared by wake word detection and uplink speech processing; with audio processing enabled it provides acoustic echo cancellation (AEC) and VAD.LiteAudioEngine: outputs raw mono PCM directly, without AEC or VAD; the wake word (if configured) uses a standalone WakeNet.
2. PSRAM Requirements
- ESP32-S3 / P4 / S31: custom wake words (MultiNet), AFE wake words and AFE audio processing (
USE_AUDIO_PROCESSOR) all require PSRAM. - ESP32: without PSRAM the wake word is disabled by default, so a button or an external module must trigger a conversation, see ESP32 Budget Version.
- The LVGL memory pool of the display library also has two implementations, with and without PSRAM (
main/display/lvgl_psram_pool.h,lvgl_no_psram_pool.h). - For the extra settings of configurations such as N8R2 (8 MB flash, 2 MB PSRAM), see the Hardware Build Guide.
3. Partition Tables (v2)
The v2 partition tables add an assets partition next to the app partitions. It stores wake word models, fonts, emoji and chat backgrounds, see the Custom Assets Guide.
| File | App partitions | assets |
|---|---|---|
4m.csv | One factory (0x2F0000), no dual OTA partitions | 1 MB |
8m.csv | ota_0 / ota_1, 0x2F0000 each | 2 MB |
16m.csv | ota_0 / ota_1, 0x3F0000 each (about 4 MB) | 8 MB |
16m_c3.csv | ota_0 / ota_1, 0x3F0000 each (about 4 MB) | 4000K (limited by available mmap pages) |
32m.csv | ota_0 / ota_1, 4 MB each | 16 MB |
partitions/v1/ keeps the old layout (models live in a model partition and there is no assets partition).
4. Audio Parameters
- Most board
config.hfiles defineAUDIO_INPUT_SAMPLE_RATE 16000andAUDIO_OUTPUT_SAMPLE_RATE 24000; what goes into the encoder on the uplink is 16 kHz mono PCM. - The Opus frame length is 60 ms (
OPUS_FRAME_DURATION_MS). - The on-board microphone channels are declared as
M(single mic) orMR(single mic plus playback reference) by default. The declaration must match the interleaved PCM returned by the codec.
5. Development Environment
The firmware requires ESP-IDF v6.0.1 or later, with the release/v6.1 branch recommended; the v2.5.2 release matrix is built with ESP-IDF 6.1.0. For setup, see ESP-IDF Development Environment Setup.
Related Documents
- Firmware Code Tour: directory layout, state machine and board abstraction
- Custom Board Guide: adding a new board
- Supported Boards: all firmware variants
Sources: main/audio/README.md, main/Kconfig.projbuild and partitions/v2/ of 78/xiaozhi-esp32 v2.5.2.