Happy New Year! 🥂
I hope you had a great holiday, spending time with your loved ones. We're starting into 2026 with a bunch of bug fixes and improvements for WLED-MM that we've been working on over the last year. As always, our goal is to deliver the best experience on exciting hardware, especially HUB75 and large audioreactive LED installations. The HUB75 rig I'm using at the moment is a 192x64 matrix (3 chained 64x64 modules), powered by an ESP32-S3 with PSRAM and 16MB flash memory (MoonHub adapter by @lost-hope). In most effects, WLED-MM is able to deliver solid 25-45fps on this setup, even when receiving a real-time DDP stream.
We've made network protocols like DDP and Art-Net more stable and perform better. And Audioreactive has become better again. Scrolling text made the first baby steps towards supporting multi-language and unicode letters in PR #282. Many WS2812b LEDs are now working flicker-free thanks to a new RMT driver by @willmmiles in PR #308. Particle-FX from upstream are integrated into WLED-MM now (thanks @DedeHai).
Finally, we're saying goodbye to 8266 with this release. The code still compiles for 8266, but there was hardly any testing on 8266 boards.
Our firmware builds now default to the newer "V4" Espressif framework. We suggest using "V4" builds on classic esp32; esp32-S3/-S2/-C3 were always using "V4" so all our builds are now based in the same framework. If you're having problems updating your esp32 from upstream WLED 0.15, try the "ESP32_compat" build. It has fewer features and lower performance, but it's meant to be OTA compatible with upstream 0.15.x.
Highlights
- Realtime Mode (DDP, Art-Net, etc) stability and performance improvements
- New Particle-FX (upstream backport)
- GIF Player image effect and PixelForge tool (upstream 0.16 backport)
- flicker-free LEDs driver for esp32 and esp32-S3 (upstream 0.15.4 backport, "V4" builds only)
- No more corrupted presets!
- effect improvements and speedups for large fixtures
- Audioreactive sound sync: reduced latency, better handling of datastream
- Moved to newer "V4" framework for improved stability and better performance
what's the difference to Aircoookie/WLED ?
WLED-MM is a fork that concentrates on supporting large installs and advanced audio analysis. We also use our fork for trying new ideas, that may later become part of WLED upstream. Due to chip capabilities, we mainly use "classic" esp32 and ESP32-S3 with PSRAM, or esp32-s2 for smaller setups. Esp32-C3 is supported however usually we don't spend time optimizing for it.
If you have an esp32-P4 board, you might want to try the high-performance ESP32-P4 fork by @troyhacks.
We work closely with upstream WLED developers, and our ultimate goal is for all WLED-MM improvements to be included in future releases of WLED.
Firmware binaries:
firmware images for common boards are included in the "Assets" section - click on "show all assets" to see them all (~31 files). Please be aware that boards with 4MB flash will have some features disabled due to flash size limits. A detailed list of "what's included in each build" is in work 😅, and will be added here once it's done.
What's Next
Our current feature / bugfix plans for the next two releases are here:
What's Changed (PRs)
Audioreactive
- Fixes for ES8311 auto level control by @troyhacks in #208
- ES8311 Init Fix by @troyhacks in #257
- Fix AutoPlaylist race condition with AutoChange preset applications by @Copilot in #264
- receiveAudioData() process latest packet only by @troyhacks in #231
- AR Sound receive: better management of outdated packets by @softhack007 in #314
Effects
- Full "high ASCII" support for scrolling text by @softhack007 in #282
- Adding Particle System (port from AC) by @DedeHai in #237
- bugfix for very low brightness in PS FX by @DedeHai in #252
- ParticleFX: adding fixes and improvements from AC by @DedeHai in #276
- GIF Playback by @netmindz in #226
- gifdecoder bugfixes, up to 30% speedup, and minor improvements by @softhack007 and @DedeHai in #279
- Pixelforge backport, UI stability improvements, speedup for UDP real-time receiving by @softhack007 in #293
Optimizations and Bugfixes
- RMTHI High-priority Interrupt driver - solves flickering problems on esp32, esp32-S2 and esp32-S3 by @willmmiles in #308
- Bus level setPixelColor and getPixelColor optimizations by @softhack007 in #269
- disable SPC optimizations when outputs overlap (solves #296) by @softhack007 in #315
- Art-Net Improvements and Other Fixes by @troyhacks in #236
- Ethernet Fixes IDFv4 by @troyhacks in #230
Build Environment and Tools
- Implement conditional ARDUINO_USB_MODE: dev=1, release=removed for USB-OTG boards with production warnings by @Copilot in #263
- Mdev v4 only by @netmindz in #244
- esp32_4MB_V4_S_eth by @SpecOp6 in #217
- esp32_4MB_V4_S_eth by @netmindz in #213
- Add deviceId by @netmindz in #284
- Upgrade reporting by @netmindz in #286
- Backport version reporting (PR wled#5093 and wled#5111) to 0.15.x by @netmindz in wled#5126
- Repo info by @netmindz in #313
- 404 mystery (implements #288) by @softhack007 in #289
From Upstream WLED
- Add correct pin availability for ESP32 Mini modules by @ladyada in wled#4450
- bugfix: do not reset segments if unchanged by @DedeHai in wled#4969
- Add must-revalidate to Cache-Control header and use WEB_BUILD_TIME for ETag to fix stale UI after firmware updates in wled#5120
- Adding Shimmer FX by @DedeHai in wled#4923
- Adding perlin noise replacement for fastled functions by @DedeHai in wled#4594
- improved & refactored Android FX by @DedeHai in wled#4522
- Update to distortionwave FX by @DedeHai in wled#4693
- Soap FX optimization by @DedeHai in wled#4543
- Add segment checkmarks to differs check by @blazoncek in wled#5031
- Random colors via JSON API in Segment object like "col":["r","r","r"] by @AlexeyMal in wled#4996
- Add Gledopto Series With Ethernet by @Aogu181 in wled#5156
- Adding DDP over WS by @DedeHai in wled#4997
Full Changelog: v14.5.0-beta...v14.7.1