From e43fe6cd5221819369b0092350b6141f28238c74 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:01:48 +0100 Subject: [PATCH] move all C3 and S2 builds to tasmota platform * solved a few platformio.ini problems that lead to an unhealthy mix-up of espressif and tasmota platforms * re-enabled "full font" support for -C3 * re-enabled full ParticleFX support for -C3 --- platformio.ini | 109 ++++++++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 47 deletions(-) diff --git a/platformio.ini b/platformio.ini index ca191c06..1adfd429 100644 --- a/platformio.ini +++ b/platformio.ini @@ -328,7 +328,7 @@ platform_packages_compat = [esp32] -platform = ${esp32_idf_V4.platform} +platform = ${esp32_idf_V4.platform} ;; default = tasmota (= default from esp32_idf_V4) platform_packages = ${esp32_idf_V4.platform_packages} build_flags = ${esp32_idf_V4.build_flags} @@ -342,6 +342,7 @@ large_partitions = tools/WLED_ESP32_8MB.csv extreme_partitions = tools/WLED_ESP32_16MB_9MB_FS.csv lib_deps = ${esp32_idf_V4.lib_deps} +monitor_filters = esp32_exception_decoder ;; Compatibility with upstream --> you should prefer using ${common_mm.build_flags_S} and ${common_mm.lib_deps_S} AR_build_flags = ${common_mm.AR_build_flags} @@ -349,6 +350,10 @@ AR_lib_deps = ${common_mm.AR_lib_deps} ;; optimized version, 10% faster on ;; WLEDMM begin +;; tasmota platform - reduces firmaware size by ~280KB +platformTasmota = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.02/platform-espressif32.zip ;; Tasmota Arduino Core 2.0.9 with IPv6 support, based on IDF 4.4.4 +platform_packagesTasmota = + ;; ** For compiling with latest Frameworks (IDF4.4.x and arduino-esp32 v2.0.x) ** ;;; previous standard V4 platform platformV4_pre = espressif32@5.2.0 @@ -387,13 +392,16 @@ lib_depsV4 = [esp32_idf_V4] ;; please note that you can NOT update existing ESP32 installs with a "V4" build. Also updating by OTA will not work properly. ;; You need to completely erase your device (esptool erase_flash) first, then install the "V4" build from VSCode+platformio. +;; uses arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them) -;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them) +;; standard platform - RECOMMENDED for debugging! The tasmota platform has removed all kernel error reporting code ;; platform = espressif32@ ~6.3.2 ;; platform_packages = platformio/framework-arduinoespressif32 @ 3.20009.0 ;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them) -platform = https://github.com/tasmota/platform-espressif32/releases/download/2023.06.02/platform-espressif32.zip ;; Tasmota Arduino Core 2.0.9 with IPv6 support, based on IDF 4.4.4 -platform_packages = +;; Tasmota Arduino Core 2.0.9 with IPv6 support, based on IDF 4.4.4. Warning: all kernel error asserts removed +platform = ${esp32.platformTasmota} +platform_packages = ${esp32.platform_packagesTasmota} + build_unflags = ${common.build_unflags} build_flags = -g -Wshadow=compatible-local ;; emit warning in case a local variable "shadows" another local one @@ -418,12 +426,12 @@ lib_deps = ;; platform_packages = ;; toolchain-riscv32-esp @ 8.4.0+2021r2-patch5 ;; toolchain-xtensa-esp32s2 @ 8.4.0+2021r2-patch5 -;; standard platform -platform = espressif32@ ~6.3.2 -platform_packages = platformio/framework-arduinoespressif32 @ 3.20009.0 ;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them) -;; tasmota platform (optional) -;; platform = ${esp32_idf_V4.platform} -;; platform_packages = ${esp32_idf_V4.platform_packages} +;; standard espressif platform +;; platform = espressif32@ ~6.3.2 +;; platform_packages = platformio/framework-arduinoespressif32 @ 3.20009.0 ;; select arduino-esp32 v2.0.9 (arduino-esp32 2.0.10 thru 2.0.14 are buggy so avoid them) +;; inherit tasmota platform from esp32_idf_V4 +platform = ${esp32_idf_V4.platform} +platform_packages = ${esp32_idf_V4.platform_packages} board_build.flash_mode = dio ;; prevents build error: sdkconfig.h: No such file or directory build_flags = -g @@ -445,9 +453,11 @@ lib_deps = ;; makuna/NeoPixelBus @ 2.7.5 ;; standard makuna/NeoPixelBus @ 2.7.9 ;; experimental - reduces LED glitches on -S2 ${env.lib_deps} +monitor_filters = esp32_exception_decoder [esp32c3] ;; generic definitions for all ESP32-C3 boards +;; inherit tasmota platform from esp32_idf_V4 platform = ${esp32_idf_V4.platform} platform_packages = ${esp32_idf_V4.platform_packages} build_unflags = ${common.build_unflags} @@ -469,9 +479,11 @@ lib_deps = makuna/NeoPixelBus @ 2.7.5 ;; makuna/NeoPixelBus @ 2.7.9 ;; experimental ${env.lib_deps} +monitor_filters = esp32_exception_decoder [esp32s3] ;; generic definitions for all ESP32-S3 boards +;; inherit tasmota platform from esp32_idf_V4 platform = ${esp32_idf_V4.platform} platform_packages = ${esp32_idf_V4.platform_packages} build_unflags = ${common.build_unflags} @@ -494,6 +506,7 @@ lib_deps = makuna/NeoPixelBus @ 2.7.5 ;; makuna/NeoPixelBus @ 2.7.9 ;; experimental ${env.lib_deps} +monitor_filters = esp32_exception_decoder # ------------------------------------------------------------------------------ @@ -676,8 +689,8 @@ upload_speed = 460800 build_unflags = ${common.build_unflags} lib_deps = ${esp32c3.lib_deps} board_build.flash_mode = dio ;; some boards do not boot with the faster "qio" mode -; RAM: [== ] 22.5% (used 73740 bytes from 327680 bytes) -; Flash: [==========] 96.3% (used 1515336 bytes from 1572864 bytes) +; RAM: [== ] 21.2% (used 69312 bytes from 327680 bytes) +; Flash: [======== ] 78.1% (used 1228472 bytes from 1572864 bytes) [env:esp32s3dev_8MB] ;; ESP32-S3-DevKitC-1 development board, with 8MB FLASH, no PSRAM (flash_mode: qio) @@ -850,8 +863,8 @@ 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: [== ] 23.3% (used 76204 bytes from 327680 bytes) -; Flash: [==========] 95.2% (used 1497536 bytes from 1572864 bytes) +; RAM: [== ] 20.6% (used 67496 bytes from 327680 bytes) +; Flash: [======== ] 77.9% (used 1224652 bytes from 1572864 bytes) ;WLEDMM: see below ; [env:wemos_shield_esp32] @@ -2276,12 +2289,9 @@ lib_ignore = ;; to ewowi - i'll optimize this entry later, as a few things can be inherited for sure. To softhack: sure ;-) [env:esp32s2_tinyUF2_PSRAM_S] extends = esp32_4MB_V4_S_base -;;platform = ${esp32s2.platform} ;; using 5.2.0, due to massive connectivity problems on -S2 with 5.3.0 -;;platform_packages = ${esp32s2.platform_packages} - ;; tasmota platform needed, as we are over flash size limits for the standard platform -platform = ${esp32_idf_V4.platform} -platform_packages = ${esp32_idf_V4.platform_packages} +platform = ${esp32s2.platform} +platform_packages = ${esp32s2.platform_packages} board = adafruit_qtpy_esp32s2 board_build.partitions = tools/partitions-4MB_spiffs-tinyuf2.csv ;; this is needed for tinyUF2 bootloader! Filename has to end in "tinyuf2.csv" @@ -2332,19 +2342,19 @@ lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation OneWire ; not needed as we don't include USERMOD_DALLASTEMPERATURE monitor_filters = esp32_exception_decoder -; RAM: [== ] 17.9% (used 58548 bytes from 327680 bytes) -; Flash: [======== ] 82.0% (used 1182554 bytes from 1441792 bytes) +; RAM: [== ] 17.9% (used 58728 bytes from 327680 bytes) +; Flash: [======== ] 83.6% (used 1204774 bytes from 1441792 bytes) ;; MM environment for generic ESP32-S2, with PSRAM, 4MB flash (300kB filesystem to have more program space) ;; PINs assignments optimized for use with serg74 "mini shield" [env:esp32s2_PSRAM_M] extends = esp32_4MB_V4_M_base -;; standard platform -platform = ${esp32s2.platform} ;; using 5.2.0, due to massive connectivity problems on -S2 with 5.3.0 +;; default tasmota platform +platform = ${esp32s2.platform} platform_packages = ${esp32s2.platform_packages} -;; tasmota platform (optional) -;; platform = ${esp32_idf_V4.platform} -;; platform_packages = ${esp32_idf_V4.platform_packages} +;; standard espressif platform (optional) +;; platform = ${esp32.platformV4} +;; platform_packages = ${esp32.platformV4_packages} board = lolin_s2_mini board_build.partitions = ${esp32.extended_partitions} ;; 1.65MB firmware, 700KB filesystem (esptool erase_flash needed when changing from "standard WLED" partitions) @@ -2390,8 +2400,8 @@ lib_ignore = ${common_mm.HUB75_lib_ignore} ${common_mm.DMXin_lib_ignore} monitor_filters = esp32_exception_decoder -; RAM: [== ] 20.5% (used 67256 bytes from 327680 bytes) -; Flash: [========= ] 93.3% (used 1590266 bytes from 1703936 bytes) +; RAM: [== ] 18.2% (used 59640 bytes from 327680 bytes) +; Flash: [======== ] 80.3% (used 1368130 bytes from 1703936 bytes) [env:esp32s2_PSRAM_S] extends = env:esp32s2_PSRAM_M @@ -2410,21 +2420,20 @@ lib_deps = ${env:esp32s2_PSRAM_M.lib_deps} lib_ignore = ${env:esp32s2_PSRAM_M.lib_ignore} U8g2 ${common_mm.animartrix_lib_ignore} -; RAM: [== ] 20.4% (used 66792 bytes from 327680 bytes) -; Flash: [========= ] 94.8% (used 1490390 bytes from 1572864 bytes) - +; RAM: [== ] 18.1% (used 59176 bytes from 327680 bytes) +; Flash: [======== ] 81.0% (used 1273946 bytes from 1572864 bytes) # ------------------------------------------------------------------------------ # esp32-C3 environments # ------------------------------------------------------------------------------ -;; MM environment for generic ESP32-C3 -> 4MB flash, no PSRAM +;; MM environment for generic ESP32-C3 -> 4MB flash, qio mode, no PSRAM [env:esp32c3dev_4MB_M] extends = esp32_4MB_V4_S_base ;board_build.flash_mode = dout -platform = ${esp32.platformV4} -platform_packages = ${esp32.platformV4_packages} +platform = ${esp32c3.platform} +platform_packages = ${esp32c3.platform_packages} board_build.flash_mode = qio board = esp32-c3-devkitm-1 ;board_build.partitions = tools/WLED_ESP32_4MB_256KB_FS.csv ;; 1.8MB firmware, 256KB filesystem (esptool erase_flash needed when changing from "standard WLED" partitions) @@ -2441,7 +2450,7 @@ build_unflags = ${common.build_unflags} ;-D WLED_DEBUG_HOST='"192.168.x.x"' ;; to disable net print ${common_mm.animartrix_build_flags} ;; Tips our memory usage over the limit -DUSERMOD_ARTIFX ;; over the limit - -DWLED_ENABLE_FULL_FONTS ;; removing full unicode support saves 10KB of flash + ; -DWLED_ENABLE_FULL_FONTS ;; removing full unicode support saves 10KB of flash build_flags = ${common.build_flags} ${esp32c3.build_flags} ; -D WLED_DISABLE_OTA ;; OTA is not possible for boards with 2MB flash only (like some Ai-Thinker ESP32-C3-12F models) @@ -2457,7 +2466,7 @@ build_flags = ${common.build_flags} ${esp32c3.build_flags} -D WLEDMM_WIFI_POWERON_HACK -DLOLIN_WIFI_FIX ;; use this _only_ if your device is not able to make a WiFI connection! ;-D WLED_DISABLE_INFRARED ;; save flash space ;-D WLED_DISABLE_ALEXA ;; save flash space - -D WLEDMM_SAVE_FLASH + ;-D WLEDMM_SAVE_FLASH -D LEDPIN=8 ;; onboard neopixel 5x5 Matrix. Attach your own LEDs to GPIO 20 -D BTNPIN=9 ; -D STATUSLED=10 ;; onboard LED @@ -2465,7 +2474,7 @@ build_flags = ${common.build_flags} ${esp32c3.build_flags} ;-D HW_PIN_SDA=0 -D HW_PIN_SCL=1 ;; for I2C Qwiic connector -D SR_DMTYPE=1 -D I2S_SDPIN=5 -D I2S_WSPIN=6 -D I2S_CKPIN=4 -D MCLK_PIN=7 ; -D WLED_USE_MY_CONFIG - -D WLED_DISABLE_PARTICLESYSTEM1D ;; exceeds flash size limit + ;; -D WLED_DISABLE_PARTICLESYSTEM1D ;; exceeds flash size limit ;; -D WLED_DISABLE_PARTICLESYSTEM2D ;; exceeds flash size limit lib_deps = ${esp32c3.lib_deps} ${common_mm.lib_deps_S} ${common_mm.lib_deps_V4_M} lib_ignore = @@ -2473,8 +2482,9 @@ lib_ignore = OneWire ; not needed as we don't include USERMOD_DALLASTEMPERATURE U8g2 ; not needed as we don't include USERMOD_FOUR_LINE_DISPLAY ${common_mm.animartrix_lib_ignore} ;; Tips our memory usage over the limit -; RAM: [== ] 24.7% (used 81004 bytes from 327680 bytes) -; Flash: [==========] 99.2% (used 1559754 bytes from 1572864 bytes) +; RAM: [== ] 22.1% (used 72408 bytes from 327680 bytes) +; Flash: [======== ] 83.5% (used 1313420 bytes from 1572864 bytes) + ;; MM environment for ESP32-C3 "mini" and "super mini" -> flash mode "dio" instead of "qio" (see #101) [env:esp32c3mini_dio_4MB_M] extends = env:esp32c3dev_4MB_M @@ -2490,15 +2500,15 @@ build_flags = ${env:esp32c3dev_4MB_M.build_flags} -D WLED_RELEASE_NAME=esp32c3mini_dio_4MB_M -D WLED_DISABLE_BROWNOUT_DET ;; the board only has a 500mA LDO, better to disable brownout detection -D HW_PIN_SDA=0 -D HW_PIN_SCL=1 ;; avoid pin conflicts -; RAM: [== ] 24.7% (used 80828 bytes from 327680 bytes) -; Flash: [==========] 99.0% (used 1556768 bytes from 1572864 bytes) +; RAM: [== ] 22.0% (used 72240 bytes from 327680 bytes) +; Flash: [======== ] 83.4% (used 1311474 bytes from 1572864 bytes) [env:esp32c3dev_2MB_M] extends = env:esp32c3dev_4MB_M board = lolin_c3_mini ;;; replace WLED_RELEASE_NAME, disable CDC_ON_BOOT build_unflags = ${env:esp32c3dev_4MB_M.build_unflags} - -DWLED_ENABLE_FULL_FONTS ;; removing full unicode support saves 10KB of flash + ;; -DWLED_ENABLE_FULL_FONTS ;; removing full unicode support saves 10KB of flash -DARDUINO_USB_CDC_ON_BOOT=1 -D WLED_RELEASE_NAME=esp32c3dev_4MB_M @@ -2515,24 +2525,25 @@ build_flags = ${env:esp32c3dev_4MB_M.build_flags} -DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip -D WLED_RELEASE_NAME=esp32c3dev_2MB_M -D WLED_DISABLE_BROWNOUT_DET ;; the board only has a 500mA LDO, better to disable brownout detection - -D WLED_DISABLE_ADALIGHT ;; to disable serial protocols for boards with CDC USB (Serial RX will receive junk commands, unless its pulled down by resistor) + ; -D WLED_DISABLE_ADALIGHT ;; to disable serial protocols for boards with CDC USB (Serial RX will receive junk commands, unless its pulled down by resistor) -D HW_PIN_SDA=0 -D HW_PIN_SCL=1 ;; avoid pin conflicts - -D WLED_DISABLE_PARTICLESYSTEM1D ;; exceeds flash size limit + ;; -D WLED_DISABLE_PARTICLESYSTEM1D ;; exceeds flash size limit ;; -D WLED_DISABLE_PARTICLESYSTEM2D ;; exceeds flash size limit -; RAM: [== ] 24.1% (used 78948 bytes from 327680 bytes) -; Flash: [==========] 98.0% (used 1541914 bytes from 1572864 bytes) +; RAM: [== ] 21.5% (used 70296 bytes from 327680 bytes) +; Flash: [======== ] 82.5% (used 1297438 bytes from 1572864 bytes) ;; MM environment for "seeed xiao -C3" boards [env:seeed_esp32c3_4MB_S] extends = env:esp32c3dev_4MB_M board = seeed_xiao_esp32c3 -platform = ${esp32.platformV4_pre} ;; standard IDF 4.4.1 platform - seems to work better for seeed xiao board +platform = ${esp32.platformV4_pre} ;; older espressif ESP-IDF v4.4.1 platform - seems to work better for seeed xiao board platform_packages = ${esp32.platformV4_packages_pre} board_build.flash_mode = dio upload_speed = 460800 build_unflags = ${env:esp32c3dev_4MB_M.build_unflags} -D WLED_ENABLE_HUB75MATRIX ;; not enough pins -DARDUINO_USB_CDC_ON_BOOT=1 ;; hangs on boot + ; -DWLED_ENABLE_FULL_FONTS ;; removing full unicode support saves 10KB of flash build_flags = ${common.build_flags} ${esp32c3.build_flags} -D WLED_WATCHDOG_TIMEOUT=0 -D CONFIG_ASYNC_TCP_USE_WDT=0 ${common_mm.build_flags_S} -Wno-misleading-indentation -Wno-format-truncation @@ -2543,6 +2554,9 @@ build_flags = ${common.build_flags} ${esp32c3.build_flags} ;-D WLED_DISABLE_ALEXA ;; save flash space ;-D WLED_DISABLE_HUESYNC ;; save flash space ;-D WLED_DISABLE_LOXONE ;; save flash space + ;; -D WLED_DISABLE_PARTICLESYSTEM1D ;; exceeds flash size limit + ;; -D WLED_DISABLE_PARTICLESYSTEM2D ;; exceeds flash size limit + ;; -D WLEDMM_SAVE_FLASH ;-D WLEDMM_WIFI_POWERON_HACK -DLOLIN_WIFI_FIX ;; use this _only_ if your device is not able to make a WiFI connection! -D LEDPIN=3 ;; attach your LEDs to GPIO3 aka "D1" / "A1" -D BTNPIN=9 @@ -2556,6 +2570,7 @@ lib_ignore = IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compila monitor_filters = esp32_exception_decoder ; RAM: [== ] 22.5% (used 73740 bytes from 327680 bytes) ; Flash: [==========] 96.3% (used 1515336 bytes from 1572864 bytes) + # ------------------------------------------------------------------------------ # custom board environments # ------------------------------------------------------------------------------