ESP32 Audio Kit V2.2 A149 OR 3478 (Chip ID 2974) or can be used with ESP32 Squeezelite with the settings mentioned below.
Squeezelite firmware for ESP32
ESP32 Squeezelite is a firmware working with Logitech Media Server (LMS / picoreplayer). It is versatile in application and working on several ESP32 based boards. ESP32 Audio Kit board features tiny amplifier, headphone output, microphone, line-in, bluetooth, wifi, some pins, sd card reader, some GPIO pin headers. A few of the features can be used with Squeezelite. Unfortunately the board I found the most versatile, ESP32 Audio Kit, comes with several different revisions which differ in pin layout and audio chip. Lacking documentation ends in guessing what pin to be used and reading log files.
Luckily serial output is very verbose, squeezelite firmware features recovery mode with comfortable configuration web interface.
Another candy for Apple user is airplay! It works with lip sync on video playback aswell.
For the boards I received following configuration is working:
As soon as the device is flashed with Squeezelite (https://github.com/sle118/squeezelite-esp32/releases/tag/I2S-4MFlash.32.1023.master-cmake) go to the NVS Editor ( Credits -> Show NVS Editor – as described in https://github.com/sle118/squeezelite-esp32#readme) and fill in following parameters:
dac_config: model=ES8388,bck=27,ws=25,do=26,sda=33,scl=32,i2c=16 set_GPIO: 21=amp,22=green:0,39=jack:0
Click Commit and Reboot. If you attach the board, via Serial you will see useful debug information. A good way to verify the configuration aswell. See my log via serial:
[23:49:45][00:00:01.701349] output_init_embedded:70 init device: I2S [23:49:45][00:00:01.714046] equalizer_init:42 initializing equalizer [23:49:45][00:00:01.715687] output_init_common:433 supported rates: 192000 176400 96000 88200 48000 44100 32000 24000 22050 16000 12000 11025 8000 [23:49:45][00:00:01.727651] output_init_embedded:92 init I2S/SPDIF [23:49:45]I (3458) DAC core: DAC uses I2C port:0, sda:33, scl:32 [23:49:45]I (3468) DAC external: DAC on I2C @16 [23:49:45]I (3468) DAC external: Configuring MCLK on GPIO0 [23:49:45]I (3478) I2S: DMA Malloc info, datalen=blocksize=2048, dma_buf_count=12 [23:49:45]I (3478) I2S: APLL: Req RATE: 44100, real rate: 44099.988, BITS: 16, CLKM: 1, BCK_M: 8, MCLK: 11289597.000, SCLK: 1411199.625000, diva: 1, divb: 0 [23:49:45][00:00:01.772180] output_init_i2s:319 ES8388 DAC using I2S bck:27, ws:25, do:26, mute:-1:0 (res:0) [23:49:45][00:00:01.773712] output_init_i2s:339 Initializing I2S mode normal with rate: 44100, bits per sample: 16, buffer frames: 512, number of buffers: 12 [23:49:45][00:00:01.786345] output_init_i2s:358 setting amplifier GPIO 21 (active:1) [23:49:45][00:00:01.797807] output_thread_i2s:463 Output state is -1 [23:49:45][00:00:01.798207] output_visu_init:75 Initialize VISUEXPORT 512 16 bits samples [23:49:45][00:00:01.799427] output_thread_i2s:467 switching off amp GPIO 21 [23:49:45][00:00:01.810599] output_init_embedded:100 init completed. [23:49:45][00:00:01.822282] decode_init:153 init decode [23:49:45][00:00:01.822993] register_alac:547 using alac to decode alc [23:49:45][00:00:01.823831] register_helixaac:686 using helix-aac to decode aac [23:49:45][00:00:01.834928] register_vorbis:385 using vorbis to decode ogg [23:49:45][00:00:01.835840] register_opus:328 using opus to decode ops [23:49:45][00:00:01.846884] register_flac:332 using flac to decode ogf,flc [23:49:45][00:00:01.847789] register_pcm:468 using pcm to decode wav,aif,pcm [23:49:45][00:00:01.858821] register_mad:417 using mad to decode mp3 [23:49:45]I (3588) BTDM_INIT: BT controller compile version [4bc0a8e] [23:49:45]W (3588) BT_AV: BT Sink pin code is:  [23:49:45]I (3598) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
In another blog post I will give an update about the pin mapping for rotary encoder and SSD1322 based OLED display. Have fun and I hope this posting was helpful!