; PlatformIO Project Configuration File ; Please visit documentation: https://docs.platformio.org/page/projectconf.html [platformio] # ------------------------------------------------------------------------------ # ENVIRONMENTS # # Please uncomment one of the lines below to select your board(s) # (use `platformio_override.ini` when building for your own board; see `platformio_override.ini.sample` for an example) # ------------------------------------------------------------------------------ # CI/PR binaries default_envs = nodemcuv2 esp8266_2m esp01_1m_full nodemcuv2_compat esp8266_2m_compat esp01_1m_full_compat esp32dev_V4 ;; esp32 V4 build supporting audioreactive esp32dev esp32dev_debug esp32_eth esp32_eth_V4 ;; esp32-ethernet V4 build supporting audioreactive esp32_wrover lolin_s2_mini ;; TODO: disabled NeoEsp32RmtMethodIsr esp32c3dev esp32c6dev_4MB ; esp32c6dev_8MB esp32c5dev esp32c5dev_8MB_qspi esp32p4_16MB ;; P4 360 Mhz 16MB flash - experimental ; esp32p4_32MB ; esp32P4_400 ;; P4 rev3 400 Mhz - not usable yet esp32s3_4M_qspi ;; TODO: disabled NeoEsp32RmtMethodIsr esp32c3dev_qio esp32S3_wroom2 ;; TODO: disabled NeoEsp32RmtMethodIsr esp32s3dev_16MB_opi ;; TODO: disabled NeoEsp32RmtMethodIsr esp32s3dev_8MB_opi ;; TODO: disabled NeoEsp32RmtMethodIsr esp32s3dev_8MB_qspi ;; TODO: disabled NeoEsp32RmtMethodIsr esp32s3dev_8MB_none ;; TODO: disabled NeoEsp32RmtMethodIsr esp32s3_4M_qspi ;; TODO: disabled NeoEsp32RmtMethodIsr usermods src_dir = ./wled00 data_dir = ./wled00/data build_cache_dir = ~/.buildcache extra_configs = platformio_override.ini platformio_release.ini [common] # ------------------------------------------------------------------------------ # FLAGS: DEBUG # esp8266 : see https://docs.platformio.org/en/latest/platforms/espressif8266.html#debug-level # esp32 : see https://docs.platformio.org/en/latest/platforms/espressif32.html#debug-level # ------------------------------------------------------------------------------ debug_flags = -D DEBUG=1 -D WLED_DEBUG -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM ;; for esp8266 # if needed (for memleaks etc) also add; -DDEBUG_ESP_OOM -include "umm_malloc/umm_malloc_cfg.h" # -DDEBUG_ESP_CORE is not working right now # ------------------------------------------------------------------------------ # FLAGS: ldscript (available ldscripts at https://github.com/esp8266/Arduino/tree/master/tools/sdk/ld) # ldscript_2m1m (2048 KB) = 1019 KB sketch, 4 KB eeprom, 1004 KB spiffs, 16 KB reserved # ldscript_4m1m (4096 KB) = 1019 KB sketch, 4 KB eeprom, 1002 KB spiffs, 16 KB reserved, 2048 KB empty/ota? # # Available lwIP variants (macros): # -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH = v1.4 Higher Bandwidth (default) # -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY = v2 Lower Memory # -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH = v2 Higher Bandwidth # -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH # # BearSSL performance: # When building with -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL, please add `board_build.f_cpu = 160000000` to the environment configuration # # BearSSL ciphers: # When building on core >= 2.5, you can add the build flag -DBEARSSL_SSL_BASIC in order to build BearSSL with a limited set of ciphers: # TLS_RSA_WITH_AES_128_CBC_SHA256 / AES128-SHA256 # TLS_RSA_WITH_AES_256_CBC_SHA256 / AES256-SHA256 # TLS_RSA_WITH_AES_128_CBC_SHA / AES128-SHA # TLS_RSA_WITH_AES_256_CBC_SHA / AES256-SHA # This reduces the OTA size with ~45KB, so it's especially useful on low memory boards (512k/1m). # ------------------------------------------------------------------------------ build_flags = -DMQTT_MAX_PACKET_SIZE=1024 -DSECURE_CLIENT=SECURE_CLIENT_BEARSSL -DBEARSSL_SSL_BASIC -D CORE_DEBUG_LEVEL=0 -D NDEBUG -Wno-attributes ;; silence warnings about unknown attribute 'maybe_unused' in NeoPixelBus #build_flags for the IRremoteESP8266 library (enabled decoders have to appear here) -D _IR_ENABLE_DEFAULT_=false -D DECODE_HASH=true -D DECODE_NEC=true -D DECODE_SONY=true -D DECODE_SAMSUNG=true -D DECODE_LG=true -DWLED_USE_MY_CONFIG -D WLED_PS_DONT_REPLACE_FX ; PS replacement FX are purely a flash memory saving feature, do not replace classic FX until we run out of flash build_unflags = ldscript_1m128k = eagle.flash.1m128.ld ldscript_2m512k = eagle.flash.2m512.ld ldscript_2m1m = eagle.flash.2m1m.ld ldscript_4m1m = eagle.flash.4m1m.ld default_usermods = audioreactive ;; audioreactive compiles, but crashes on classic esp32 (driver conflict related to legacy ADC) ;; default_usermods = animartrix ;; for testing default_usermodsV4 = audioreactive ;; audioreactive is compatible with V4 builds [scripts_defaults] extra_scripts = pre:pio-scripts/set_metadata.py post:pio-scripts/output_bins.py post:pio-scripts/strip-floats.py post:pio-scripts/dynarray.py pre:pio-scripts/user_config_copy.py pre:pio-scripts/load_usermods.py pre:pio-scripts/build_ui.py ;;post:pio-scripts/fastled_cxx_workaround.py post:pio-scripts/validate_modules.py ;; double-check the build output usermods ; post:pio-scripts/obj-dump.py ;; convenience script to create a disassembly dump of the firmware (hardcore debugging) # ------------------------------------------------------------------------------ # COMMON SETTINGS: # ------------------------------------------------------------------------------ [env] framework = arduino board_build.flash_mode = dout monitor_speed = 115200 # slow upload speed but most compatible (use platformio_override.ini to use faster speed) upload_speed = 115200 # ------------------------------------------------------------------------------ # LIBRARIES: required dependencies # Please note that we don't always use the latest version of a library. # # The following libraries have been included (and some of them changed) in the source: # ArduinoJson@5.13.5, E131@1.0.0(changed), Time@1.5, Timezone@1.2.1 # ------------------------------------------------------------------------------ lib_compat_mode = strict lib_deps = ;; IRremoteESP8266 @ 2.8.2 ;; https://github.com/Aircoookie/ESPAsyncWebServer.git#v2.4.2 ;; https://github.com/Makuna/NeoPixelBus.git#1d7ff38f14d04a976f9c6e365c83a232bcba04fc crankyoldgit/IRremoteESP8266 @ 2.9.0 ;; neopixelbus dependancy moved into [8266] and [esp32_all_variants] sections ESPAsyncWebServerWLED = git+https://github.com/Aircoookie/ESPAsyncWebServer#ac44e32abf2a69ae650412fb6bc193c59ccac38a marvinroger/AsyncMqttClient @ 0.9.0 # for I2C interface ;Wire extra_scripts = ${scripts_defaults.extra_scripts} [esp8266] # ------------------------------------------------------------------------------ # PLATFORM: # !! DO NOT confuse platformio's ESP8266 development platform with Arduino core for ESP8266 # # arduino core 2.6.3 = platformIO 2.3.2 # arduino core 2.7.0 = platformIO 2.5.0 # ------------------------------------------------------------------------------ arduino_core_2_6_3 = espressif8266@2.3.3 arduino_core_2_7_4 = espressif8266@2.6.2 arduino_core_3_0_0 = espressif8266@3.0.0 arduino_core_3_0_2 = espressif8266@3.2.0 arduino_core_3_1_0 = espressif8266@4.1.0 arduino_core_3_1_2 = espressif8266@4.2.1 # Development platforms arduino_core_develop = https://github.com/platformio/platform-espressif8266#develop arduino_core_git = https://github.com/platformio/platform-espressif8266#feature/stage # Platform to use for ESP8266 platform_wled_default = ${esp8266.arduino_core_3_1_2} # We use 2.7.4.7 for all, includes PWM flicker fix and Wstring optimization #platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7 platform_packages = platformio/toolchain-xtensa @ ~2.100300.220621 #2.40802.200502 platformio/tool-esptool #@ ~1.413.0 platformio/tool-esptoolpy #@ ~1.30000.0 ## previous platform for 8266, in case of problems with the new one ## you'll need makuna/NeoPixelBus@ 2.6.9 for arduino_core_3_0_2, which does not support Ucs890x ;; platform_wled_default = ${esp8266.arduino_core_3_0_2} ;; platform_packages = tasmota/framework-arduinoespressif8266 @ 3.20704.7 ;; platformio/toolchain-xtensa @ ~2.40802.200502 ;; platformio/tool-esptool @ ~1.413.0 ;; platformio/tool-esptoolpy @ ~1.30000.0 platform = ${esp8266.platform_wled_default} build_unflags = ${common.build_unflags} custom_usermods = build_flags = -DESP8266 -DFP_IN_IROM ;-Wno-deprecated-declarations ;-Wno-register ;; leaves some warnings when compiling C files: command-line option '-Wno-register' is valid for C++/ObjC++ but not for C ;-Dregister= # remove warnings in C++17 due to use of deprecated register keyword by the FastLED library ;; warning: this can be dangerous -Wno-misleading-indentation ; NONOSDK22x_190703 = 2.2.2-dev(38a443e) -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 ; lwIP 2 - Higher Bandwidth no Features ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH_LOW_FLASH ; lwIP 1.4 - Higher Bandwidth (Aircoookie has) -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; VTABLES in Flash -DVTABLES_IN_FLASH ; restrict to minimal mime-types -DMIMETYPE_MINIMAL ; other special-purpose framework flags (see https://docs.platformio.org/en/latest/platforms/espressif8266.html) ; decrease code cache size and increase IRAM to fit all pixel functions -D PIO_FRAMEWORK_ARDUINO_MMU_CACHE16_IRAM48 ;; in case of linker errors like "section `.text1' will not fit in region `iram1_0_seg'" ; -D PIO_FRAMEWORK_ARDUINO_MMU_CACHE16_IRAM48_SECHEAP_SHARED ;; (experimental) adds some extra heap, but may cause slowdown -D NON32XFER_HANDLER ;; ask forgiveness for PROGMEM misuse lib_deps = #https://github.com/lorol/LITTLEFS.git ESPAsyncTCP @ 1.2.2 https://github.com/me-no-dev/ESPAsyncUDP.git#697c75a0255e5dccf91b4ef8b5cc28c569b3bac9 ESP8266PWM https://github.com/tignioj/ArduinoUZlib.git#20aff95cd80c141f80bdbf66895409a0046d2c2f ${env.lib_deps} https://github.com/Makuna/NeoPixelBus.git#1d7ff38f14d04a976f9c6e365c83a232bcba04fc ;; standard NPB version used in main branch monitor_filters = esp8266_exception_decoder ;; compatibilty flags - same as 0.14.0 which seems to work better on some 8266 boards. Not using PIO_FRAMEWORK_ARDUINO_MMU_CACHE16_IRAM48 build_flags_compat = -DESP8266 -DFP_IN_IROM ;;-Wno-deprecated-declarations -Wno-misleading-indentation ;;-Wno-attributes ;; silence warnings about unknown attribute 'maybe_unused' in NeoPixelBus -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x_190703 -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -DVTABLES_IN_FLASH -DMIMETYPE_MINIMAL -DWLED_SAVE_IRAM ;; needed to prevent linker error ;; this platform version was used for WLED 0.14.0 platform_compat = espressif8266@4.2.0 platform_packages_compat = platformio/toolchain-xtensa @ ~2.100300.220621 #2.40802.200502 platformio/tool-esptool #@ ~1.413.0 platformio/tool-esptoolpy #@ ~1.30000.0 ;; experimental - for using older NeoPixelBus 2.7.9 lib_deps_compat = ESPAsyncTCP @ 1.2.2 https://github.com/me-no-dev/ESPAsyncUDP.git#697c75a0255e5dccf91b4ef8b5cc28c569b3bac9 ESP8266PWM IRremoteESP8266 @ 2.8.2 makuna/NeoPixelBus @ 2.7.9 https://github.com/tignioj/ArduinoUZlib.git#20aff95cd80c141f80bdbf66895409a0046d2c2f https://github.com/Aircoookie/ESPAsyncWebServer.git#2d3af2c32b1dd1a8fd9fb01d7b51fa3653221a89 ;; v2.4.0 (pinned by commit to avoid PIO annotated-tag checkout warning) [esp32_all_variants] lib_deps = esp32async/AsyncTCP @ 3.4.10 bitbank2/AnimatedGIF@^1.4.7 https://github.com/Aircoookie/GifDecoder.git#bc3af189b6b1e06946569f6b4287f0b79a860f8e ;; neopixelbus dependancy temporarily moved into [esp32_idf_V4] and [esp32_idf_V5] sections build_flags = -D CONFIG_ASYNC_TCP_USE_WDT=0 -D CONFIG_ASYNC_TCP_STACK_SIZE=8192 -D WLED_ENABLE_GIF [esp32] platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} build_unflags = ${esp32_idf_V5.build_unflags} build_flags = ${esp32_idf_V5.build_flags} lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} monitor_filters = esp32_exception_decoder tiny_partitions = tools/WLED_ESP32_2MB_noOTA.csv default_partitions = tools/WLED_ESP32_4MB_1MB_FS.csv extended_partitions = tools/WLED_ESP32_4MB_700k_FS.csv big_partitions = tools/WLED_ESP32_4MB_256KB_FS.csv ;; 1.8MB firmware, 256KB filesystem, coredump support large_partitions = tools/WLED_ESP32_8MB.csv extreme_partitions = tools/WLED_ESP32_16MB_9MB_FS.csv board_build.partitions = ${esp32.default_partitions} ;; default partioning for 4MB Flash - can be overridden in build envs # additional build flags for audioreactive - must be applied globally AR_build_flags = ;; -fsingle-precision-constant ;; forces ArduinoFFT to use float math (2x faster) AR_lib_deps = ;; for pre-usermod-library platformio_override compatibility [esp32_idf_V4] ;; build environment for ESP32 using ESP-IDF 4.4.x / arduino-esp32 v2.0.y ;; *** important: build flags from esp32_idf_V4 are inherited by _all_ esp32-based MCUs: esp32, esp32s2, esp32s3, esp32c3 ;; tasmota platform (default) platform = https://github.com/tasmota/platform-espressif32/releases/download/2024.06.00/platform-espressif32.zip ;; Tasmota Arduino Core 2.0.18 with IPv6 support, based on IDF 4.4.8 platform_packages = ;; espressif platform (optional - needs 300KB extra flash) ;;; arduino-esp32 2.0.17 + esp-idf 4.4.7 ;; platform = espressif32@ ~6.13.0 ;; platform_packages = ;;; arduino-esp32 2.0.14 + esp-idf 4.4.6 ;; platform = espressif32@ ~6.6.0 ;; platform_packages = platformio/framework-arduinoespressif32 @ 3.20014.231204 build_unflags = ${common.build_unflags} build_flags = -g -Wshadow=compatible-local ;; emit warning in case a local variable "shadows" another local one -DARDUINO_ARCH_ESP32 -DESP32 ${esp32_all_variants.build_flags} -D WLED_ENABLE_DMX_INPUT ;; toDO: DMX input is currently not working with V4 builds lib_deps = ${esp32_all_variants.lib_deps} https://github.com/someweisguy/esp_dmx.git#47db25d8c515e76fabcf5fc5ab0b786f98eeade0 ${env.lib_deps} NeoPixelBus = git+https://github.com/Makuna/NeoPixelBus#1d7ff38f14d04a976f9c6e365c83a232bcba04fc ;; latest release + properly inialized buffers lib_ignore = [esp32_idf_V5] ;; (default) Platform 2026.05.50 Tasmota Arduino Core 3.3.8.260506 based on IDF 5.5.4.260407 platform = https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip platform_packages = ;; (optional) pioarduino platform - needs 300kB extra flash - Arduino Core v3.3.9 based on ESP-IDF v5.5.4 platform_pioarduino = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.39/platform-espressif32.zip platform_packages_pioarduino = build_unflags = ${common.build_unflags} -Wno-volatile ;; avoid warning on .c files: "-Wno-volatile only applies to c++ files" build_flags = -g ;;-Wno-deprecated ;; disables a ton of warnings: implicit capture of 'this' via '[=]' is deprecated in C++20 [-Wdeprecated] -Wshadow=compatible-local ;; emit warning in case a local variable "shadows" another local one -DARDUINO_ARCH_ESP32 ; -DESP32=ESP32 ;; disabled to avoid compiler warning: "ESP32" redefined ${esp32_all_variants.build_flags} -D WLED_USE_SHARED_RMT ;; ToDO: check if NeoESP32RmtHI is still needed with V5 (see discussion in PR#4838) -D__unreachable=__builtin_unreachable ;; picolibc (new toolchain-xtensa-esp-elf) dropped __unreachable(), but esp_dmx still calls it ;;-D WLED_DISABLE_INFRARED ;; ToDO: needs more testing with V5 ;;-D WLED_DISABLE_MQTT ;; ToDO: needs more testing with V5 -D WLED_ENABLE_DMX_INPUT -D ESP32_ARDUINO_NO_RGB_BUILTIN ;; avoids RMT driver abort on startup "E (98) rmt(legacy): CONFLICT! driver_ng is not allowed to be used with the legacy driver" lib_deps = ${esp32_all_variants.lib_deps} https://github.com/netmindz/esp_dmx/#ed12a2909960c92d7f144d368564e2473bd38c63 ;; esp-idf-v5-fixes branch, pinned; TODO: need an upstream update for V5 ${env.lib_deps} NeoPixelBus = git+https://github.com/Makuna/NeoPixelBus#76afe832f74b0738a3fa1bba0caf389ade9e7693 ;; CORE3 branch ;; AsyncMqttClient = git+https://github.com/marvinroger/async-mqtt-client#3d93fc7f662e65366f8e2b0d88b108f874f035b9 ;; override to use latest commmit from Sep 25, 2024 lib_ignore = NeoESP32RmtHI ;;AsyncMqttClient ;; uncomment in case you find V5 compatibility problems with this library ;;IRremoteESP8266 ;; uncomment in case you find V5 compatibility problems with this library [v5_pioarduino_workaround] # This is a disgusting workaround for a pioarduino "feature": if you don't ever mention lib_archive in your platformio.ini # it forces it off globally, causing unused code from all libraries to be included even if you don't use it. # This causes FastLED to activate its driver framework, stealing hardware resources we want to use. # To work around this, all that we have to do is mention lib_archive in any section, even if it's never used; then # pioarduino believes we know what we're doing, and lets us do what we want. lib_archive = yes [esp32s2] ;; generic definitions for all ESP32-S2 boards platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} build_unflags = ${esp32_idf_V5.build_unflags} build_flags = -g -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32S2 -DCONFIG_IDF_TARGET_ESP32S2=1 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 -DARDUINO_USB_MODE=0 ;; this flag is mandatory for ESP32-S2 ! ;; please make sure that the following flags are properly set (to 0 or 1) by your board.json, or included in your custom platformio_override.ini entry: ;; ARDUINO_USB_CDC_ON_BOOT ${esp32_idf_V5.build_flags} lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} board_build.partitions = ${esp32.default_partitions} ;; default partioning for 4MB Flash - can be overridden in build envs monitor_filters = esp32_exception_decoder [esp32c3] ;; generic definitions for all ESP32-C3 boards platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} build_unflags = ${esp32_idf_V5.build_unflags} build_flags = -g -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32C3 -DCONFIG_IDF_TARGET_ESP32C3=1 -DARDUINO_USB_MODE=1 ;; this flag is mandatory for ESP32-C3 ;; please make sure that the following flags are properly set (to 0 or 1) by your board.json, or included in your custom platformio_override.ini entry: ;; ARDUINO_USB_CDC_ON_BOOT ${esp32_idf_V5.build_flags} lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} board_build.partitions = ${esp32.default_partitions} ;; default partioning for 4MB Flash - can be overridden in build envs board_build.flash_mode = qio monitor_filters = esp32_exception_decoder [esp32s3] ;; generic definitions for all ESP32-S3 boards platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} build_unflags = ${esp32_idf_V5.build_unflags} build_flags = -g ;; -DESP32 ;; disabled to avoid compiler warning: "ESP32" redefined -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32S3 -DCONFIG_IDF_TARGET_ESP32S3=1 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_DFU_ON_BOOT=0 ;; please make sure that the following flags are properly set (to 0 or 1) by your board.json, or included in your custom platformio_override.ini entry: ;; ARDUINO_USB_MODE, ARDUINO_USB_CDC_ON_BOOT ${esp32_idf_V5.build_flags} lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} board_build.partitions = ${esp32.large_partitions} ;; default partioning for 8MB flash - can be overridden in build envs upload_speed = 921600 monitor_filters = esp32_exception_decoder [esp32c5] ;; generic definitions for all ESP32-C5 boards platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} custom_usermods = ;; ${common.default_usermods} ;; ToDO: audiorective compiles, but not tested on C5 yet build_unflags = ${esp32_idf_V5.build_unflags} -D WLED_ENABLE_DMX_INPUT ;; esp_dmx library doesn't support C5 UART registers yet build_flags = -g ;; -Wno-volatile -Wno-deprecated-declarations ;; silence compiler warnings -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32C5 -DCONFIG_IDF_TARGET_ESP32C5=1 -D CONFIG_ASYNC_TCP_USE_WDT=0 -D WLED_DISABLE_INFRARED ;; library causes boot problems on -C5 ;; please make sure that the following flags are properly set (to 0 or 1) by your board.json, or included in your custom platformio_override.ini entry: ;; ARDUINO_USB_MODE ;; ARDUINO_USB_CDC_ON_BOOT ${esp32_idf_V5.build_flags} lib_deps = ${esp32_idf_V5.lib_deps} ;; NeoPixelBus = https://github.com/jonny190/NeoPixelBus.git#wled-c5-stable ;; jonny190 wled-c5-stable fork C5 support: I2S exclusion, bit-bang CSR/GPIO, channel ctor overload lib_ignore = ${esp32_idf_V5.lib_ignore} esp_dmx ;; esp_dmx library doesn't support C5 UART registers yet IRremoteESP8266 ;; use with WLED_DISABLE_INFRARED for faster compilation [esp32c6] ;; generic definitions for all ESP32-C6 boards platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} ;;platform_packages = ;; framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.1 ;; framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip custom_usermods = ;; ${common.default_usermods} ;; ToDO: audiorective compiles, but not tested on C6 yet build_unflags = ${esp32_idf_V5.build_unflags} -D WLED_ENABLE_DMX_INPUT ;; esp_dmx library doesn't support C6 UART registers yet build_flags = -g ;; -Wno-volatile -Wno-deprecated-declarations ;; silence compiler warnings -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32C6 -DCONFIG_IDF_TARGET_ESP32C6=1 -D CONFIG_ASYNC_TCP_USE_WDT=0 ;; -D WLED_DISABLE_INFRARED ;; library not tested yet with -C6 -DARDUINO_USB_MODE=1 ;; this flag is - most likely - mandatory for ESP32-C6 ;; please make sure that the following flags are properly set (to 0 or 1) by your board.json, or included in your custom platformio_override.ini entry: ;; ARDUINO_USB_CDC_ON_BOOT ${esp32_idf_V5.build_flags} lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} esp_dmx ;; esp_dmx library doesn't support C6 UART registers yet ;; IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation [esp32p4] ;; !! Important: if your board shows errors when trying to start WiFi, the C6 coprocessor might need a firmware update. ;; !! go here ==> https://esp32-c6-firmware-update.github.io/ ;; ;; generic definitions for all ESP32-P4 boards. ;; Using latest tasmota framework - older frameworks only have minimal support for P4 platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip platform_packages = custom_usermods = ;; ${common.default_usermods} ;; ToDO: audiorective compiles, but not tested on P4 yet build_unflags = ${esp32_idf_V5.build_unflags} -D WLED_ENABLE_DMX_INPUT ;; library not compatible with -P4 -D WLED_ENABLE_DMX ;; DMX serial out needs adaptations for P4 compatibility build_flags = -g ;; -Wno-volatile -Wno-deprecated-declarations ;; silence compiler warnings -DARDUINO_ARCH_ESP32 -DARDUINO_ARCH_ESP32P4 -DCONFIG_IDF_TARGET_ESP32P4=1 -DBOARD_HAS_PSRAM ;; all P4 boards have PSRAM support -D CONFIG_ASYNC_TCP_USE_WDT=0 -DARDUINO_USB_MODE=1 ;; this flag is - most likely - mandatory for ESP32-P4 ;;-D WLED_DISABLE_INFRARED ;; library not tested yet with -P4 -D WLED_DISABLE_ESPNOW ;; ESP-NOW is not possible on P4 (no native Wi-Fi radio) ;; please make sure that the following flags are properly set (to 0 or 1) by your board.json, or included in your custom platformio_override.ini entry: ;; ARDUINO_USB_CDC_ON_BOOT ${esp32_idf_V5.build_flags} lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} ;; IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation esp_dmx ; ToDO: disabled until we find a compatible version wled-espnow ; WLED_DISABLE_ESPNOW compiles it empty; validate_modules.py would fail on "no symbols found" # ------------------------------------------------------------------------------ # EXPERIMENTAL: WLED NEW MCU BUILDS (-C5, -C6, -P4) # ------------------------------------------------------------------------------ [env:esp32c6dev_8MB] ;; ESP32-C6 "devkit C" with 8MB flash extends = esp32c6 platform = ${esp32c6.platform} platform_packages = ${esp32c6.platform_packages} board = esp32-c6-devkitc-1 build_unflags = ${esp32c6.build_unflags} ;;-D CORE_DEBUG_LEVEL=0 ;;-D NDEBUG build_flags = ${common.build_flags} ${esp32c6.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C6_8MB\" ;;-D DEBUG -g3 -ggdb ;;-D CORE_DEBUG_LEVEL=4 -D WLED_WATCHDOG_TIMEOUT=0 ;; -DLOLIN_WIFI_FIX ; might be needed on "-C6 mini" ;;-DARDUINO_USB_CDC_ON_BOOT=1 ;; for virtual CDC USB -DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip upload_speed = 460800 lib_deps = ${esp32c6.lib_deps} lib_ignore = ${esp32c6.lib_ignore} board_build.partitions = ${esp32.large_partitions} board_build.f_flash = 80000000L board_build.flash_mode = qio board_build.arduino.memory_type = qio_qspi monitor_filters = esp32_exception_decoder [env:esp32c6dev_4MB] ;; ESP32-C6 "devkit M" with 4MB flash extends = env:esp32c6dev_8MB board = esp32-c6-devkitm-1 board_build.partitions = ${esp32.default_partitions} build_unflags = ${env:esp32c6dev_8MB.build_unflags} -D WLED_RELEASE_NAME=\"ESP32-C6_8MB\" build_flags = ${env:esp32c6dev_8MB.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C6_4MB\" lib_deps = ${esp32c6.lib_deps} lib_ignore = ${esp32c6.lib_ignore} monitor_filters = esp32_exception_decoder [env:esp32c5dev] ;; ESP32-C5 "devkit C" with 4MB flash, no PSRAM - EXPERIMENTAL extends = esp32c5 board = esp32-c5-devkitc-1 board_build.f_flash = 80000000L board_build.flash_mode = qio board_build.arduino.memory_type = qio_qspi ;; flash config only, this board has no PSRAM build_flags = ${common.build_flags} ${esp32c5.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C5\" -D WLED_WATCHDOG_TIMEOUT=0 -DARDUINO_USB_MODE=1 ;; this flag is mandatory for ESP32-C5 -DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip ;; -D WLED_DEBUG lib_deps = ${esp32c5.lib_deps} lib_ignore = ${esp32c5.lib_ignore} board_build.partitions = ${esp32.big_partitions} upload_speed = 460800 monitor_filters = esp32_exception_decoder [env:esp32c5dev_8MB_qspi] ;; ESP32-C5 with 8MB flash and PSRAM - EXPERIMENTAL extends = esp32c5 board = esp32-c5-devkitc1-n8r4 board_build.f_flash = 80000000L board_build.flash_mode = qio board_build.arduino.memory_type = qio_qspi ;; this board has PSRAM build_flags = ${common.build_flags} ${esp32c5.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C5_8MB_qspi\" -D BOARD_HAS_PSRAM -D WLED_WATCHDOG_TIMEOUT=0 -DARDUINO_USB_MODE=1 ;; this flag is mandatory for ESP32-C5 -DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip ;; -D WLED_DEBUG lib_deps = ${esp32c5.lib_deps} lib_ignore = ${esp32c5.lib_ignore} board_build.partitions = ${esp32.large_partitions} board_upload.flash_size = 8MB board_upload.maximum_size = 8388608 upload_speed = 460800 monitor_filters = esp32_exception_decoder [env:esp32p4_16MB] ;; (experimental) ESP32-P4 with 16 MB Flash, 32MB PSRAM ;; https://www.waveshare.com/esp32-p4-nano.htm extends = esp32p4 platform = ${esp32p4.platform} platform_packages = ${esp32p4.platform_packages} board = esp32-p4-evboard ;; P4 eval board, 360Mhz ;; board = esp32-p4_r3-evboard ;; P4 eval board with "revision 3" CPU, 400Mhz ;; board = esp32-p4 ;; 360Mhz ;; board = esp32-p4_r3 ;; 400Mhz ;;build_type = debug board_build.flash_mode = qio board_build.partitions = ${esp32.extreme_partitions} ;; for 16MB Flash build_unflags = ${esp32p4.build_unflags} ;; -DCORE_DEBUG_LEVEL=0 ;; -flto build_flags = ${common.build_flags} ${esp32p4.build_flags} -D WLED_RELEASE_NAME=\"ESP32-P4_16MB\" ;; -D WLED_DEBUG ;; -DCORE_DEBUG_LEVEL=3 -g3 -ggdb -fno-lto lib_ignore = ${esp32p4.lib_ignore} upload_speed = 460800 monitor_filters = esp32_exception_decoder [env:esp32p4_32MB] ;; (experimental) ESP32-P4 with 32 MB Flash, 32MB PSRAM extends = esp32p4 board = esp32-p4-evboard ;; P4 eval board, 360Mhz ;;board = esp32-p4_r3-evboard ;; P4 eval board with "revision 3" CPU, 400Mhz board_build.flash_mode = qio board_build.partitions = tools/WLED_ESP32_32MB.csv ;;build_type = debug build_unflags = ${esp32p4.build_unflags} ;; -DCORE_DEBUG_LEVEL=0 ;; -flto build_flags = ${common.build_flags} ${esp32p4.build_flags} -D WLED_RELEASE_NAME=\"ESP32-P4_32MB\" ;; -D WLED_DEBUG ;; -DCORE_DEBUG_LEVEL=3 -g3 -ggdb -fno-lto upload_speed = 460800 monitor_filters = esp32_exception_decoder # ------------------------------------------------------------------------------ # WLED BUILDS # ------------------------------------------------------------------------------ [env:nodemcuv2] extends = esp8266 board = nodemcuv2 board_build.ldscript = ${common.ldscript_4m1m} build_flags = ${common.build_flags} ${esp8266.build_flags} -D WLED_RELEASE_NAME=\"ESP8266\" #-DWLED_DISABLE_2D -D WLED_DISABLE_PARTICLESYSTEM2D custom_usermods = audioreactive [env:nodemcuv2_compat] extends = env:nodemcuv2 ;; using platform version and build options from WLED 0.14.0 platform = ${esp8266.platform_compat} platform_packages = ${esp8266.platform_packages_compat} build_flags = ${common.build_flags} ${esp8266.build_flags_compat} -D WLED_RELEASE_NAME=\"ESP8266_compat\" #-DWLED_DISABLE_2D -D WLED_DISABLE_PARTICLESYSTEM2D ;; lib_deps = ${esp8266.lib_deps_compat} ;; experimental - use older NeoPixelBus 2.7.9 custom_usermods = audioreactive [env:nodemcuv2_160] extends = env:nodemcuv2 board_build.f_cpu = 160000000L build_flags = ${common.build_flags} ${esp8266.build_flags} -D WLED_RELEASE_NAME=\"ESP8266_160\" #-DWLED_DISABLE_2D -D WLED_DISABLE_PARTICLESYSTEM2D custom_usermods = audioreactive [env:esp8266_2m] extends = esp8266 board = esp_wroom_02 board_build.ldscript = ${common.ldscript_2m512k} build_flags = ${common.build_flags} ${esp8266.build_flags} -D WLED_RELEASE_NAME=\"ESP02\" -D WLED_DISABLE_PARTICLESYSTEM2D -D WLED_DISABLE_PARTICLESYSTEM1D custom_usermods = audioreactive [env:esp8266_2m_compat] extends = env:esp8266_2m ;; using platform version and build options from WLED 0.14.0 platform = ${esp8266.platform_compat} platform_packages = ${esp8266.platform_packages_compat} build_flags = ${common.build_flags} ${esp8266.build_flags_compat} -D WLED_RELEASE_NAME=\"ESP02_compat\" #-DWLED_DISABLE_2D -D WLED_DISABLE_PARTICLESYSTEM1D -D WLED_DISABLE_PARTICLESYSTEM2D custom_usermods = audioreactive [env:esp8266_2m_160] extends = env:esp8266_2m board_build.f_cpu = 160000000L build_flags = ${common.build_flags} ${esp8266.build_flags} -D WLED_RELEASE_NAME=\"ESP02_160\" -D WLED_DISABLE_PARTICLESYSTEM1D -D WLED_DISABLE_PARTICLESYSTEM2D custom_usermods = audioreactive [env:esp8266_2m_min] ;; Minimal-feature build for ESP02 (2MB flash). ;; Use this to recover from a failed OTA: flash via serial, then OTA-upload the regular esp8266_2m binary. ;; OTA is intentionally kept enabled. All other optional features are stripped to minimise binary size. extends = esp8266 board = esp_wroom_02 platform = ${esp8266.platform_compat} platform_packages = ${esp8266.platform_packages_compat} ;; older platform saves 488 bytes flash board_build.ldscript = ${common.ldscript_2m512k} build_flags = ${common.build_flags} ${esp8266.build_flags_compat} -D WLED_RELEASE_NAME=\"ESP02_min\" -D WLED_DISABLE_ALEXA -D WLED_DISABLE_HUESYNC -D WLED_DISABLE_INFRARED -D WLED_DISABLE_MQTT -D WLED_DISABLE_ADALIGHT -D WLED_DISABLE_LOXONE -D WLED_DISABLE_WEBSOCKETS -D WLED_DISABLE_ESPNOW -D WLED_DISABLE_2D -D WLED_DISABLE_PARTICLESYSTEM1D -D WLED_DISABLE_PARTICLESYSTEM2D -D WLED_DISABLE_PIXELFORGE -D WLED_DISABLE_IMPROV_WIFISCAN lib_deps = ${esp8266.lib_deps_compat} ;; older NeoPixelBus 2.7.9 saves 340 bytes flash lib_ignore = ;; ignoring unused libs speeds up build time IRremoteESP8266 AsyncMqttClient wled-espnow ; WLED_DISABLE_ESPNOW compiles it empty; validate_modules.py would fail on "no symbols found" custom_usermods = [env:esp01_1m_full] extends = esp8266 board = esp01_1m board_build.ldscript = ${common.ldscript_1m128k} build_flags = ${common.build_flags} ${esp8266.build_flags} -D WLED_RELEASE_NAME=\"ESP01\" -D WLED_DISABLE_OTA ; -D WLED_USE_REAL_MATH ;; may fix wrong sunset/sunrise times, at the cost of 7064 bytes FLASH and 975 bytes RAM -D WLED_DISABLE_PARTICLESYSTEM1D -D WLED_DISABLE_PARTICLESYSTEM2D -D WLED_DISABLE_PIXELFORGE [env:esp01_1m_full_compat] extends = env:esp01_1m_full ;; using platform version and build options from WLED 0.14.0 platform = ${esp8266.platform_compat} platform_packages = ${esp8266.platform_packages_compat} build_flags = ${common.build_flags} ${esp8266.build_flags_compat} -D WLED_RELEASE_NAME=\"ESP01_compat\" -D WLED_DISABLE_OTA #-DWLED_DISABLE_2D -D WLED_DISABLE_PARTICLESYSTEM1D -D WLED_DISABLE_PARTICLESYSTEM2D -D WLED_DISABLE_PIXELFORGE [env:esp01_1m_full_160] extends = env:esp01_1m_full board_build.f_cpu = 160000000L build_flags = ${common.build_flags} ${esp8266.build_flags} -D WLED_RELEASE_NAME=\"ESP01_160\" -D WLED_DISABLE_OTA ; -D WLED_USE_REAL_MATH ;; may fix wrong sunset/sunrise times, at the cost of 7064 bytes FLASH and 975 bytes RAM -D WLED_DISABLE_PARTICLESYSTEM1D -D WLED_DISABLE_PARTICLESYSTEM2D -D WLED_DISABLE_PIXELFORGE ;; custom_usermods = audioreactive ;; pushed program flash size over the limits [env:esp32dev_V4] ;; uses V4 framework - for checking that the code still builds in V4 board = esp32dev platform = ${esp32_idf_V4.platform} platform_packages = ${esp32_idf_V4.platform_packages} build_unflags = ${esp32_idf_V4.build_unflags} -D WLED_ENABLE_DMX_INPUT ;; TODO: fix lots of compile errors in dmx_input.cpp custom_usermods = ${common.default_usermodsV4} build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_V4\" #-D WLED_DISABLE_BROWNOUT_DET -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 lib_deps = ${esp32_idf_V4.lib_deps} lib_ignore = ${esp32_idf_V4.lib_ignore} esp_dmx ;; TODO: fix lots of compile errors in dmx_input.cpp monitor_filters = esp32_exception_decoder board_build.partitions = ${esp32.default_partitions} board_build.flash_mode = dio [env:esp32dev] board = esp32dev platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} build_unflags = ${esp32_idf_V5.build_unflags} custom_usermods = ${common.default_usermods} ;; warning: audioreactive analog mic support had to be removed in V5 builds build_flags = ${common.build_flags} ${esp32_idf_V5.build_flags} -D WLED_RELEASE_NAME=\"ESP32\" #-D WLED_DISABLE_BROWNOUT_DET -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} monitor_filters = esp32_exception_decoder board_build.partitions = ${esp32.default_partitions} board_build.flash_mode = dio [env:esp32dev_debug] extends = env:esp32dev ;;build_type = debug ;; disabled - leads to stack smashing in ArduinoJSON "Unhandled debug exception: Stack canary watchpoint triggered (loopTask)" monitor_filters = esp32_exception_decoder upload_speed = 921600 custom_usermods = ${common.default_usermods} ;; warning: audioreactive analog mic support had to be removed in V5 builds build_unflags = ${esp32_idf_V5.build_unflags} -D WLED_RELEASE_NAME=\"ESP32\" ;; -DCORE_DEBUG_LEVEL=0 ;; -DNDEBUG ;; re-enable debug assertions -flto -flto=auto ;; remove LTO flags, to make stack traces usable build_flags = ${common.build_flags} ${esp32_idf_V5.build_flags} -D WLED_DEBUG -D WLED_RELEASE_NAME=\"ESP32_DEBUG\" -DARDUINO_USB_CDC_ON_BOOT=0 ;; -DCORE_DEBUG_LEVEL=2 -D WLED_DISABLE_ESPNOW -g3 -ggdb -fno-lto ;; to make stack traces meaningful again lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} [env:esp32dev_8M] board = esp32dev platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} custom_usermods = ${common.default_usermods} ;; warning: audioreactive analog mic support had to be removed in V5 builds build_unflags = ${esp32_idf_V5.build_unflags} build_flags = ${common.build_flags} ${esp32_idf_V5.build_flags} -D WLED_RELEASE_NAME=\"ESP32_8M\" #-D WLED_DISABLE_BROWNOUT_DET -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} monitor_filters = esp32_exception_decoder board_build.partitions = ${esp32.large_partitions} board_upload.flash_size = 8MB board_upload.maximum_size = 8388608 ; board_build.f_flash = 80000000L [env:esp32dev_16M] board = esp32dev platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} custom_usermods = ${common.default_usermods} ;; warning: audioreactive analog mic support had to be removed in V5 builds build_unflags = ${esp32_idf_V5.build_unflags} build_flags = ${common.build_flags} ${esp32_idf_V5.build_flags} -D WLED_RELEASE_NAME=\"ESP32_16M\" #-D WLED_DISABLE_BROWNOUT_DET -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} monitor_filters = esp32_exception_decoder board_build.partitions = ${esp32.extreme_partitions} board_upload.flash_size = 16MB board_upload.maximum_size = 16777216 board_build.f_flash = 80000000L [env:esp32_eth_V4] extends = env:esp32dev_V4 board = esp32-poe upload_speed = 921600 build_unflags = ${esp32_idf_V4.build_unflags} -D WLED_ENABLE_DMX_INPUT ;; TODO: fix lots of compile errors in dmx_input.cpp build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_Ethernet_V4\" -D RLYPIN=-1 -D WLED_USE_ETHERNET -D BTNPIN=-1 -D SR_DMTYPE=-1 -D AUDIOPIN=-1 -D I2S_SDPIN=-1 -D I2S_WSPIN=-1 -D I2S_CKPIN=-1 -D MCLK_PIN=-1 ;; force AR to not allocate any PINs at startup -D DATA_PINS=4 ;; default led pin = 16 conflicts with pins used for ethernet ; -D WLED_DISABLE_ESPNOW ;; ESP-NOW requires wifi, may crash with ethernet only => uncomment if your board uses ETH_CLOCK_GPIO0_OUT, ETH_CLOCK_GPIO16_OUT, ETH_CLOCK_GPIO17_OUT -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 lib_ignore = ${esp32_idf_V4.lib_ignore} esp_dmx ;; TODO: fix lots of compile errors in dmx_input.cpp board_build.partitions = ${esp32.default_partitions} board_build.flash_mode = dio [env:esp32_eth] extends = env:esp32dev board = esp32-poe platform = ${esp32_idf_V5.platform} platform_packages = ${esp32_idf_V5.platform_packages} upload_speed = 921600 custom_usermods = ${common.default_usermods} ;; warning: audioreactive analog mic support had to be removed in V5 builds build_unflags = ${esp32_idf_V5.build_unflags} build_flags = ${common.build_flags} ${esp32_idf_V5.build_flags} -D WLED_RELEASE_NAME=\"ESP32_Ethernet\" -D RLYPIN=-1 -D WLED_USE_ETHERNET -D BTNPIN=-1 -D SR_DMTYPE=-1 -D AUDIOPIN=-1 -D I2S_SDPIN=-1 -D I2S_WSPIN=-1 -D I2S_CKPIN=-1 -D MCLK_PIN=-1 ;; force AR to not allocate any PINs at startup -D DATA_PINS=4 ;; default led pin = 16 conflicts with pins used for ethernet ; -D WLED_DISABLE_ESPNOW ;; ESP-NOW requires wifi, may crash with ethernet only => uncomment if your board uses ETH_CLOCK_GPIO0_OUT, ETH_CLOCK_GPIO16_OUT, ETH_CLOCK_GPIO17_OUT -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 lib_deps = ${esp32_idf_V5.lib_deps} lib_ignore = ${esp32_idf_V5.lib_ignore} board_build.partitions = ${esp32.default_partitions} board_build.flash_mode = dio [env:esp32_wrover] extends = esp32_idf_V5 board = ttgo-t7-v14-mini32 board_build.f_flash = 80000000L board_build.flash_mode = qio board_build.partitions = ${esp32.extended_partitions} custom_usermods = ${common.default_usermods} ;; warning: audioreactive analog mic support had to be removed in V5 builds build_unflags = ${esp32_idf_V5.build_unflags} build_flags = ${common.build_flags} ${esp32_idf_V5.build_flags} -D WLED_RELEASE_NAME=\"ESP32_WROVER\" -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue ;; Older ESP32 (rev.<3) need a PSRAM fix (increases static RAM used) https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-guides/external-ram.html -D DATA_PINS=25 lib_deps = ${esp32_idf_V5.lib_deps} [env:esp32c3dev] extends = esp32c3 board = esp32-c3-devkitm-1 custom_usermods = audioreactive build_flags = ${common.build_flags} ${esp32c3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C3\" -D WLED_WATCHDOG_TIMEOUT=0 -DLOLIN_WIFI_FIX ; seems to work much better with this -DARDUINO_USB_CDC_ON_BOOT=1 ;; for virtual CDC USB ;-DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip upload_speed = 460800 build_unflags = ${esp32c3.build_unflags} lib_deps = ${esp32c3.lib_deps} board_build.flash_mode = dio ; safe default, required for OTA updates to 0.16 from older version which used dio (must match the bootloader!) [env:esp32c3dev_qio] extends = env:esp32c3dev build_flags = ${common.build_flags} ${esp32c3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-C3-QIO\" board_build.flash_mode = qio ; qio is faster and works on almost all boards (some boards may use dio to get 2 extra pins) [env:esp32s3dev_16MB_opi] ;; ESP32-S3 development board, with 16MB FLASH and >= 8MB PSRAM (memory_type: qio_opi) extends = esp32s3 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 custom_usermods = ${common.default_usermods} build_unflags = ${esp32s3.build_unflags} build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_16MB_opi\" -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") -DBOARD_HAS_PSRAM lib_deps = ${esp32s3.lib_deps} lib_ignore = ${esp32s3.lib_ignore} board_build.partitions = ${esp32.extreme_partitions} board_upload.flash_size = 16MB board_upload.maximum_size = 16777216 board_build.f_flash = 80000000L board_build.flash_mode = qio [env:esp32s3dev_8MB_opi] ;; ESP32-S3 development board, with 8MB FLASH and >= 8MB PSRAM (memory_type: qio_opi) extends = esp32s3 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 custom_usermods = ${common.default_usermods} build_unflags = ${esp32s3.build_unflags} build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_8MB_opi\" -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") -DBOARD_HAS_PSRAM lib_deps = ${esp32s3.lib_deps} lib_ignore = ${esp32s3.lib_ignore} board_build.partitions = ${esp32.large_partitions} board_build.f_flash = 80000000L board_build.flash_mode = qio [env:esp32s3dev_8MB_qspi] ;; generic ESP32-S3 board with 8MB FLASH and PSRAM (memory_type: qio_qspi). Try this one if esp32s3dev_8MB_opi does not work on your board extends = env:esp32s3dev_8MB_opi board_build.arduino.memory_type = qio_qspi board_build.flash_mode = qio build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_8MB_qspi\" -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") -DBOARD_HAS_PSRAM ;; -DLOLIN_WIFI_FIX ;; uncomment if you have WiFi connectivity problems [env:esp32s3dev_8MB_none] ;; ESP32-S3 development board, 8MB FLASH, no PSRAM extends = esp32s3 board = esp32-s3-devkitc-1 ;; generic dev board custom_usermods = ${common.default_usermods} build_unflags = ${esp32s3.build_unflags} -DBOARD_HAS_PSRAM ;; make sure PSRAM support is removed build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_8MB_none\" -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") board_build.f_flash = 80000000L board_build.flash_mode = qio [env:esp32S3_wroom2] ;; For ESP32-S3 WROOM-2, a.k.a. ESP32-S3 DevKitC-1 v1.1 ;; with >= 16MB FLASH and >= 8MB PSRAM (memory_type: opi_opi) extends = esp32s3 board = esp32s3camlcd ;; this is the only standard board with "opi_opi" board_build.arduino.memory_type = opi_opi upload_speed = 921600 custom_usermods = ${common.default_usermods} build_unflags = ${esp32s3.build_unflags} build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_WROOM-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") -DBOARD_HAS_PSRAM -D LEDPIN=38 -D DATA_PINS=38 ;; buildin WS2812b LED -D BTNPIN=0 -D RLYPIN=16 -D IRPIN=17 -D AUDIOPIN=-1 ;;-D WLED_DEBUG -D SR_DMTYPE=1 -D I2S_SDPIN=13 -D I2S_CKPIN=14 -D I2S_WSPIN=15 -D MCLK_PIN=4 ;; I2S mic lib_deps = ${esp32s3.lib_deps} lib_ignore = ${esp32s3.lib_ignore} board_build.partitions = ${esp32.extreme_partitions} board_upload.flash_size = 16MB board_upload.maximum_size = 16777216 [env:esp32S3_wroom2_32MB] ;; For ESP32-S3 WROOM-2 with 32MB Flash, and >= 8MB PSRAM (memory_type: opi_opi) extends = env:esp32S3_wroom2 build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_WROOM-2_32MB\" -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") -DBOARD_HAS_PSRAM -D LEDPIN=38 -D DATA_PINS=38 ;; buildin WS2812b LED -D BTNPIN=0 -D RLYPIN=16 -D IRPIN=17 -D AUDIOPIN=-1 ;;-D WLED_DEBUG -D SR_DMTYPE=1 -D I2S_SDPIN=13 -D I2S_CKPIN=14 -D I2S_WSPIN=15 -D MCLK_PIN=4 ;; I2S mic board_build.partitions = tools/WLED_ESP32_32MB.csv board_upload.flash_size = 32MB board_upload.maximum_size = 33554432 [env:esp32s3_4M_qspi] ;; ESP32-S3, with 4MB FLASH and <= 4MB PSRAM (memory_type: qio_qspi) extends = esp32s3 board = lolin_s3_mini ;; -S3 mini, 4MB flash 2MB PSRAM upload_speed = 921600 custom_usermods = ${common.default_usermods} build_unflags = ${esp32s3.build_unflags} build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_4M_qspi\" -DARDUINO_USB_CDC_ON_BOOT=1 ;; -DARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") -DBOARD_HAS_PSRAM -DLOLIN_WIFI_FIX ; seems to work much better with this -D WLED_WATCHDOG_TIMEOUT=0 lib_deps = ${esp32s3.lib_deps} lib_ignore = ${esp32s3.lib_ignore} board_build.partitions = ${esp32.default_partitions} board_build.f_flash = 80000000L board_build.flash_mode = qio [env:esp32s3_4M_none] ;; ESP32-S3 with 4MB FLASH, no PSRAM extends = esp32s3 board = esp32-s3-devkitc-1 custom_usermods = audioreactive build_unflags = ${esp32s3.build_unflags} -D BOARD_HAS_PSRAM ;; make sure PSRAM support is removed build_flags = ${common.build_flags} ${esp32s3.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_4M_none\" -DARDUINO_USB_CDC_ON_BOOT=1 ;; -DARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") -DLOLIN_WIFI_FIX ; seems to work much better with this -D WLED_WATCHDOG_TIMEOUT=0 board_build.partitions = ${esp32.default_partitions} board_build.f_flash = 80000000L board_build.flash_mode = qio [env:lolin_s2_mini] extends = esp32s2 board = lolin_s2_mini board_build.flash_mode = qio board_build.f_flash = 80000000L custom_usermods = ${common.default_usermods} build_unflags = ${esp32s2.build_unflags} build_flags = ${common.build_flags} ${esp32s2.build_flags} -D WLED_RELEASE_NAME=\"ESP32-S2\" -DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 -DBOARD_HAS_PSRAM -DLOLIN_WIFI_FIX ; seems to work much better with this -D WLED_WATCHDOG_TIMEOUT=0 -D DATA_PINS=16 -D HW_PIN_SCL=35 -D HW_PIN_SDA=33 -D HW_PIN_CLOCKSPI=7 -D HW_PIN_DATASPI=11 -D HW_PIN_MISOSPI=9 ; -D STATUSLED=15 lib_deps = ${esp32s2.lib_deps} lib_ignore = ${esp32s2.lib_ignore} [env:usermods] extends = env:esp32dev_V4 ; ToDO: fix usermods build once the main V5 build works without errors and warnings build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} -D WLED_RELEASE_NAME=\"ESP32_USERMODS\" -DTOUCH_CS=9 custom_usermods = * ; Expands to all usermods in usermods folder board_build.partitions = ${esp32.extreme_partitions} ; We're gonna need a bigger boat [env:usermods_V5] ;; this is experimental extends = env:esp32p4_32MB build_flags = ${common.build_flags} ${esp32p4.build_flags} -D WLED_RELEASE_NAME=\"ESP32P4_USERMODS_V5\" -D BOARD_HAS_PSRAM -DTOUCH_CS=9 -DWLED_USE_SD_SPI ;; help a few usermods that require special flags to compile custom_usermods = * ; Expands to all usermods in usermods folder # ------------------------------------------------------------------------------ # Hub75 examples # ------------------------------------------------------------------------------ # Note: some panels may experience ghosting with default full brightness. use -D WLED_HUB75_MAX_BRIGHTNESS=239 or lower to fix it. [hub75] ;; Shared values for all HUB75 build envs. ;; Core HUB75 flags - common to every HUB75 build build_flags = -D WLED_ENABLE_HUB75MATRIX -D NO_GFX -D NO_CIE1931 ;; disable driver-internal gamma correction -D WLED_DEBUG_BUS -D LED_TYPES=TYPE_HUB75MATRIX_HS ; -D WLED_DEBUG ;; Default I2S mic pins disabled (HUB75 uses GPIOs that would otherwise clash). ;; Envs that wire up a real mic should NOT include this and define I2S_*PIN themselves. i2s_disable_flags = -D SR_DMTYPE=1 -D I2S_SDPIN=-1 -D I2S_CKPIN=-1 -D I2S_WSPIN=-1 -D MCLK_PIN=-1 ;; Disable to prevent pin clash ;; Pinned HUB75 driver libraries lib_deps = https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA.git#f17fb7fe9d487e9643f919eb5aeedea8d9d1f8d7 ;; 3.0.14 ;; Extra flags shared by all S3-based HUB75 builds s3_build_flags = -DARDUINO_USB_CDC_ON_BOOT=1 ;; -DARDUINO_USB_MODE=1 ;; for boards with USB-OTG connector only (USBCDC or "TinyUSB") -DBOARD_HAS_PSRAM -DLOLIN_WIFI_FIX ; seems to work much better with this (sets lower TX power) -D WLED_WATCHDOG_TIMEOUT=0 -D S3_LCD_DIV_NUM=20 ;; Attempt to fix wifi performance issue when panel active with S3 chips [env:esp32dev_hub75] extends = env:esp32dev_V4 upload_speed = 921600 build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} ${hub75.build_flags} ${hub75.i2s_disable_flags} -DARDUINO_USB_CDC_ON_BOOT=0 ;; this flag is mandatory for "classic ESP32" when building with arduino-esp32 >=2.0.3 -D WLED_RELEASE_NAME=\"ESP32_HUB75\" lib_deps = ${esp32_idf_V4.lib_deps} ${hub75.lib_deps} [env:esp32dev_hub75_forum_pinout] extends = env:esp32dev_hub75 build_flags = ${common.build_flags} ${esp32_idf_V4.build_flags} ${hub75.build_flags} ${hub75.i2s_disable_flags} -DARDUINO_USB_CDC_ON_BOOT=0 -D WLED_RELEASE_NAME=\"ESP32_HUB75_forum_pinout\" -D ESP32_FORUM_PINOUT ;; enable for SmartMatrix default pins [env:esp32s3dev_4MB_qspi_hub75] ; HD-WF2 - NOTE: this board has NO PSRAM, so BOARD_HAS_PSRAM must not be set ; (BOARD_HAS_PSRAM causes the DMA library to allocate only in SPIRAM, which fails without PSRAM) extends = env:esp32s3dev_8MB_qspi board_build.partitions = ${esp32.extended_partitions} ;; 1.65MB firmware, 700KB filesystem - only 4MB flash usable on this board build_unflags = ${esp32s3.build_unflags} -DBOARD_HAS_PSRAM build_flags = ${common.build_flags} ${esp32s3.build_flags} ${hub75.build_flags} ${hub75.s3_build_flags} ${hub75.i2s_disable_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_HD-WF2\" -D HD_WF2_PINOUT ;; Huidu HD-WF2 specific GPIO wiring lib_deps = ${esp32s3.lib_deps} ${hub75.lib_deps} [env:adafruit_matrixportal_esp32s3] ; ESP32-S3 processor, 8 MB flash, 2 MB of PSRAM, dedicated driver pins for HUB75 extends = env:esp32s3dev_8MB_qspi board = adafruit_matrixportal_esp32s3_wled ; modified board definition: removed flash section that causes FS erase on upload build_flags = ${common.build_flags} ${esp32s3.build_flags} ${hub75.build_flags} ${hub75.s3_build_flags} ${hub75.i2s_disable_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_Adafruit_Matrixportal\" -D ARDUINO_ADAFRUIT_MATRIXPORTAL_ESP32S3 lib_deps = ${esp32s3.lib_deps} ${hub75.lib_deps} ;; board_build.partitions = tools/partitions-8MB_spiffs-tinyuf2.csv ;; supports adafruit UF2 bootloader [env:waveshare_esp32s3_32MB_hub75] ;; Waveshare ESP32-S3-RGB-Matrix (memory_type: opi_opi); see https://docs.waveshare.com/ESP32-S3-RGB-Matrix extends = env:esp32S3_wroom2_32MB monitor_filters = esp32_exception_decoder build_unflags = ${env:esp32S3_wroom2_32MB.build_unflags} -D WLED_RELEASE_NAME=\"ESP32-S3_WROOM-2_32MB\" ;; need to un-set the relese name before setting a new one custom_usermods = Internal_Temperature audioreactive = https://github.com/MoonModules/WLED-AudioReactive-Usermod#8d988e985901e00a0a92e119aaa8e3249f817754 ;; SR_DMTYPE 254 fix SHTC3_v2 = https://github.com/lost-hope/SHTC3_v2/commit/1f6e3fc7d6135b704aa41fadf09a36cbf6712834 build_flags = ${common.build_flags} ${esp32s3.build_flags} ${hub75.build_flags} ${hub75.s3_build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_Waveshare_HUB75\" -D WAVESHARE_S3_PINOUT -D BTNPIN=0 -D I2CSDAPIN=47 -D I2CSCLPIN=48 -D SR_DMTYPE=9 -D I2S_SDPIN=39 -D I2S_CKPIN=43 -D I2S_WSPIN=38 -D MCLK_PIN=12 ; Waveshare ES8311 Codec pins -D UM_SD_SELECT=14 -D UM_SD_CLOCK=1 -D UM_SD_POCI=17 -D UM_SD_PICO=44 ; Waveshare SD Card pins ** Requires updated sd_card from this PR https://github.com/wled/WLED/pull/5679 ** -D WLED_USE_SD_SPI -D SD_PRINT_HOME_DIR ; -D WLED_DEBUG lib_deps = ${esp32s3.lib_deps} ${hub75.lib_deps} [env:esp32s3dev_16MB_opi_hub75] ;; MOONHUB HUB75 adapter board (lilygo T7-S3 with 16MB flash and octal PSRAM) extends = env:esp32s3dev_8MB_opi board = lilygo-t7-s3 board_build.partitions = ${esp32.extreme_partitions} ;; for 16MB flash (overrides large_partitions for 8MB) ;; Note: real I2S mic pins are wired here, so we do NOT include ${hub75.i2s_disable_flags}. build_flags = ${common.build_flags} ${esp32s3.build_flags} ${hub75.build_flags} ${hub75.s3_build_flags} -D WLED_RELEASE_NAME=\"ESP32-S3_16MB_opi_HUB75\" -D MOONHUB_S3_PINOUT ;; HUB75 pinout -D LEDPIN=14 -D BTNPIN=0 -D RLYPIN=15 -D IRPIN=-1 -D AUDIOPIN=-1 ;; defaults that avoid pin conflicts with HUB75 -D SR_DMTYPE=1 -D I2S_SDPIN=10 -D I2S_CKPIN=11 -D I2S_WSPIN=12 -D MCLK_PIN=-1 ;; I2S mic lib_deps = ${esp32s3.lib_deps} ${hub75.lib_deps}