-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for the ESP32-S3 #2735
Comments
S2, S3 an C3 are not officially supported. |
Just for sake of completemess, the same applies for other new ESP32 variants like ESP32-C2, ESP32-C6, ESP32-H2. Not officially supported by WLED. https://www.espressif.com/en/products/socs You may find some helpful information in other issue reports related to new SoC hardware: Some differences compared to ESP32:
Espressif has a technical comparison availeable here: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/chip-series-comparison.html#related-documents |
@blazoncek @softhack007 thank you, I'll go ahead and order some ESP32 boards in the mean time to stay in the supported board set. Out of curiosity, is there documentation on what libraries are not supported or a rough estimate of how much work it would take to support these new boards? |
No, but you can make one. |
Update: Actually I just ordered an ESP32-S3, because it seems to be the only one of the new models with a realistic chance to run SoundReactive with many LEDs. And it's a cool device, with new (vector) instructions that might speed up signal processing a lot. However compiling a working binary for ESP32-S3 will probably become a "long march"... will post updates in case there are news. |
Imho the most important part is to do the changed Gpios first. After we had done this in Tasmota all other changes where not that complicated. RMT channels are less for the new MCUs! LittleFS is running stable in Tasmota on all variants. We use heavily.
|
Anyone interested may try https://github.com/blazoncek/WLED/tree/esp32-s2 EDIT: use PIO ESP32 core 5.1.1 |
I use this in my platformio_override.ini. Select environment [esp32s3]
;; generic definitions for all ESP32-S3 boards
build_flags = -g
-DESP32
-DARDUINO_ARCH_ESP32
-DARDUINO_ARCH_ESP32S3
-DCONFIG_IDF_TARGET_ESP32S3
-D CONFIG_ASYNC_TCP_USE_WDT=0
-D CONFIG_LITTLEFS_FOR_IDF_3_2
-D WLED_WATCHDOG_TIMEOUT=0
-DCO
lib_deps =
${env.lib_deps}
;; currently we need the latest NeoPixelBus dev version, because it contains important bugfixes for -S3
https://github.com/Makuna/NeoPixelBus.git#master @ 2.7.0
https://github.com/pbolduc/AsyncTCP.git @ 1.2.0 [env:esp32s3dev_8MB]
;; "standard" ESP32-S3 development board, with 8MB FLASH, no PSRAM
board = esp32-s3-devkitc-1
framework = arduino
platform = [email protected]
platform_packages = platformio/[email protected]
upload_speed = 921600
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=ESP32S3 #-D WLED_DISABLE_BLYNK #-D WLED_DISABLE_BROWNOUT_DET
-D ARDUINO_USB_MODE=1 -D ARDUINO_USB_CDC_ON_BOOT=0 -D ARDUINO_USB_MSC_ON_BOOT=0
-D LEDPIN=4
-D STATUSLED=39
-D BTNPIN=-1
-D RLYPIN=-1
-D IRPIN=-1
-D HW_PIN_SDA=40
-D HW_PIN_SCL=41
;; for audioreactive usermod
-D USERMOD_AUDIOREACTIVE
-D UM_AUDIOREACTIVE_USE_NEW_FFT
-D AUDIOPIN=-1
-D I2S_SDPIN=16
-D I2S_CKPIN=17
-D I2S_WSPIN=47
-D ES7243_SDAPIN=8
-D ES7243_SCLPIN=18
lib_deps = ${esp32s3.lib_deps}
;; for audioreactive usermod
https://github.com/kosme/arduinoFFT#develop @ 1.9.2
board_build.partitions = tools/WLED_ESP32_8MB.csv
; board_build.flash_mode = dio
board_build.flash_mode = qio
board_build.f_flash = 80000000L
; board_build.f_flash = 120000000L
monitor_filters = esp32_exception_decoder
Edit: added pin definitions that don't conflict with other GPIO, at least on my board. |
If you want something to play with, this is an experimental build of https://github.com/blazoncek/WLED/tree/esp32-s2 for ESP32-S3 with 8MB FLASH:
Files:
Edit1: included fix for editing files using '/edit' URL. Build 2209172 |
Sometimes it may be necessary to update boot partition table as well. (At offset 0x8000) |
@blazoncek good point, did not think of that 👍 Is it the "partitions.bin" that I find in the .pio build folder? btw, my boot log starts like this. Not sure what these extra "load" messages and "SHA-256 comparison failed" means ... ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x9 (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x43c
load:0x403c9700,len:0xbec
load:0x403cc700,len:0x2a3c
SHA-256 comparison failed:
Calculated: dcde8d8a4817d9bf5d5d69a7247667264e4e10ac7493514868b61f5aa6146539
Expected: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Attempting to boot anyway...
entry 0x403c98d8
---WLED 0.14.0-bl0 2209172 INIT---
esp32 v4.4.1-472-gc9140caf8c
arduino-esp32 v2.0.4
CPU: ESP32-S3 rev.0, 2 core(s), 240MHz.
FLASH: 8MB, Mode 2 (DIO), speed 80MHz. |
PS: the "file editing bug" is also described here: me-no-dev/ESPAsyncWebServer#1210 |
Yes. |
As of today, the best approach for -S3 is still to build & upload your own firmware yourself in platformio. Pre-build .bin files are not working everywhere. Make sure you don't flash the standard "ESP32 V4 bootloader" from the WLED release page. It will not run, as the -S3 has a different instruction set. You need a special bootloader for -S3. Build & Upload in platformio will take care of that. |
To all users of the S3: Are there any major issues with the S3? |
Well, it depends. All new MCUs (-S3/-S2/-C3) are still bleeding edge experimental with WLED. From technical perspective, the -S3 might be a good choice (compared to -S2 or -C3) as its performance (speed) is similar to "classic ESP32". Also it does support PDM and I2S microphones, while -C3 and -S2 lack PDM support. Personally I have one -S3 board without PSRAM, and it works ok for me. But I know others have -S3 boards where WLED would not even boot up. Similar stories exist for -S2/-C3. I can recall a few "limitations" with the new MCUs (not only for -S3), maybe there are more:
As always, it's your call to see if that can be done. Maybe build a prototype, then test it to death. Then decide if what you have is good enough or not. Start small (one unit, do not order hundreds of PCBs at once, unless you don't care about the money), and be prepared that you might find that -S3 will not be good enough for what you want to achieve. The backup plan could be some "classic ESP32" like the pico-D4 (dual core). |
Next time, please, use WLED forum or Discord for help and support questions. |
WEMOS - LOLIN S3 PRO: >>>>> NO I2S <<<<<< NEVER BUY WEMOS! |
Talking about this one: https://www.wemos.cc/en/latest/s3/s3_pro.html ?
Strange ... the -S3 has two I2S units, the only thing that's not possible is I2S-ADC for analog mics or analog line-in. Memory modes are a nightmare on -S3, and firmware for one specific mode will not run on other boards that require a different mode. |
@softhack007: that is the most frustrating part, I know they áre in but not routed to the outside. One can indeed create some ‘pseudo-I2S out’ in fw but I have enough other challenges to spend my time on. |
Dammit! Just got a "Arduino Nano ESP32" with a ESP32-S3 thinking any ESP32 chip would work... any plans to support this in the future? I foresee this becoming a really popular chip/pitfall. Well such is life... i'l go bash my head against a wall then... |
The S3 is supported as far as WLED code goes. You may need to fiddle with flashing process, but that's all. @Fuxy22 As for I2S, it has 2, but Espressif decided to change API and it is incompatible with NeoPixelBus (as of this writing), so WLED can only use 4 RMT channels for LED output. Audio works though, kind of. |
Those ovoeride ini. And how to flash for esp32 s3 16 8mb |
@CYber-Dinium github is for tracking issues, please use the forum or discord for support questions. |
Is your feature request related to a problem? Please describe.
No problem. :)
Describe the solution you'd like
I have multiple ESP32 S3 boards and would like to install WLED onto them. How hard would it be to configure the build for the S3?
Describe alternatives you've considered
I cloned the codebase and read through the existing configuration. I saw the config for the C3, but saw no config for the S3. I considered trying to add a config for the S3, but my knowledge in configuring the build parameters for this project is meager.
Additional context
I'm using the Adafruit QT Py ESP32 S3 board.
I'm happy to provide more context, just let me know. Thank you to all of the contributors for this amazing project!
The text was updated successfully, but these errors were encountered: