-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
π Add new MCU support (C6 and C5) to the ESP-IDF V5 builds #5048
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
base: V5
Are you sure you want to change the base?
Changes from 109 commits
9649125
0f10558
cf195af
db65e30
fa5aa58
152bfd1
1bc63ca
6961059
45d105e
b2d6591
62ca377
7023545
1de36ca
2df4c58
3f441f0
c73935d
c096c5b
5ecf76c
bc4b6b6
7b54be8
9f12301
f88fd07
d3e92f2
ec44fd1
c92abb8
e4d6848
d2c1313
4ebbd86
2f267a8
cf09c0d
01b1c51
8268c4a
11f5be1
35706f0
5137768
d2e6a56
1a025f5
f0acc62
83c37f8
6cefd14
16262ee
b2e0c24
a1a1905
a3a3547
b860a1a
20dd750
e9b1a53
8b98a7a
0920f0f
b30951e
6b9f90c
3c24681
9232bd4
be49f34
1800a32
9d63296
d7ab1f4
7370c10
8159768
d8616e6
5b46b9c
576e82b
e104529
6e70d0c
b72568f
d3251c5
f02e6b6
b128585
ab65e9f
ed6b82b
7014d4f
edf0cbe
d823ab4
cd911ae
4f9c48f
71cf78b
546384b
1009855
c6739d3
08ca41b
a39285a
703b90f
f8df68c
b730ce8
e046316
f8a6790
55eee94
46a1b2f
ede8a14
deaae11
5e073ce
c1dddea
7ce497b
967f6ab
3de117b
1bda0bf
acc98d4
cffc57e
a425b97
9959f75
2820331
2802f8c
0c6c66b
ed0fadd
5c9803d
aadabe9
2123389
3abd8c7
491546b
d3b8d96
2ce3870
fb877ad
c76cb5c
8fcdbe6
511ff78
fc313e1
d4b0360
27a6fad
fc2ffed
2af98d4
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -27,6 +27,10 @@ default_envs = | |
| esp32_wrover | ||
| lolin_s2_mini ;; TODO: disabled NeoEsp32RmtMethodIsr | ||
| esp32c3dev | ||
| esp32c6dev_4MB | ||
| esp32c5dev | ||
| esp32p4_16MB ;; P4 360 Mhz 16MB flash - experimental | ||
| ; esp32P4_400 ;; P4 rev3 400 Mhz - not usable yet | ||
| ; esp32s3dev_16MB_opi ;; TODO: disabled NeoEsp32RmtMethodIsr | ||
| ; esp32s3dev_8MB_opi ;; TODO: disabled NeoEsp32RmtMethodIsr | ||
| ; esp32s3_4M_qspi ;; TODO: disabled NeoEsp32RmtMethodIsr | ||
|
|
@@ -169,6 +173,7 @@ upload_speed = 115200 | |
| lib_compat_mode = strict | ||
| lib_deps = | ||
| fastled/FastLED @ 3.10.1 | ||
| ;; https://github.com/softhack007/FastLED.git#ESP32-C6 ;; patched version for -C6 | ||
| ; IRremoteESP8266 @ 2.8.2 ;; TODO: add back | ||
| ;; neopixelbus dependancy moved into [8266] and [esp32_all_variants] sections | ||
| https://github.com/Aircoookie/ESPAsyncWebServer.git#v2.4.2 | ||
|
|
@@ -385,6 +390,217 @@ 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 | ||
|
|
||
|
|
||
| [esp32c5] | ||
| ;; generic definitions for all ESP32-C5 boards | ||
| ;; NOTE: ESP32-C5 requires pioarduino platform (Tasmota framework doesn't include C5 Arduino libs yet) | ||
| platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.36/platform-espressif32.zip | ||
| platform_packages = | ||
| 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 | ||
| -Wshadow=compatible-local | ||
| -DARDUINO_ARCH_ESP32 | ||
| -DARDUINO_ARCH_ESP32C5 | ||
| -DCONFIG_IDF_TARGET_ESP32C5=1 | ||
| -D CONFIG_ASYNC_TCP_USE_WDT=0 | ||
| -DCO | ||
| ;; 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 = | ||
| ;; NB: we spell out deps explicitly (instead of ${esp32_idf_V5.lib_deps}) to replace | ||
| ;; the upstream NeoPixelBus with a C5-patched fork; using both causes duplicate compilation. | ||
| ;; TODO: remove the temporarily Override below once NeoPixelBus has official support for -C5 | ||
| ;; ${esp32_all_variants.lib_deps} | ||
| esp32async/AsyncTCP @ 3.4.6 | ||
| bitbank2/AnimatedGIF@^1.4.7 | ||
| https://github.com/Aircoookie/GifDecoder.git#bc3af189b6b1e06946569f6b4287f0b79a860f8e | ||
| https://github.com/jonny190/NeoPixelBus.git#wled-c5-stable ;; wled-c5-stable for C5 support: I2S exclusion, bit-bang CSR/GPIO, channel ctor overload | ||
| https://github.com/netmindz/esp_dmx/#esp-idf-v5-fixes | ||
| ${env.lib_deps} | ||
|
Comment on lines
+421
to
+423
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. π§© Analysis chainπ Script executed: #!/bin/bash
set -euo pipefail
REPO="https://github.com/jonny190/NeoPixelBus.git"
BRANCH="wled-c5-stable"
echo "== Resolved branch head =="
git ls-remote "$REPO" "refs/heads/$BRANCH"
tmpdir="$(mktemp -d)"
git clone --depth 1 --branch "$BRANCH" "$REPO" "$tmpdir/NeoPixelBus"
echo "== Inspect C5/RMT channel handling in fork =="
rg -n -C2 "channel|RMT|tx|TX|constructor" "$tmpdir/NeoPixelBus" -g '*Rmt*' -g '*.h' -g '*.cpp'
echo ""
echo "== Commit info =="
cd "$tmpdir/NeoPixelBus"
git log --oneline -5
cd - > /dev/null
# Cleanup
rm -rf "$tmpdir"Repository: wled/WLED Length of output: 50495 π Script executed: #!/bin/bash
set -euo pipefail
REPO="https://github.com/jonny190/NeoPixelBus.git"
BRANCH="wled-c5-stable"
tmpdir="$(mktemp -d)"
git clone --depth 1 --branch "$BRANCH" "$REPO" "$tmpdir/NeoPixelBus"
echo "== Commit details =="
cd "$tmpdir/NeoPixelBus"
git log --oneline -1
git log -1 --pretty=fuller
echo ""
echo "== Looking for RMT method files with C5 constructor overload =="
find . -name "*Rmt*.h" -type f | head -10
echo ""
echo "== C5-specific RMT constructor in NeoEsp32RmtHI =="
if [ -f "lib/NeoESP32RmtHI/include/NeoEsp32RmtHIMethod.h" ]; then
grep -n "NeoEsp32RmtHIMethod.*NeoBusChannel\|construct\|channel" "lib/NeoESP32RmtHI/include/NeoEsp32RmtHIMethod.h" | head -30
else
echo "File not found at expected path; listing alternatives:"
find . -name "*RmtHI*.h" -o -name "*RmtHI*.cpp" | head -5
fi
cd - > /dev/null
rm -rf "$tmpdir"Repository: wled/WLED Length of output: 1157 π Script executed: #!/bin/bash
set -euo pipefail
REPO="https://github.com/jonny190/NeoPixelBus.git"
BRANCH="wled-c5-stable"
tmpdir="$(mktemp -d)"
git clone --depth 1 --branch "$BRANCH" "$REPO" "$tmpdir/NeoPixelBus"
echo "== Searching for C5 and TX-channel logic =="
cd "$tmpdir/NeoPixelBus"
rg -i "c5|tx.*channel|channel.*tx" --max-count=15 -A 2 src/internal/methods/ESP/ESP32/
echo ""
echo "== NeoEsp32RmtXMethod.h header (constructor section) =="
head -150 src/internal/methods/ESP/ESP32/NeoEsp32RmtXMethod.h | tail -80
echo ""
echo "== Git log (last 10 commits) =="
git log --oneline -10
cd - > /dev/null
rm -rf "$tmpdir"Repository: wled/WLED Length of output: 14493 Pin the C5 NeoPixelBus dependency to commit Using a moving branch ( Note: The fix on this branch is a BitBang constructor overload accepting π€ Prompt for AI Agents |
||
| lib_ignore = ${esp32_idf_V5.lib_ignore} | ||
| esp_dmx ;; esp_dmx library doesn't support C5 UART registers yet | ||
| extra_scripts = ${scripts_defaults.extra_scripts} | ||
softhack007 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| [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 | ||
|
|
||
| ;; board = esp32-c6-devkitm-1 ;; board must be defined in the lower-level [env:*] buildenvs for C6-based boards | ||
| build_unflags = ${esp32_idf_V5.build_unflags} | ||
| build_flags = -g | ||
| -DARDUINO_ARCH_ESP32 | ||
| -DARDUINO_ARCH_ESP32C6 | ||
| -DCONFIG_IDF_TARGET_ESP32C6=1 | ||
| -D CONFIG_ASYNC_TCP_USE_WDT=0 | ||
| -DCO | ||
softhack007 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| -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} | ||
|
|
||
| [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. TODO: make wifi work by using esp-hosted networking | ||
| ;; 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 = | ||
| 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 | ||
| -DARDUINO_ARCH_ESP32 | ||
| -DARDUINO_ARCH_ESP32P4 | ||
| -DCONFIG_IDF_TARGET_ESP32P4=1 | ||
| -D CONFIG_ASYNC_TCP_USE_WDT=0 | ||
| -DCO | ||
| -DARDUINO_USB_MODE=1 ;; this flag is - most likely - mandatory for ESP32-P4 | ||
| -DFASTLED_NO_FASTLED ;; toDO: temporary hack for softhack007 patched fastled | ||
| -D WLED_DISABLE_INFRARED ;; library not compatible with -P4 | ||
| -D WLED_DISABLE_ESPNOW ;; not yet tested | ||
| ;; 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} | ||
| https://github.com/softhack007/FastLED.git#ESP32-C6 ;; patched version - only math, no hardware drivers | ||
| lib_ignore = ${esp32_idf_V5.lib_ignore} | ||
| IRremoteESP8266 ; TODo: remove once we have a version thats compatible | ||
| QuickEspNow ; ToDO: disabled until we find a compatible version | ||
| esp_dmx ; ToDO: disabled until we find a compatible version | ||
| FastLED ; ToDO: repaces fastled with no_fastled (softhack007) | ||
|
|
||
softhack007 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| [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\" | ||
| -Wno-volatile -Wno-deprecated-declarations ;; silence compiler warnings | ||
| ;; -Wno-cpp ;; silence '#pragma warning' messages | ||
| ;;-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 | ||
| -D WLED_DISABLE_INFRARED ;; library not not compatible with -C6 | ||
| -D WLED_DISABLE_ESPNOW ;; ToDO: temporarily disabled, until we find a solution for esp-now build errors with -C6 | ||
| upload_speed = 460800 | ||
| lib_deps = ${esp32c6.lib_deps} | ||
| lib_ignore = ${esp32c6.lib_ignore} | ||
| IRremoteESP8266 ; use with WLED_DISABLE_INFRARED for faster compilation | ||
| QuickEspNow ; ToDO: disabled until we find a compatible version | ||
|
|
||
| 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\" | ||
| monitor_filters = esp32_exception_decoder | ||
|
|
||
softhack007 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| [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\" | ||
| -Wno-volatile -Wno-deprecated-declarations | ||
| -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_DISABLE_INFRARED ;; library not compatible with -C5 | ||
| -D WLED_DISABLE_ESPNOW ;; not yet tested | ||
| -D WLED_DEBUG | ||
| lib_ignore = ${esp32c5.lib_ignore} | ||
| IRremoteESP8266 | ||
| QuickEspNow | ||
|
|
||
| board_build.partitions = ${esp32.big_partitions} | ||
| upload_speed = 460800 | ||
| monitor_filters = esp32_exception_decoder | ||
softhack007 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| [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\" | ||
| -Wno-volatile -Wno-deprecated-declarations | ||
| -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_DISABLE_INFRARED ;; library not compatible with -C5 | ||
| -D WLED_DISABLE_ESPNOW ;; not yet tested | ||
| -D WLED_DEBUG | ||
| lib_ignore = ${esp32c5.lib_ignore} | ||
| IRremoteESP8266 | ||
| QuickEspNow | ||
|
|
||
| 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 | ||
|
|
||
| board_build.flash_mode = qio | ||
| ;;board_build.arduino.memory_type = qio_qspi ;; should actually be opi_hpi | ||
| board_build.partitions = ${esp32.extreme_partitions} ;; for 16MB Flash | ||
| ;;board_build.f_cpu = 400000000L ;; to enforce 400Mhz CPU speed | ||
| build_unflags = ${esp32p4.build_unflags} | ||
| ;; -DCORE_DEBUG_LEVEL=0 | ||
| build_flags = ${esp32p4.build_flags} -D WLED_RELEASE_NAME=\"ESP32-P4_16MB\" -DBOARD_HAS_PSRAM | ||
| ;; -D WLED_DEBUG | ||
| ;; -DCORE_DEBUG_LEVEL=5 | ||
| lib_ignore = ${esp32p4.lib_ignore} | ||
| upload_speed = 460800 | ||
| monitor_filters = esp32_exception_decoder | ||
|
|
||
|
|
||
| [esp32s3] | ||
| ;; generic definitions for all ESP32-S3 boards | ||
| platform = ${esp32_idf_V5.platform} | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ToDO: this is a temporary hack - the root cause is solved in the latest pioarduino (and tasmota, too?). Remember to revert this change once we upgrade to latest platform packages.