esp32 platformio cleanup and improvements

* backported "legacy V3" environments for esp32
* added esp32_compat (OTA compatibility with upstream 0.14 and 0.15)
* cleanup of default environments
* commented out some dangerous default environments (avoids confusion)
This commit is contained in:
Frank
2025-11-24 18:42:09 +01:00
parent 00dcb32fb7
commit 926c3a14fa

View File

@@ -73,22 +73,23 @@ default_envs =
; wemos_shield_esp32_16MB_SPM1423_XL
; wemos_shield_esp32_16MB_LineIn_M
;;
esp32_4MB_V4_S ;; experimental; HUB75 supported
esp32_4MB_V4_HUB75_forum ;; experimental; HUB75 supported (forum pinout)
esp32_16MB_V4_S ;; experimental - optimized for speed; HUB75 supported
esp32_16MB_V4_M ;; experimental; HUB75 supported
; esp32_16MB_V4_M_debug ;; experimental
; esp32_pico_4MB_V4_S ;; experimental - may work better in case you experience wifi connectivity problems
;;
esp32_4MB_PSRAM_S ;; WROVER experimental; HUB75 supported
esp32dev_compat ;; legacy
esp32_pico_4MB_V4_S ;; PICO D4 board
esp32_4MB_V4_S ;; esp32 4MB - HUB75 supported
esp32_4MB_V4_HUB75_forum ;; esp32 4MB - HUB75 supported (forum pinout)
esp32_4MB_M_eth ;; esp32 4MB with ethernet support
; esp32_4MB_PSRAM_REV3_S ;; WROVER-E experimental, optimized for WROVER-E with "revision3" chip
esp32_4MB_PSRAM_S ;; esp32 WROVER with PSRAM; HUB75 supported
esp32_16MB_V4_S ;; esp32 16MB - HUB75 supported, optimized for speed
esp32_16MB_V4_M ;; esp32 16MB - HUB75 supported
esp32_16MB_V4_M_debug ;; esp32 16MB - for out-of-the-box debugging
;;
esp32S3_4MB_S ;; for HD-WF2 (HUB75 supported)
esp32S3_8MB_S ;; experimental, optimized for speed, HUB75 supported
esp32S3_8MB_M ;; HUB75 supported
;; esp32S3_8MB_M ;; HUB75 supported
esp32S3_4MB_PSRAM_S ;; for lolin s3 mini, S3 zero, S3 super mini - optimized for speed (no HUB75 support)
esp32S3_4MB_PSRAM_M ;; for lolin s3 mini, S3 zero, S3 super mini (no HUB75 support)
esp32S3_8MB_PSRAM_M ;; experiemental; HUB75 supported
esp32S3_8MB_PSRAM_M ;; for S3 with 8MB flash, HUB75 supported
esp32S3_16MB_PSRAM_M_HUB75 ;; for S3 with 16MB flash, HUB75 supported (MOONHUB HUB75 adapter board)
esp32S3_WROOM-2_M ;; for S3 WROOM-2; HUB75 supported
;;
@@ -326,7 +327,30 @@ platform_packages_compat =
platformio/tool-esptoolpy #@ ~1.30000.0
;; old V3 platform for esp32. Not used any more, just kept for reference
[esp32_legacy]
platform = espressif32@3.5.0
platform_packages = framework-arduinoespressif32 @ https://github.com/Aircoookie/arduino-esp32.git#1.0.6.4
build_flags = -g
-DARDUINO_ARCH_ESP32
-D CONFIG_ASYNC_TCP_USE_WDT=0
-D CONFIG_ASYNC_TCP_TASK_STACK_SIZE=9472 ;; WLEDMM increase stack by 1.25Kb, as audioreactive needs bigger SETTINGS_STACK_BUF_SIZE
-D CONFIG_ASYNC_TCP_STACK_SIZE=9472
-D LOROL_LITTLEFS ;; use LITTLEFS library by lorol in ESP32 core 1.x.x instead of built-in in 2.x.x
-DCONFIG_LITTLEFS_FOR_IDF_3_2 -DLFS_THREADSAFE
lib_deps =
esp32async/AsyncTCP @ 3.4.7
; https://github.com/lorol/LITTLEFS.git
https://github.com/softhack007/LITTLEFS-threadsafe.git#master ;; WLEDMM specific: patched version of lorol LittleFS with improved thread safety
makuna/NeoPixelBus @ 2.7.5
;; makuna/NeoPixelBus @ 2.7.9 ;; experimental
${env.lib_deps}
default_partitions = tools/WLED_ESP32_4MB_1MB_FS.csv ;; WLED standard for 4MB flash: 1.4MB firmware, 1MB filesystem
board_build.f_flash = 80000000L
board_build.flash_mode = dout ;; avoid dio/quot/qio - these are broken in arduino-esp32 1.0.6.x
;; standard platform for esp32
[esp32]
platform = ${esp32_idf_V4.platform} ;; default = tasmota (= default from esp32_idf_V4)
platform_packages = ${esp32_idf_V4.platform_packages}
@@ -596,65 +620,79 @@ build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp8266} -D LEDPIN=1 -D WLED_DISABLE_INFRARED
lib_deps = ${esp8266.lib_deps}
;; alias for lazy users
[env:esp32dev]
board = esp32dev
platform = ${esp32.platform}
platform_packages = ${esp32.platform_packages}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32 #-D WLED_DISABLE_BROWNOUT_DET
lib_deps = ${esp32.lib_deps}
monitor_filters = esp32_exception_decoder
board_build.partitions = ${esp32.default_partitions}
extends = env:esp32dev_V4_dio80
[env:esp32dev_qio80]
;; legacy build for OTA compatibility with upstream 0.15.x, slow but safe
[env:esp32dev_compat]
board = esp32dev
platform = ${esp32.platform}
platform_packages = ${esp32.platform_packages}
platform = ${esp32_legacy.platform}
platform_packages = ${esp32_legacy.platform_packages}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32_qio80 #-D WLED_DISABLE_BROWNOUT_DET
lib_deps = ${esp32.lib_deps}
build_flags = ${common.build_flags} ${esp32_legacy.build_flags} -D WLED_RELEASE_NAME=ESP32_compat #-D WLED_DISABLE_BROWNOUT_DET
lib_deps = ${esp32_legacy.lib_deps}
board_build.partitions = ${esp32_legacy.default_partitions}
monitor_filters = esp32_exception_decoder
board_build.partitions = ${esp32.default_partitions}
;; RAM: [== ] 23.2% (used 75944 bytes from 327680 bytes)
;; Flash: [========= ] 88.5% (used 1391917 bytes from 1572864 bytes)
;; legacy build for OTA compatibility with upstream 0.15.x, faster due to qio mode
[env:esp32dev_qio80_compat]
board = esp32dev
platform = ${esp32_legacy.platform}
platform_packages = ${esp32_legacy.platform_packages}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32_legacy.build_flags} -D WLED_RELEASE_NAME=ESP32_qio80_compat #-D WLED_DISABLE_BROWNOUT_DET
lib_deps = ${esp32_legacy.lib_deps}
board_build.partitions = ${esp32_legacy.default_partitions}
board_build.f_flash = 80000000L
board_build.flash_mode = qio
monitor_filters = esp32_exception_decoder
[env:esp32dev_V4_dio80]
;; experimental ESP32 env using ESP-IDF V4.4.x
board = esp32dev
platform = ${esp32_idf_V4.platform}
platform_packages = ${esp32_idf_V4.platform_packages}
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=ESP32_V4_qio80 #-D WLED_DISABLE_BROWNOUT_DET
build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=ESP32_V4_dio80 #-D WLED_DISABLE_BROWNOUT_DET
lib_deps = ${esp32_idf_V4.lib_deps}
monitor_filters = esp32_exception_decoder
board_build.partitions = ${esp32_idf_V4.default_partitions}
board_build.f_flash = 80000000L
board_build.flash_mode = dio
;; alias name for env:esp32_4MB_M_eth; improves compatibility with old platformio_override.ini entries
[env:esp32_eth]
extends = env:esp32_4MB_M_eth
;; legacy build for OTA compatibility with upstream 0.15.x
;; --> use [env:esp32_4MB_M_eth] (4MB) or [env:esp32_16MB_M_eth]
[env:esp32_eth_compat]
board = esp32-poe
platform = ${esp32.platform}
platform_packages = ${esp32.platform_packages}
platform = ${esp32_legacy.platform}
platform_packages = ${esp32_legacy.platform_packages}
upload_speed = 921600
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags_esp32} -D WLED_RELEASE_NAME=ESP32_Ethernet -D RLYPIN=-1 -D WLED_USE_ETHERNET -D BTNPIN=-1
build_flags = ${common.build_flags} ${esp32_legacy.build_flags} -D WLED_RELEASE_NAME=ESP32_Ethernet_compat -D RLYPIN=-1 -D WLED_USE_ETHERNET -D BTNPIN=-1
-D WLED_DISABLE_ESPNOW ;; ESP-NOW requires wifi, may crash with ethernet only
lib_deps = ${esp32.lib_deps}
board_build.partitions = ${esp32.default_partitions}
lib_deps = ${esp32_legacy.lib_deps}
board_build.partitions = ${esp32_legacy.default_partitions}
[env:esp32s2_saola]
board = esp32-s2-saola-1
platform = https://github.com/tasmota/platform-espressif32/releases/download/v2.0.2.2/platform-tasmota-espressif32-2.0.2.zip
platform_packages =
framework = arduino
board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv
board_build.flash_mode = qio
upload_speed = 460800
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32s2.build_flags} #-D WLED_RELEASE_NAME=S2_saola
;-DLOLIN_WIFI_FIX ;; try this in case Wifi does not work
-DARDUINO_USB_CDC_ON_BOOT=1
lib_deps = ${esp32s2.lib_deps}
;; WLEDMM: use WLEDMM build environments
;;[env:esp32s2_saola]
;;board = esp32-s2-saola-1
;;platform = https://github.com/tasmota/platform-espressif32/releases/download/v2.0.2.2/platform-tasmota-espressif32-2.0.2.zip
;;platform_packages =
;;framework = arduino
;;board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv
;;board_build.flash_mode = qio
;;upload_speed = 460800
;;build_unflags = ${common.build_unflags}
;;build_flags = ${common.build_flags} ${esp32s2.build_flags} #-D WLED_RELEASE_NAME=S2_saola
;; ;-DLOLIN_WIFI_FIX ;; try this in case Wifi does not work
;; -DARDUINO_USB_CDC_ON_BOOT=1
;; lib_deps = ${esp32s2.lib_deps}
;; WLEDMM: use WLEDMM build environments
;; [env:esp32_wrover]
@@ -692,59 +730,60 @@ board_build.flash_mode = dio ;; some boards do not boot with the faster "qio" mo
; RAM: [== ] 21.2% (used 69312 bytes from 327680 bytes)
; Flash: [======== ] 78.1% (used 1228472 bytes from 1572864 bytes)
[env:esp32s3dev_8MB]
;; WLEDMM: use WLEDMM build environments
;; [env:esp32s3dev_8MB]
;; ESP32-S3-DevKitC-1 development board, with 8MB FLASH, no PSRAM (flash_mode: qio)
board = esp32-s3-devkitc-1
platform = ${esp32s3.platform}
platform_packages = ${esp32s3.platform_packages}
upload_speed = 921600 ; or 460800
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=ESP32-S3_8MB
-D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0
-D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip
;-D ARDUINO_USB_CDC_ON_BOOT=1 ;; -D ARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
;-D WLED_DEBUG
lib_deps = ${esp32s3.lib_deps}
${esp32.AR_lib_deps}
board_build.partitions = ${esp32.large_partitions}
board_build.f_flash = 80000000L
board_build.flash_mode = qio
; board_build.flash_mode = dio ;; try this if you have problems at startup
monitor_filters = esp32_exception_decoder
;; board = esp32-s3-devkitc-1
;; platform = ${esp32s3.platform}
;; platform_packages = ${esp32s3.platform_packages}
;; upload_speed = 921600 ; or 460800
;; build_unflags = ${common.build_unflags}
;; build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=ESP32-S3_8MB
;; -D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0
;; -D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip
;; ;-D ARDUINO_USB_CDC_ON_BOOT=1 ;; -D ARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
;; ;-D WLED_DEBUG
;; lib_deps = ${esp32s3.lib_deps}
;; ${esp32.AR_lib_deps}
;; board_build.partitions = ${esp32.large_partitions}
;; board_build.f_flash = 80000000L
;; board_build.flash_mode = qio
;; ; board_build.flash_mode = dio ;; try this if you have problems at startup
;; monitor_filters = esp32_exception_decoder
[env:esp32s3dev_8MB_PSRAM_opi]
;; [env:esp32s3dev_8MB_PSRAM_opi]
;; ESP32-S3 development board, with 8MB FLASH and >= 8MB PSRAM (memory_type: qio_opi)
board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support
board_build.arduino.memory_type = qio_opi ;; use with PSRAM: 8MB or 16MB
platform = ${esp32s3.platform}
platform_packages = ${esp32s3.platform_packages}
upload_speed = 921600
build_unflags = ${common.build_unflags}
build_flags = ${common.build_flags} ${esp32s3.build_flags}
-D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0
;-D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip
-D ARDUINO_USB_CDC_ON_BOOT=1 -D ARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
; -D WLED_RELEASE_NAME=ESP32-S3_PSRAM
-D WLED_USE_PSRAM -DBOARD_HAS_PSRAM ; tells WLED that PSRAM shall be used
-D WLED_USE_PSRAM_JSON -DALL_JSON_TO_PSRAM ; WLEDMM --> force all JSON stuff into PSRAM; gives more free heap
lib_deps = ${esp32s3.lib_deps}
${esp32.AR_lib_deps}
board_build.partitions = ${esp32.large_partitions}
board_build.f_flash = 80000000L
board_build.flash_mode = qio
monitor_filters = esp32_exception_decoder
;; board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support
;; board_build.arduino.memory_type = qio_opi ;; use with PSRAM: 8MB or 16MB
;; platform = ${esp32s3.platform}
;; platform_packages = ${esp32s3.platform_packages}
;; upload_speed = 921600
;; build_unflags = ${common.build_unflags}
;; build_flags = ${common.build_flags} ${esp32s3.build_flags}
;; -D CONFIG_LITTLEFS_FOR_IDF_3_2 -D WLED_WATCHDOG_TIMEOUT=0
;; ;-D ARDUINO_USB_CDC_ON_BOOT=0 ;; -D ARDUINO_USB_MODE=1 ;; for boards with serial-to-USB chip
;; -D ARDUINO_USB_CDC_ON_BOOT=1 -D ARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB")
;; ; -D WLED_RELEASE_NAME=ESP32-S3_PSRAM
;; -D WLED_USE_PSRAM -DBOARD_HAS_PSRAM ; tells WLED that PSRAM shall be used
;; -D WLED_USE_PSRAM_JSON -DALL_JSON_TO_PSRAM ; WLEDMM --> force all JSON stuff into PSRAM; gives more free heap
;; lib_deps = ${esp32s3.lib_deps}
;; ${esp32.AR_lib_deps}
;; board_build.partitions = ${esp32.large_partitions}
;; board_build.f_flash = 80000000L
;; board_build.flash_mode = qio
;; monitor_filters = esp32_exception_decoder
[env:esp32s3dev_16MB_PSRAM_opi]
extends = env:esp32s3dev_8MB_PSRAM_opi
board_build.partitions = tools/WLED_ESP32_16MB.csv
board_upload.flash_size = 16MB
;; [env:esp32s3dev_16MB_PSRAM_opi]
;; extends = env:esp32s3dev_8MB_PSRAM_opi
;; board_build.partitions = tools/WLED_ESP32_16MB.csv
;; board_upload.flash_size = 16MB
[env:esp32s3dev_8MB_PSRAM_qspi]
;; [env:esp32s3dev_8MB_PSRAM_qspi]
;; ESP32-TinyS3 development board, with 8MB FLASH and PSRAM (memory_type: qio_qspi)
extends = env:esp32s3dev_8MB_PSRAM_opi
;board = um_tinys3 ; -> needs workaround from https://github.com/Aircoookie/WLED/pull/2905#issuecomment-1328049860
board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support
board_build.arduino.memory_type = qio_qspi ;; use with PSRAM: 2MB or 4MB
;; extends = env:esp32s3dev_8MB_PSRAM_opi
;; ;board = um_tinys3 ; -> needs workaround from https://github.com/Aircoookie/WLED/pull/2905#issuecomment-1328049860
;; board = esp32-s3-devkitc-1 ;; generic dev board; the next line adds PSRAM support
;; board_build.arduino.memory_type = qio_qspi ;; use with PSRAM: 2MB or 4MB
[env:esp8285_4CH_MagicHome]
board = esp8285
@@ -844,27 +883,26 @@ lib_deps = ${esp32s2.lib_deps}
# custom board configurations
# ------------------------------------------------------------------------------
[env:esp32c3dev_2MB]
;; for ESP32-C3 boards with 2MB flash (instead of 4MB).
;; this board need a specific partition file. OTA not possible.
extends = esp32c3
platform = ${esp32c3.platform}
platform_packages = ${esp32c3.platform_packages}
board = esp32-c3-devkitm-1
build_flags = ${common.build_flags} ${esp32c3.build_flags} #-D WLED_RELEASE_NAME=ESP32-C3
-D WLED_WATCHDOG_TIMEOUT=0
-D WLED_DISABLE_OTA
; -DARDUINO_USB_CDC_ON_BOOT=1 ;; for virtual CDC USB
-DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip
build_unflags = ${common.build_unflags}
upload_speed = 115200
lib_deps = ${esp32c3.lib_deps}
board_build.partitions = tools/WLED_ESP32_2MB_noOTA.csv
board_build.flash_mode = dio
board_upload.flash_size = 2MB
board_upload.maximum_size = 2097152
; RAM: [== ] 20.6% (used 67496 bytes from 327680 bytes)
; Flash: [======== ] 77.9% (used 1224652 bytes from 1572864 bytes)
;; WLEDMM: use [env:esp32c3dev_2MB_M] (WLEDMM build environment)
;; [env:esp32c3dev_2MB]
;; ;; for ESP32-C3 boards with 2MB flash (instead of 4MB).
;; ;; this board need a specific partition file. OTA not possible.
;; extends = esp32c3
;; platform = ${esp32c3.platform}
;; platform_packages = ${esp32c3.platform_packages}
;; board = esp32-c3-devkitm-1
;; build_flags = ${common.build_flags} ${esp32c3.build_flags} #-D WLED_RELEASE_NAME=ESP32-C3
;; -D WLED_WATCHDOG_TIMEOUT=0
;; -D WLED_DISABLE_OTA
;; ; -DARDUINO_USB_CDC_ON_BOOT=1 ;; for virtual CDC USB
;; -DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip
;; build_unflags = ${common.build_unflags}
;; upload_speed = 115200
;; lib_deps = ${esp32c3.lib_deps}
;; board_build.partitions = tools/WLED_ESP32_2MB_noOTA.csv
;; board_build.flash_mode = dio
;; board_upload.flash_size = 2MB
;; board_upload.maximum_size = 2097152
;WLEDMM: see below
; [env:wemos_shield_esp32]