WLED LED Controller
This lab guides students through the configuration, interfacing, and deployment of an intelligent, network-connected lighting control system using Espressif ESP32 and ESP8266 microcontrollers. Students interface addressable digital RGB/RGBW LED strips and HUB75 matrix panels with embedded hardware, incorporating logic level shifters, rotary encoders, infrared receivers, and I2S digital microphones for real-time sound-reactive animations. Through hands-on experimentation, students evaluate high-current DC power distribution constraints, build and flash firmware using PlatformIO, and integrate network communication over Wi-Fi and Ethernet using lighting and automation protocols including Art-Net, sACN (E1.31), DDP, and MQTT. The lab reinforces core concepts in embedded systems integration, digital bus communication, digital audio sampling, and real-time Internet of Things networking.
Uploaded by demo on 2026-09-03 · ready · Electronics · Original source ↗
Files: package.json · platformio.ini · readme.md
Readiness checks
-
complete 2026-09-03 18:36 🛡 Cybersecurity: Review before networking · 7 findings 31 searches · 8 pagesview · PDF
Latest report — 2026-09-03 18:36
Readiness: WLED LED Controller
Verdict: Ready with caveats · 2026-09-03 · est. parts cost $25–$120 (one host board, one 5 m strip and a level shifter at the low end; adding the microphone, remote, encoder, OLED and temperature sensor at the high end) Cybersecurity — software & network: Review before networking
Every function this lab needs has an in-stock, evidence-backed source today. The recommended primary host (ESP32-DevKitC-32E) and the default ESP8266 build target (NodeMCU v2) are both readily available, as are the LED strips, HUB75 panels, IR receiver and remote, rotary encoder, OLED display, temperature sensor and level shifter. Five catalogue lines came back Obsolete with zero stock corroborated across at least two authorized distributors, but four of them have an in-stock successor verified this run, and all five are alternative or experimental host targets rather than the build the lab recommends — the snapshot asks for one host board out of eleven listed, so an obsolete alternative is a catalogue problem, not a blocker. The caveats are the ESP32-P4 successor, whose stock is unconfirmed at $59.92, and the audio-reactive microphone, which rests on end-of-life MEMS silicon whichever of the three sensors the snapshot names you choose. This is the cold check for this lab: there is no previous report, so these prices and stock levels establish the baseline that the next run will measure drift against.
Action required
| Part | Problem | Recommended action |
|---|---|---|
| ESP32-C3-DEVKITM-1 | Obsolete; 0 stock at DigiKey and Mouser (ECIA lifecycle risk High) | Order ESP32-C3-DEVKITM-1-N4X, $8.00, stock 95 instead — same board family and price, meets the 4 MB flash minimum |
| ESP32-S3-DEVKITC-1-N8 | Obsolete and unpriced; 0 stock at DigiKey and Mouser | Order ESP32-S3-DEVKITC-1-N8R8, $15.00; build with the esp32s3dev_8MB_opi environment, not _qspi, because the substitute adds octal PSRAM |
| ESP32-C5-DEVKITC-1-N8R4 | Obsolete; 0 stock at DigiKey and Mouser | Order the manufacturer's successor ESP32-C5-DEVKITC-1-N8R8, $14.37, stock 72 |
| ESP32-P4-FUNCTION-EV-BOARD | Obsolete; 0 stock, 16-week factory lead time | Successor ESP32-P4X-FUNCTION-EV-BOARD, $59.92 is Active but DigiKey reports no stock figure — confirm availability before ordering, and prefer any other host board for coursework |
| INMP441ACEZ-R7 (microphone) | Obsolete; 0 stock at DigiKey (19-week lead) and Mouser | Buy a finished breakout instead: Adafruit 6049 I2S MEMS Microphone Breakout, $8.95, stock 907. Generic retail INMP441 modules also remain plentiful from $1.23 |
Cybersecurity — software & network
Review before networking — The controller exposes an unauthenticated web interface, opt-in-only OTA protection and six network listeners by design, and the build host runs an end-of-life Node.js, but every issue has a practical mitigation and no advisory this run touches the firmware that runs on the device.
| Component | Version | How known | Support status |
|---|---|---|---|
| WLED firmware (source tree, github.com/wled/WLED) | 17.0.0-devV5 | inferred (The repo's package.json declares version 17.0.0-devV5 for the 'Tools for WLED project' package; the firmware binary's own version is not separately pinned in the fetched sources.) | — |
| Node.js (web asset build host) | 20.18 | read from project (fetched/01-.nvmrc pins 20.18 (package.json engines separately declares the range >=20.0.0)) | unsupported since 2026-04-30 |
| PlatformIO Core / CLI | 6.1.19 | read from project (fetched/04-requirements.txt pins platformio==6.1.19) | — |
| Python 3 (PlatformIO helper scripts, build host) | 3.13 | inferred (fetched/04-requirements.txt header records it was generated by pip-compile with Python 3.13; the sources pin no Python runtime version.) | supported until 2029-10-31 |
| clean-css (npm) | 5.3.3 | read from project (fetched/03-package-lock.json pins 5.3.3; package.json declares the caret range ^5.3.3) | — |
| html-minifier-terser (npm) | 7.2.0 | read from project (fetched/03-package-lock.json pins 7.2.0; package.json declares the caret range ^7.2.0) | — |
| web-resource-inliner (npm) | 7.0.0 | read from project (fetched/03-package-lock.json pins 7.0.0; package.json declares the caret range ^7.0.0) | — |
| nodemon (npm, dev) | 3.1.14 | read from project (fetched/03-package-lock.json pins 3.1.14; package.json declares the caret range ^3.1.14) | — |
| click (PyPI, via PlatformIO/uvicorn) | 8.1.7 | read from project (fetched/04-requirements.txt pins click==8.1.7) | — |
| starlette (PyPI, via PlatformIO) | 0.46.2 | read from project (fetched/04-requirements.txt pins starlette==0.46.2) | — |
| urllib3 (PyPI, via requests) | 2.5.0 | read from project (fetched/04-requirements.txt pins urllib3==2.5.0) | — |
| idna (PyPI, via anyio/requests) | 3.10 | read from project (fetched/04-requirements.txt pins idna==3.10) | — |
| marshmallow (PyPI, via PlatformIO) | 3.26.1 | read from project (fetched/04-requirements.txt pins marshmallow==3.26.1) | — |
| Espressif 8266 platform (PlatformIO) | 4.2.1 | inferred (fetched/05-platformio.ini pins espressif8266@4.2.1; compatibility builds pin espressif8266@4.2.0; validation: this version appears in no file fetched this run) | — |
| Tasmota / pioarduino ESP32 platform packages | not determined | not determined (fetched/05-platformio.ini pins these by release-URL zip tag (Tasmota 2024.06.00 and 2026.05.50; pioarduino 55.03.39 and 55.03.37), not by a registry version.) | — |
| IRremoteESP8266 (Arduino library) | 2.9.0 | inferred (fetched/05-platformio.ini pins crankyoldgit/IRremoteESP8266@2.9.0; validation: this version appears in no file fetched this run) | — |
| AsyncTCP (Arduino library, ESP32) | 3.4.10 | inferred (fetched/05-platformio.ini pins esp32async/AsyncTCP@3.4.10; validation: this version appears in no file fetched this run) | — |
| AsyncMqttClient (Arduino library) | 0.9.0 | read from project (fetched/05-platformio.ini pins version 0.9.0) | — |
| ESPAsyncTCP (Arduino library, ESP8266) | 1.2.2 | inferred (fetched/05-platformio.ini pins version 1.2.2; validation: this version appears in no file fetched this run) | — |
| AnimatedGIF (Arduino library) | 1.4.7 | inferred (fetched/05-platformio.ini declares bitbank2/AnimatedGIF@^1.4.7 - a caret range, not an exact pin, so the built version may be any 1.x above 1.4.7.) | — |
| ESPAsyncWebServerWLED (Git checkout) | ac44e32abf2a69ae650412fb6bc193c59ccac38a | inferred (fetched/05-platformio.ini pins this Git commit of github.com/Aircoookie/ESPAsyncWebServer; validation: this version appears in no file fetched this run) | — |
| NeoPixelBus (Git checkout) | 1d7ff38f14d04a976f9c6e365c83a232bcba04fc | inferred (fetched/05-platformio.ini pins this Git commit of github.com/Makuna/NeoPixelBus; validation: this version appears in no file fetched this run) | — |
| ArduinoJson (vendored in source tree) | 5.13.5 | inferred (fetched/05-platformio.ini records the vendored copy as version 5.13.5; validation: this version appears in no file fetched this run) | — |
| esp_dmx (ESP32 IDF V5 branch checkout) | not determined | unpinned (fetched/05-platformio.ini references github.com/netmindz/esp_dmx#esp-idf-v5-fixes - a moving branch with no commit or version pin.) | — |
| Component | Finding | Severity | Fix available? |
|---|---|---|---|
| click (PyPI, via PlatformIO/uvicorn) | The build toolchain installs click 8.1.7, whose click.edit() function can be used to run arbitrary operating-system commands - it only bites on the build machine, and only where an unprivileged user can influence what the toolchain opens in an editor. — PYSEC-2026-2132 | high | No - project pins click==8.1.7 in requirements.txt as a transitive dependency of platformio and uvicorn. |
| starlette (PyPI, via PlatformIO) | The PlatformIO build toolchain installs starlette 0.46.2, which carries denial-of-service, host-header-poisoning and (on Windows) SSRF/credential-theft flaws - these affect the developer workstation that builds the firmware, not the LED controller itself, and only matter if that machine runs PlatformIO's local web service where others can reach it. — GHSA-82w8-qh3p-5jfq, GHSA-wqp7-x3pw-xc5r, GHSA-7f5h-v6xp-fcq8, GHSA-86qp-5c8j-p5mr (+2 more) | high | No - project pins starlette==0.46.2 in requirements.txt as a transitive dependency of platformio 6.1.19. |
| urllib3 (PyPI, via requests) | The build toolchain installs urllib3 2.5.0, which mishandles highly compressed HTTP responses and can forward sensitive headers across origins during proxied redirects - relevant to the build machine when PlatformIO downloads platform archives, not to the controller. — GHSA-38jv-5279-wg99, GHSA-qccp-gfcp-xxvc, GHSA-2xpw-w6gg-jr37, GHSA-gm62-xv2j-4w53 | high | No - project pins urllib3==2.5.0 in requirements.txt as a transitive dependency of requests. |
| idna (PyPI, via anyio/requests) | The build toolchain installs idna 3.10, where specially crafted domain names passed to idna.encode() can slip past an earlier fix - a build-host concern only. — GHSA-65pc-fj4g-8rjx | moderate | No - project pins idna==3.10 in requirements.txt as a transitive dependency of anyio and requests. |
| marshmallow (PyPI, via PlatformIO) | The build toolchain installs marshmallow 3.26.1, which can be driven into a denial of service when loading many records at once - a build-host concern only. — GHSA-428g-f7cq-pgp5 | moderate | No - project pins marshmallow==3.26.1 in requirements.txt as a transitive dependency of platformio. |
| Node.js (web asset build host) | The build host's Node.js version is pinned to 20.18, and the Node.js 20 cycle passed end-of-life on 2026-04-30, so the machine that builds the web UI assets is running a runtime that no longer receives standard security support. | posture | Yes - update to a Node.js release still receiving security support; package.json already declares engines node >=20.0.0, so a newer release satisfies the project's own constraint without any source change. |
| WLED network services on the controller | The controller listens on TCP 80 for its web interface and JSON API and on five UDP lighting-control ports (E1.31 5568, Art-Net 6454, DDP 4048, TPM2.net 65506, WLED sync 21324), plus SSDP/UPnP on 1900, and the sources document no authentication for any of them and no default credentials; OTA update is described only as 'password-protectable', meaning the password is opt-in. | posture | Mitigation only - put the controller on an isolated VLAN or a dedicated lab SSID, set the OTA password and the web-interface lock before it joins any shared network, and never port-forward it to the internet. |
What this means for your lab
This controller is designed to be reachable over the network, and out of the box it does not ask anyone who to be. Its web page and control API answer on the normal web port, and it also listens on five separate lighting-control channels plus a discovery service. The uploaded materials do not describe any password on the web interface, and the over-the-air update feature is only described as password-protectable, which means the password is something you have to turn on. In practice that means anyone else on the same Wi-Fi or wired network - a student, a guest, anyone who found the lab SSID - can open the controller's page, change the lights, alter its settings, and quite possibly push new firmware to it. Nothing here can reach out and attack the rest of your network on its own, but the device should be treated as an open control panel. Before it goes on any shared or campus network: put it on an isolated VLAN or a dedicated lab SSID, turn on the over-the-air update password, and do not forward it through a firewall to the internet. Raise it with campus IT if it needs to sit on the main network. Separately, the security problems found in this project's dependencies are all in the build toolchain that compiles the firmware on a developer's computer - Node.js 20.18, which stopped receiving security updates in April 2026, and five Python packages pulled in by PlatformIO. None of them ship to the controller itself. Keep the build toolchain in its own virtual environment rather than on a shared machine, and update Node.js, which the project's own settings already allow. Finally, most of the firmware's own C++ libraries simply cannot be checked - no vulnerability database covers Arduino libraries or code pinned to a Git commit - so treat their clean look as unknown rather than safe.
Not checked
- WLED firmware itself: No advisory database covers the WLED firmware source tree, and the fetched sources pin no firmware release version - absence of an advisory here is not evidence of safety.
- Arduino and C++ firmware libraries (IRremoteESP8266 2.9.0, AsyncTCP 3.4.10, AsyncMqttClient 0.9.0, ESPAsyncTCP 1.2.2, AnimatedGIF 1.4.7): The Arduino library registry is not an OSV ecosystem, so no vulnerability database could be queried for these versions.
- Git-pinned library checkouts (ESPAsyncWebServerWLED, NeoPixelBus, GifDecoder, ArduinoUZlib, esp_dmx, WLED-AudioReactive-Usermod): Pinned to Git commit hashes or branches rather than published registry releases; source-hosted projects have no advisory database to check against.
- esp_dmx (ESP32 IDF V5): Tracked to the moving branch netmindz/esp_dmx#esp-idf-v5-fixes with no commit pin, so there is no fixed version whose security state could be checked.
- Espressif 8266 platform 4.2.1 and 4.2.0: Dispatched to OSV as ecosystem 'PlatformIO', which returned unknown_ecosystem - PlatformIO is not an OSV registry, so nothing was queried. This is not 'no vulnerabilities'.
- Tasmota and pioarduino ESP32 platform packages: Distributed as release-URL zip archives (Tasmota 2024.06.00 / 2026.05.50, pioarduino 55.03.39 / 55.03.37); no package registry or advisory database applies.
- Vendored C++ libraries (ArduinoJson 5.13.5, E131 1.0.0 modified, Time 1.5, Timezone 1.2.1): Embedded in the source tree and, in E131's case, locally modified - there is no upstream registry release to match them against.
- ESP8266 toolchain packages (toolchain-xtensa ~2.100300.220621, tool-esptool, tool-esptoolpy): Vendor toolchain archives; two of the three are unpinned in platformio.ini and none is published to an advisory-tracked registry.
- Unpinned ESP8266 helper libraries (ESPAsyncUDP, ESP8266PWM): Declared in platformio.ini with no version constraint, so no specific version exists to check.
- Third-party network integrations (Philips Hue sync, Alexa/SSDP emulation, Hyperion, diyHue, external MQTT brokers): External services and protocols named in the snapshot; no version or endpoint in the sources to look up.
- validation: Espressif 8266 platform (PlatformIO): 'read from project' downgraded to 'inferred' - version '4.2.1' not in any fetched file
- validation: IRremoteESP8266 (Arduino library): 'read from project' downgraded to 'inferred' - version '2.9.0' not in any fetched file
- validation: AsyncTCP (Arduino library, ESP32): 'read from project' downgraded to 'inferred' - version '3.4.10' not in any fetched file
- validation: ESPAsyncTCP (Arduino library, ESP8266): 'read from project' downgraded to 'inferred' - version '1.2.2' not in any fetched file
- validation: ESPAsyncWebServerWLED (Git checkout): 'read from project' downgraded to 'inferred' - version 'ac44e32abf2a69ae650412fb6bc193c59ccac38a' not in any fetched file
- validation: NeoPixelBus (Git checkout): 'read from project' downgraded to 'inferred' - version '1d7ff38f14d04a976f9c6e365c83a232bcba04fc' not in any fetched file
- validation: ArduinoJson (vendored in source tree): 'read from project' downgraded to 'inferred' - version '5.13.5' not in any fetched file
Parts
Host microcontroller boards
The lab needs one of these, not all eleven.
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| NodeMCU v2 / ESP-12E / ESP-12F | 30-pin DIP module, 2.54 mm pitch, 4 MB flash | Readily available (retail) | 8 sellers | $10.00 | Jameco.com (range $3.44–$28.80) |
| ESP-01 / ESP-01S | 2x4 8-pin DIL header, 2.54 mm pitch, 1 MB flash | Readily available (retail) | 8 sellers | $5.05 | Addicore, listed as 1 MB (8 Mbit) flash (range $1.80–$27.76) |
| ESP32-DEVKITC-32E | ESP32-WROOM-32E, 4 MB flash, 38-pin DIP | Active | DigiKey 0 (8-wk lead); Mouser 2,640 | $10.00 | DigiKey listing; order from Mouser at $10.20 |
| ESP32-DEVKITC-VE | ESP32-WROVER-E, 8 MB flash + PSRAM | Active | DigiKey 0 (8-wk lead); Mouser 693 | $11.00 | DigiKey listing; order from Mouser at $11.00 |
| ESP32-EVB (Olimex) | Ethernet PHY + RJ45 MagJack, terminal headers | Active | 147 | $23.01 | DigiKey |
| LOLIN S2 Mini (ESP32-S2FN4R2) | 2x8 header module, 4 MB flash, 2 MB PSRAM | Readily available (retail) | 8 sellers | $5.25 | Pinsto (range $2.05–$24.26) |
| ESP32-C3-DEVKITM-1 | ESP32-C3-MINI-1, 4 MB flash | Obsolete | 0 (DigiKey and Mouser) | — | See Action required |
| ESP32-S3-DEVKITC-1-N8 | ESP32-S3-WROOM-1-N8, 8 MB flash | Obsolete | 0 (DigiKey and Mouser) | — | See Action required |
| ESP32-C5-DEVKITC-1-N8R4 | ESP32-C5-WROOM-1 eval board, dual-band | Obsolete | 0 (DigiKey and Mouser) | — | See Action required |
| ESP32-C6-DEVKITC-1-N8 | ESP32-C6 DevKitC-1, 8 MB flash | Active | 897 | $9.00 | DigiKey |
| ESP32-P4-FUNCTION-EV-BOARD | ESP32-P4 evaluation module | Obsolete | 0 (DigiKey 16-wk lead, Mouser 0) | — | See Action required |
LED loads
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| Addressable RGB/RGBW LED strip (WS2812B et al.) | Flexible PCB, 60 LEDs/m, 5 V, 3-pin VCC/DATA/GND | Readily available (retail) | 8 sellers | $29.99 | BTF-LIGHTING, 5 m / 300 px (range $1.95–$36.99) |
| HUB75 RGB LED matrix panel | 64x32, 16-pin 2x8 IDC, 5 V | Readily available (retail) | 8 sellers | $49.95 | DigiKey (AliExpress P2.5 modules from $11.07) |
Sensors, input and display peripherals
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| I2S microphone module (INMP441 / SPH0645 / ICS-43434) | 6-pin 2.54 mm breakout, 3.3 V | Module readily available; all named MEMS dies are EOL | 8 retail sellers; Adafruit 6049 stock 907 | $4.95 | Vetco (range $1.23–$9.99); distributor option Adafruit 6049, $8.95 |
| TSOP38238 (IR receiver) | 3-pin TO-92-style, 38 kHz, 3.3–5 V | Active | 24,869 | $0.84 | DigiKey |
| 24-key IR remote control | Handheld, 24 membrane keys, CR2025/CR2032 | Readily available (retail) | 8 sellers | $6.95 | Skycraft Parts and Surplus (range $5.29–$18.95) |
| Rotary encoder module (KY-040) | 5-pin breakout, quadrature + push switch, 3.3 V | Readily available (retail) | 8 sellers | $1.95 | Alpha 3DLab (range $1.26–$39.99) |
| SSD1306 / SH1106 OLED, 128x64 I2C | 4-pin header GND/VCC/SCL/SDA, 3.3 V | Readily available (retail) | 8 sellers | $4.99 | DigiKey (CANADUINO) (range $2.49–$19.50) |
| DS18B20+ (temperature sensor) | TO-226-3 / TO-92-3, supply 3–5.5 V | Active | 5,196 (DigiKey); Rochester 20,230; Newark 5,354 | $7.35 | DigiKey |
Signal conditioning
Named in the snapshot's architecture note for 3.3 V to 5 V data-line conversion on 5 V strips, but not itemised as a numbered BOM line — listed here for completeness.
| Part | Spec/Package | Status | Stock | Price | Source |
|---|---|---|---|---|---|
| SN74AHCT125N | 14-DIP (0.300in, 7.62 mm), supply 4.5–5.5 V | Active | 19,817 | $0.95 | DigiKey (SOIC sibling SN74AHCT125NSR $0.85 is surface mount) |
Substitutes
| For part | Substitute | Differences | Verified | Judgment |
|---|---|---|---|---|
| ESP32-C3-DEVKITM-1 | ESP32-C3-DEVKITM-1-N4X $8.00, stock 95 | Same ESP32-C3-MINI-1 module and DevKitM-1 board family per DigiKey descriptions; -N4X is the 4 MB-flash catalogue variant, meeting the snapshot's ≥ 4 MB minimum. Same price, no cost penalty. | verified: lifecycle (Active) and stock from DigiKey this run; board family and module identity from DigiKey descriptions; flash size against the snapshot. not verified: footprint / pin pitch — DigiKey parametrics carry only "Mounting Type: Fixed", no dimensions or pitch. not verified: meaning of the "X" suffix (assumed a packaging code). | Acceptable |
| ESP32-S3-DEVKITC-1-N8 | ESP32-S3-DEVKITC-1-N8R8 $15.00 | Same DevKitC-1 board and 8 MB flash; adds 8 MB octal PSRAM — exceeding the requirement, which is acceptable. But the snapshot requires flash and PSRAM mode to match the binary environment, so this board must be built as esp32s3dev_8MB_opi, not esp32s3dev_8MB_qspi. |
verified: lifecycle (Active), price, flash size and PSRAM presence from DigiKey descriptions; build-environment constraint from the snapshot. not verified: current warehouse stock (DigiKey returned no quantity). not verified: footprint / pin pitch — parametrics carry only "Frequency: 2.4GHz". | Acceptable, with a build-target caveat |
| ESP32-C5-DEVKITC-1-N8R4 | ESP32-C5-DEVKITC-1-N8R8 $14.37, stock 72 | DigiKey's manufacturer-recommended substitute. Same DevKitC-1 board and 8 MB flash; PSRAM 4 MB → 8 MB, exceeding the requirement. The snapshot only requires an Espressif ESP32-C5 development kit, which this is. | verified: lifecycle (Active), stock and price from a direct DigiKey lookup this run; MFR-recommended relationship from DigiKey; kit-family requirement against the snapshot. not verified: footprint / pin pitch (parametrics carry only "Frequency: 2.4GHz, 5GHz"). not verified: that the esp32c5dev build environment targets the R8 PSRAM variant unchanged. |
Acceptable |
| ESP32-P4-FUNCTION-EV-BOARD | ESP32-P4X-FUNCTION-EV-BOARD $59.92 | DigiKey's manufacturer-recommended successor "X" revision of the same evaluation board. Price is 4–6x every other host board in this BOM. | verified: lifecycle (Active) and price from a direct DigiKey lookup this run; MFR-recommended relationship from DigiKey. not verified: stock (DigiKey returned no quantity). not verified: footprint, flash/PSRAM size, and whether the esp32p4_16MB / esp32p4_32MB environments build unchanged for the X revision. |
Plausible, stock unconfirmed — verify with the distributor before committing |
| INMP441ACEZ-R7 | Adafruit 6049, I2S MEMS Microphone Breakout (ICS-43434) $8.95, stock 907 | A finished breakout module, which is what the BOM line actually calls for, stocked at an authorized distributor; ICS-43434 is one of the three sensors the snapshot names. Supply 1.6–3.6 V covers the lab's 3.3 V rail. Frequency response 60 Hz–20 kHz vs the INMP441's 60 Hz–15 kHz — wider, exceeding the requirement. As bare dies the two are NOT interchangeable (3.50 x 2.65 mm vs 4.72 x 3.76 mm); the substitution is valid only at module level. | verified: supply-voltage range from both DigiKey parametrics (INMP441 1.62–3.63 V, ICS-43434 1.65–3.63 V) and the fetched Adafruit product page (1.6–3.6 V); I2S pin function (Clock, Data, Word Select) and ESP32 host support from the fetched Adafruit page; lifecycle, price and stock from DigiKey this run. not verified: module footprint and header pinout — the page gives no board dimensions or pin order, so this is not a mechanical drop-in for a generic INMP441 breakout and wiring must be checked against the pin labels. | Acceptable as a module-level substitute |
| INMP441ACEZ-R7 (onward path) | Adafruit 3421, I2S MEMS Microphone Breakout (SPH0645LM4H) $6.95 | The fetched Adafruit page for product 6049 states the ICS-43434 has been discontinued and names SPH0645LM4H as its drop-in replacement; SPH0645 is also named as acceptable by the snapshot. Same 1.6–3.6 V, same three-pin I2S interface. However the bare MPN SPH0645LM4H-B is itself high-risk: DigiKey stock 0, 26-week factory lead time, ECIA lifecycle and supply-chain risk both High. | verified: price and the 1.6–3.6 V / three-digital-pin I2S description from its fetched product page; the discontinuation notice and replacement recommendation from the fetched Adafruit 6049 page. not verified: current stock — no distributor lookup returned a stocked listing for this breakout this run. | Plausible onward path, stock unverified |
Verify any substitute against its datasheet before ordering — footprint and pin pitch could not be confirmed from distributor parametrics for any of the development boards above.
Other dependencies
- PCB fabrication — not applicable. The snapshot records that no Gerber archives, drill charts, mechanical drawings or CAD layout files were included, and that the build uses off-the-shelf boards wired to lighting power rails. Nothing to fabricate.
- Third-party carrier boards (QuinLED-Dig-Uno, QuinLED-Dig-Quad) — named as an option in the snapshot; not checked, no sourcing plan was given and no lookup was dispatched.
- Primary source repository, github.com/wled/WLED — live. Its root listing and five project files were fetched successfully this run, so the main download path works.
- Other GitHub organisations serving releases (Aircoookie, wled-dev, tasmota, pioarduino, Makuna, crankyoldgit) — not checked; individual release URLs were not fetched.
- Documentation portal kno.wled.ge — not checked this run.
- Community forums (wled.discourse.group, discord.gg/QAh7wJHrRM) — not checked this run.
- WLED native mobile apps (Google Play
ca.cgagnier.wlednativeandroid, Apple App Store6446207239) — not checked this run. - CORS proxy service corsfix.com — not checked this run.
- ESP32-P4 / C6 coprocessor radio firmware portal esp32-c6-firmware-update.github.io — not checked this run.
- LED strip power supply — the snapshot describes 5 V / 12 V / 24 V high-current rails but does not itemise a PSU as a BOM line, so none was priced. Budget for one: up to 60 mA per pixel at peak white means a 300-pixel 5 V strip can draw about 18 A at full brightness.
- 4.7 kΩ 1-Wire pull-up resistor for the DS18B20 — commodity passive, not itemised in the BOM and not priced.
Watch list
- The I2S microphone is the real long-term risk. All three sensors the snapshot names are end-of-life: INMP441ACEZ-R7 is Obsolete with zero distributor stock, ICS-43434 is Obsolete (though 112,462 units remain at DigiKey), and SPH0645LM4H-B carries a 26-week lead time with ECIA lifecycle and supply-chain risk both High. Cheap retail modules exist today because they are built on that remaining stock. Buy spares now if the audio-reactive usermod matters to the course.
- ESP32-P4 support may not survive the next check. The board is Obsolete, the successor costs $59.92 with no confirmed stock, and the snapshot already flags it as experimental and needing a separate C6 coprocessor for networking.
- Espressif's DevKit catalogue churns fast. Four of the eleven host boards turned over to new suffixes this cycle (C3, S3, C5, P4). Expect the exact part numbers in the snapshot to keep drifting; the board families remain available, so re-check suffixes rather than assuming discontinuation.
- ESP32-DevKitC-32E and -VE both show zero DigiKey stock behind an 8-week factory lead. They are comfortably in stock at Mouser today, but a single-distributor view would have called them unobtainable — worth re-checking that both warehouses do not empty together.
- ESP8266 boards (NodeMCU, ESP-01S) are retail-only commodities. No authorized-distributor lifecycle signal exists for them, so a supply change will show up as prices rising or listings thinning rather than as an Obsolete flag.
Snapshot What the lab depended on when it was uploaded — the baseline the readiness checks research against.
The WLED LED Controller project is an open-source, network-connected lighting firmware platform designed to run across the Espressif ESP8266 and ESP32 microcontroller families (including ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, and ESP32-P4). The firmware generates complex lighting animations, color palettes, and sound-reactive visual effects for up to 17 independent addressable digital LED strips, analog PWM LED channels, and HUB75 RGB LED matrix panels. The host microcontrollers operate on a 3.3 V DC logic rail, typically powered via a 5 V DC USB connection or an external regulated power supply. The driven LED hardware typically operates on separate, high-current 5 V, 12 V, or 24 V DC power rails sharing a common ground with the microcontroller, frequently requiring 3.3 V to 5 V logic level shifters (such as 74AHCT125) on data lines to ensure reliable digital signaling over cable runs.
Note on uploaded design files: No physical PCB layout files (such as KiCad, Eagle, or Gerbers) or schematic capture sheets were included in the project files. The hardware elements detailed below represent the complete inventory of host microcontroller boards, LED loads, external peripherals, sensors, and electromechanical actuators explicitly targeted by the build configuration (platformio.ini) and system architecture documentation (readme.md).
Bill of Materials
ESP8266 Development Board (NodeMCU v2 / ESP-12E / ESP-12F)
- Identity: NodeMCU v2 ESP8266 development board with integrated USB-to-UART bridge and 4 MB SPI flash (build targets nodemcuv2, nodemcuv2_compat, esp8266_2m).
- Quantity needed: 1 board (primary or alternative host MCU).
- Footprint/package: 30-pin dual-row breadboard-friendly DIP module (pitch 2.54 mm).
- Electrical constraints: 3.3 V logic level; powered via 5 V micro-USB or 5 V VUSB/VIN pin through an onboard 3.3 V LDO regulator (minimum 500 mA rating).
- Substitution latitude: Any ESP8266 board with at least 2 MB to 4 MB flash (such as Wemos D1 Mini) can be substituted; 1 MB boards (ESP-01) require restricted compatibility builds (esp01_1m_full) with reduced feature sets and no OTA partition headroom.
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: NodeMCU v2 ESP8266 development board CP2102
ESP-01 / ESP-01S ESP8266 Microcontroller Module
- Identity: ESP-01 or ESP-01S module with Espressif ESP8266EX and 1 MB flash memory (build target esp01_1m_full).
- Quantity needed: 1 board (alternative low-cost host MCU).
- Footprint/package: 2x4 8-pin dual-in-line header (pitch 2.54 mm).
- Electrical constraints: Regulated 3.3 V DC supply (draws up to 250 mA peak RF bursts). Logic level strictly 3.3 V (no onboard 5 V regulator or level shifter).
- Substitution latitude: Strict flash constraint; requires boards with at least 1 MB (8 Mbit) SPI flash memory.
- User control: No (microcontroller module).
- Sourcing plan: retail shopping search: ESP-01S 1MB ESP8266 module
ESP32 Development Board (ESP32-WROOM-32 / ESP32-DevKitC)
- Identity: Espressif ESP32 dual-core Xtensa development board with 4 MB or 8 MB SPI flash (build targets esp32dev, esp32dev_V4, esp32dev_debug).
- Quantity needed: 1 board (recommended primary host).
- Footprint/package: 30-pin or 38-pin DIP development module (pitch 2.54 mm).
- Electrical constraints: 3.3 V logic levels across all GPIO pins. Powered via 5 V USB or 5 V VIN pin through onboard 3.3 V LDO (peak current capability >= 500 mA to 1 A).
- Substitution latitude: Any standard ESP32-WROOM-32, ESP32-DevKitC, or NodeMCU-32S board with >= 4 MB flash.
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: ESP32 DevKitC ESP-WROOM-32 development board
ESP32-WROVER Development Board (with PSRAM)
- Identity: ESP32-WROVER or ESP32-WROVER-E module/board with integrated 4 MB or 8 MB PSRAM (build target esp32_wrover).
- Quantity needed: 1 board (required for high-memory configurations or large matrix mapping).
- Footprint/package: 38-pin DIP development module (pitch 2.54 mm).
- Electrical constraints: 3.3 V logic; powered via 5 V USB or 5 V pin to internal regulator.
- Substitution latitude: Must include onboard SPI/QSPI PSRAM (at least 2 MB to 8 MB) to support the wrover build environment.
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: ESP32-WROVER-E development board with PSRAM
ESP32 Ethernet Development Board (QuinLED-ESP32 / Olimex ESP32-EVB / LILYGO T-Internet-POE)
- Identity: ESP32 development board with hardware RMII Ethernet PHY (e.g., LAN8720A or RTL8201) (build targets esp32_eth, esp32_eth_V4).
- Quantity needed: 1 board (required for wired Ethernet lighting control networks).
- Footprint/package: Integrated PCB with RJ45 MagJack connector and terminal headers.
- Electrical constraints: 3.3 V logic; powered via 5 V USB, terminal block (5 V to 24 V depending on vendor board), or IEEE 802.3af PoE.
- Substitution latitude: Must use an ESP32 board matching supported Ethernet PHY configurations in WLED (LAN8720, TLK110, or IP101 on standard RMII pinouts).
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: Olimex ESP32-EVB or QuinLED-ESP32-Ethernet
ESP32-S2 Development Board (LOLIN S2 Mini)
- Identity: WEMOS LOLIN S2 Mini board based on ESP32-S2FN4R2 with native USB Type-C (build target lolin_s2_mini).
- Quantity needed: 1 board (alternative host MCU).
- Footprint/package: Compact dual-row 2x8 pin header module (pitch 2.54 mm).
- Electrical constraints: 3.3 V logic; native USB 5 V input.
- Substitution latitude: Any ESP32-S2 development board with native USB CDC and minimum 4 MB flash memory.
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: WEMOS LOLIN S2 Mini ESP32-S2
ESP32-C3 Development Board
- Identity: Espressif ESP32-C3 RISC-V development board with 4 MB flash (build targets esp32c3dev, esp32c3dev_qio).
- Quantity needed: 1 board (alternative host MCU).
- Footprint/package: Breadboard-friendly 30-pin or compact DIP module.
- Electrical constraints: 3.3 V logic level; 5 V USB power input.
- Substitution latitude: Any ESP32-C3 dev board with onboard USB-to-UART or native USB-JTAG/CDC and >= 4 MB flash.
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: ESP32-C3-DevKitM-1 development board
ESP32-S3 Development Board
- Identity: Espressif ESP32-S3 dual-core LX7 development board with 4 MB, 8 MB, or 16 MB Octal/Quad SPI flash and optional PSRAM (build targets esp32s3_4M_qspi, esp32S3_wroom2, esp32s3dev_16MB_opi, esp32s3dev_8MB_opi, esp32s3dev_8MB_qspi).
- Quantity needed: 1 board (alternative high-performance host MCU).
- Footprint/package: ESP32-S3-DevKitC-1 DIP form factor (pitch 2.54 mm).
- Electrical constraints: 3.3 V logic; 5 V USB powered.
- Substitution latitude: Any ESP32-S3 board; flash and PSRAM mode (Quad vs Octal SPI) must match the chosen binary environment.
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: ESP32-S3-DevKitC-1 development board
ESP32-C5 Development Board
- Identity: Espressif ESP32-C5 dual-band Wi-Fi 6 RISC-V evaluation board with 4 MB or 8 MB flash (build targets esp32c5dev, esp32c5dev_8MB_qspi).
- Quantity needed: 1 board (experimental next-gen target).
- Footprint/package: Manufacturer evaluation board form factor.
- Electrical constraints: 3.3 V logic; 5 V USB powered.
- Substitution latitude: Must be an Espressif ESP32-C5 silicon development kit.
- User control: No (microcontroller board).
- Sourcing plan: general web research: Espressif ESP32-C5 development board availability
ESP32-C6 Development Board
- Identity: Espressif ESP32-C6 Wi-Fi 6 / Bluetooth 5 / Thread / Zigbee RISC-V development board with 4 MB or 8 MB flash (build targets esp32c6dev_4MB, esp32c6dev_8MB).
- Quantity needed: 1 board (alternative modern host MCU).
- Footprint/package: ESP32-C6-DevKitC-1 standard DIP form factor.
- Electrical constraints: 3.3 V logic; 5 V USB powered.
- Substitution latitude: Any ESP32-C6 development module with at least 4 MB flash.
- User control: No (microcontroller board).
- Sourcing plan: retail shopping search: ESP32-C6-DevKitC-1 development board
ESP32-P4 Development Board
- Identity: Espressif ESP32-P4 high-performance dual-core RISC-V application processor board with 16 MB or 32 MB flash and onboard PSRAM (build targets esp32p4_16MB, esp32p4_32MB, esp32P4_400).
- Quantity needed: 1 board (experimental high-end matrix/video target).
- Footprint/package: ESP32-P4 development evaluation module.
- Electrical constraints: Core logic 3.3 V; 5 V USB power input. Note: Requires external C6 Wi-Fi coprocessor for network features.
- Substitution latitude: Must be an official Espressif ESP32-P4 evaluation board.
- User control: No (microcontroller board).
- Sourcing plan: general web research: Espressif ESP32-P4 evaluation board availability
Addressable Digital RGB / RGBW LED Strip
- Identity: Addressable LED strip or array driven by integrated driver ICs; supported models include WS2812B, WS2811, WS2815, SK6812 (RGBW), WS2805, TM1914, APA102 (DotStar / SPI), WS2801, or LPD8806.
- Quantity needed: 1 or more strips/matrices (up to 17 parallel output channels supported on ESP32).
- Footprint/package: Flexible PCB ribbon (e.g., 30, 60, or 144 LEDs/meter) with 3-pin (VCC, DATA, GND) or 4-pin (VCC, DATA, CLK, GND) solder pads or JST-SM connectors.
- Electrical constraints: Supply voltage depends on strip model (5 V DC for WS2812B/SK6812; 12 V DC for WS2811/WS2815). Digital input logic threshold requires high voltage >= 0.7 * VCC (approx. 3.5 V for 5 V strips, mandating 3.3 V to 5 V level conversion for long data lines). Current draw up to 60 mA per pixel at peak white (5 V).
- Substitution latitude: Any WLED-supported single-wire NRZ or two-wire SPI protocol digital LED strip.
- User control: No (display load).
- Sourcing plan: retail shopping search: WS2812B LED strip 5V 60 LEDs/m
HUB75 RGB LED Matrix Panel
- Identity: HUB75 / HUB75E interface 1/16 or 1/32 scan rate RGB LED matrix display panel (e.g., 64x32 or 64x64 pixels).
- Quantity needed: 1 or more panels (optional display target for 2D visual effects).
- Footprint/package: Rigid panel with 16-pin (2x8) IDC shrouded male connector (DATA lines R1, G1, B1, R2, G2, B2; ADDRESS lines A, B, C, D, E; CLK, LAT/STB, OE; GND).
- Electrical constraints: 5 V DC supply; peak current can exceed 4 A per 64x32 panel at full brightness. Driven directly via ESP32 parallel I2S/DMA lines.
- Substitution latitude: Any standard 5 V HUB75 / HUB75E LED matrix panel.
- User control: No (display load).
- Sourcing plan: retail shopping search: HUB75 RGB LED matrix panel 64x32 5V
Digital I2S Microphone / Audio Input Module
- Identity: I2S digital output omnidirectional microphone module (e.g., INMP441, SPH0645, or Knowles ICS-43434) for AudioReactive usermod.
- Quantity needed: 1 module (optional audio-reactive input).
- Footprint/package: Breakout board with 6-pin single-row 2.54 mm header (VDD, GND, SD, WS, SCK, L/R).
- Electrical constraints: Supply voltage 3.3 V DC (sitting directly on host MCU 3.3 V logic rail). Signal levels 3.3 V CMOS I2S.
- Substitution latitude: Any standard I2S digital MEMS microphone breakout or line-in I2S ADC (e.g., PCM1808) compatible with ESP32 I2S peripherals.
- User control: No (audio sensor).
- Sourcing plan: distributor lookup (representative example — sources give spec only): InvenSense INMP441ACEZ-R7 (breakout module via retail shopping search: INMP441 I2S microphone module)
Infrared Receiver Demodulator Module
- Identity: 38 kHz active infrared receiver sensor (e.g., TSOP38238, TSOP4838, or VS1838B) for 24-key IR remote control input.
- Quantity needed: 1 component/module (optional IR input).
- Footprint/package: 3-pin through-hole package (TO-92 style or molded epoxy) or 3-pin breakout board (OUT, GND, VCC).
- Electrical constraints: Supply voltage 3.3 V to 5 V DC; active-low digital output tied to ESP GPIO (3.3 V logic compatible).
- Substitution latitude: Any 38 kHz carrier frequency photo-demodulator receiver.
- User control: No (receiver sensor; receives line-of-sight optical signals from hand-held remote).
- Sourcing plan: distributor lookup (representative example — sources give spec only): Vishay TSOP38238
24-Key Infrared Remote Control
- Identity: 24-key handheld infrared transmitter sending NEC-format RGB LED remote codes.
- Quantity needed: 1 remote unit (optional control interface).
- Footprint/package: Slim handheld plastic enclosure with 24 membrane pushbuttons and CR2025/CR2032 coin battery holder.
- Electrical constraints: Self-powered by 3 V coin cell (CR2025/CR2032). Modulated 38 kHz IR output.
- Substitution latitude: Any standard 24-key, 40-key, or 44-key NEC-protocol RGB LED remote control supported by the WLED IR library definitions.
- User control: Yes (handheld remote control operated by user to adjust brightness, color, and presets).
- Sourcing plan: retail shopping search: 24 key IR remote controller for RGB LED
Rotary Encoder Module (with Pushbutton)
- Identity: Incremental quadrature rotary encoder with integrated momentary push-switch for usermod manual physical control.
- Quantity needed: 1 module (optional physical control interface).
- Footprint/package: 5-pin breakout board or panel-mount bushing with knurled / D-shaft (CLK, DT, SW, VCC, GND).
- Electrical constraints: Operates on 3.3 V DC rail with internal/external pull-up resistors on GPIO lines A, B, and SW.
- Substitution latitude: Any standard 2-bit quadrature mechanical rotary encoder with detents and momentary push switch.
- User control: Yes (continuous rotary knob and pushbutton operated by user for manual brightness/effect navigation).
- Sourcing plan: retail shopping search: KY-040 rotary encoder module
Secondary I2C Display Module (SSD1306 OLED)
- Identity: 0.96-inch or 1.3-inch 128x64 monochrome OLED display module with I2C interface (SSD1306 or SH1106 driver) for usermod status display.
- Quantity needed: 1 module (optional visual status readout).
- Footprint/package: 4-pin header module (GND, VCC, SCL, SDA; 2.54 mm pitch).
- Electrical constraints: Supply voltage 3.3 V DC; I2C clock and data lines operating at 3.3 V logic.
- Substitution latitude: Any standard SSD1306 or SH1106 128x64 I2C OLED display.
- User control: No (visual readout).
- Sourcing plan: retail shopping search: 0.96 inch I2C OLED display 128x64 SSD1306
Digital Temperature Sensor Module (DS18B20 or BMP280)
- Identity: Digital temperature sensor breakout (e.g., Dallas/Maxim DS18B20 1-Wire or Bosch BMP280 I2C sensor) for temperature usermod.
- Quantity needed: 1 sensor (optional environmental telemetry).
- Footprint/package: TO-92-3 or small breakout PCB.
- Electrical constraints: Supply voltage 3.3 V DC; requires 4.7 kΩ pull-up resistor on 1-Wire data bus for DS18B20.
- Substitution latitude: Any DS18B20 1-Wire sensor or standard I2C environmental sensor supported by WLED usermods.
- User control: No (environmental sensor).
- Sourcing plan: distributor lookup (representative example — sources give spec only): Analog Devices DS18B20+
Software and network dependencies
The build toolchain, embedded framework, and runtime library ecosystem are defined across the Node.js package manifest (package.json) and PlatformIO environment configuration (platformio.ini).
Build System & Web Asset Pipeline:
- Node.js Runtime Engine: Node.js version requirement ">=20.0.0", pinned in package.json. Check plan: support-status lookup: Node.js >=20.0.0.
- clean-css: npm package for CSS stylesheet minification, version "^5.3.3", pinned with caret in package.json. Check plan: vulnerability lookup: clean-css / npm / 5.3.3.
- html-minifier-terser: npm package for HTML/JS compression, version "^7.2.0", pinned with caret in package.json. Check plan: vulnerability lookup: html-minifier-terser / npm / 7.2.0.
- web-resource-inliner: npm asset bundling utility, version "^7.0.0", pinned with caret in package.json. Check plan: vulnerability lookup: web-resource-inliner / npm / 7.0.0.
- nodemon: npm development monitor tool, version "^3.1.14", pinned with caret in package.json. Check plan: vulnerability lookup: nodemon / npm / 3.1.14.
- PlatformIO Core / CLI: Embedded build environment tool specified in platformio.ini; version not stated in sources. Check plan: not checkable: version not stated.
- Python 3 with helper scripts: Invoked via PlatformIO extra_scripts in platformio.ini (pio-scripts/set_metadata.py, output_bins.py, strip-floats.py, dynarray.py, user_config_copy.py, load_usermods.py, build_ui.py, validate_modules.py); Python runtime version not stated. Check plan: not checkable: version not stated.
Microcontroller Frameworks and Development Platforms:
- Espressif 8266 Platform (default): platform "espressif8266@4.2.1" (Arduino core 3.1.2), pinned in platformio.ini. Check plan: vulnerability lookup: espressif8266 / PlatformIO / 4.2.1.
- Espressif 8266 Platform (compatibility): platform "espressif8266@4.2.0", pinned in platformio.ini. Check plan: vulnerability lookup: espressif8266 / PlatformIO / 4.2.0.
- Toolchain Xtensa (ESP8266): package "platformio/toolchain-xtensa @ ~2.100300.220621", pinned in platformio.ini. Check plan: not checkable: vendor toolchain archive.
- Tool esptool (ESP8266): package "platformio/tool-esptool", unpinned in platformio.ini. Check plan: not checkable: unpinned dependency.
- Tool esptoolpy (ESP8266): package "platformio/tool-esptoolpy", unpinned in platformio.ini. Check plan: not checkable: unpinned dependency.
- Tasmota ESP32 Platform (IDF V4): "https://github.com/tasmota/platform-espressif32/releases/download/2024.06.00/platform-espressif32.zip" (Tasmota Arduino Core 2.0.18 based on ESP-IDF 4.4.8), pinned by URL release tag in platformio.ini. Check plan: not checkable: custom zip distribution.
- Tasmota ESP32 Platform (IDF V5): "https://github.com/tasmota/platform-espressif32/releases/download/2026.05.50/platform-espressif32.zip" (Tasmota Arduino Core 3.3.8.260506 based on ESP-IDF 5.5.4.260407), pinned by URL release tag in platformio.ini. Check plan: not checkable: custom zip distribution.
- Pioarduino ESP32 Platform (IDF V5 alternative): "https://github.com/pioarduino/platform-espressif32/releases/download/55.03.39/platform-espressif32.zip" (Arduino Core v3.3.9 / ESP-IDF v5.5.4), pinned by URL release tag in platformio.ini. Check plan: not checkable: custom zip distribution.
- Pioarduino ESP32 Platform (ESP32-P4): "https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip", pinned by URL release tag in platformio.ini. Check plan: not checkable: custom zip distribution.
C++ and Embedded Libraries (declared in platformio.ini):
- IRremoteESP8266 (global): version "2.9.0" by crankyoldgit, pinned in platformio.ini (compatibility builds pin version "2.8.2"). Check plan: not checkable: Arduino library with no ecosystem CVE database.
- ESPAsyncWebServerWLED: "git+https://github.com/Aircoookie/ESPAsyncWebServer#ac44e32abf2a69ae650412fb6bc193c59ccac38a", pinned to Git commit hash in platformio.ini (compatibility builds pin Git tag "v2.4.0"). Check plan: not checkable: Git repository reference.
- AsyncMqttClient: version "0.9.0" by marvinroger, pinned in platformio.ini. Check plan: not checkable: Arduino library.
- ESPAsyncTCP (ESP8266): version "1.2.2", pinned in platformio.ini. Check plan: not checkable: Arduino library.
- ESPAsyncUDP (ESP8266): unpinned in platformio.ini. Check plan: not checkable: unpinned dependency.
- ESP8266PWM (ESP8266): unpinned in platformio.ini. Check plan: not checkable: unpinned dependency.
- ArduinoUZlib (ESP8266): "https://github.com/tignioj/ArduinoUZlib.git#20aff95cd80c141f80bdbf66895409a0046d2c2f", pinned to Git commit hash in platformio.ini. Check plan: not checkable: Git repository reference.
- NeoPixelBus (ESP8266 & ESP32 IDF V4): "git+https://github.com/Makuna/NeoPixelBus#1d7ff38f14d04a976f9c6e365c83a232bcba04fc", pinned to Git commit hash in platformio.ini (compatibility environment pins version "2.7.9"). Check plan: not checkable: Git repository reference.
- NeoPixelBus (ESP32 IDF V5 CORE3): "git+https://github.com/Makuna/NeoPixelBus#76afe832f74b0738a3fa1bba0caf389ade9e7693", pinned to Git commit hash in platformio.ini. Check plan: not checkable: Git repository reference.
- AsyncTCP (ESP32): version "3.4.10" by esp32async, pinned in platformio.ini. Check plan: not checkable: Arduino library.
- AnimatedGIF: version "^1.4.7" by bitbank2, pinned with caret in platformio.ini. Check plan: not checkable: Arduino library.
- GifDecoder: "https://github.com/Aircoookie/GifDecoder.git#bc3af189b6b1e06946569f6b4287f0b79a860f8e", pinned to Git commit hash in platformio.ini. Check plan: not checkable: Git repository reference.
- esp_dmx (ESP32 IDF V4): "https://github.com/someweisguy/esp_dmx.git#47db25d8c515e76fabcf5fc5ab0b786f98eeade0", pinned to Git commit hash in platformio.ini. Check plan: not checkable: Git repository reference.
- esp_dmx (ESP32 IDF V5): "https://github.com/netmindz/esp_dmx/#esp-idf-v5-fixes", unpinned Git branch in platformio.ini. Check plan: not checkable: unpinned Git branch.
- Vendored C++ libraries noted in platformio.ini comments: ArduinoJson version 5.13.5, E131 version 1.0.0 (modified), Time version 1.5, Timezone version 1.2.1. Check plan: not checkable: embedded in source tree.
Network Exposure:
- Wi-Fi Interfaces: 802.11 b/g/n station client mode with Multi-WiFi support (stores up to 3 SSIDs); falls back automatically to SoftAP (Access Point) mode when no network is reachable.
- Ethernet Interfaces: 10/100 Mbps RMII Ethernet PHY network interface supported on ESP32 boards (e.g., QuinLED, Olimex, LILYGO).
- ESP-NOW: Peer-to-peer 2.4 GHz wireless broadcast synchronization protocol between ESP devices without an external Wi-Fi router (disabled on ESP32-P4).
- Listening Services and Network Protocols:
- HTTP Server: Embedded web server listening on TCP port 80 serving HTML/JS/CSS user interface, HTTP request API, and JSON API (documented in readme.md under "JSON and HTTP request APIs"). Documentation instructs users to access the web interface via browser or the native WLED Android/iOS apps.
- Over-The-Air (OTA) Updates: Password-protectable HTTP OTA and ArduinoOTA listening on standard OTA ports (TCP 8266 or 3232).
- MQTT Client: Connects outbound to external MQTT brokers (default TCP port 1883 or BearSSL TLS port 8883) with Home Assistant auto-discovery support (MQTT_MAX_PACKET_SIZE=1024).
- Lighting and Entertainment Control Protocols:
- E1.31 / sACN: Real-time DMX-over-IP listening on UDP port 5568.
- Art-Net: Professional DMX broadcast listening on UDP port 6454.
- DDP (Distributed Display Protocol): Real-time LED pixel streaming on UDP port 4048.
- TPM2.net: Real-time LED frame streaming on UDP port 65506.
- WLED Realtime UDP Sync / Notifier: Synchronizes preset and effect data across multiple WLED nodes via UDP port 21324.
- Third-Party Integrations: Philips Hue sync listening, Alexa voice control emulation (SSDP/UPnP multicast on UDP port 1900 / HTTP), and Hyperion / diyHue network streaming.
- Default Credentials: The upload files do not document default Wi-Fi AP or web interface credentials (not stated in the sources).
Remaining temporal dependencies
External Web Resources and Downloads:
- Project documentation portal hosted at kno.wled.ge.
- WLED community forums hosted at wled.discourse.group and discord.gg/QAh7wJHrRM.
- WLED Native Mobile App for Android (Google Play Store: ca.cgagnier.wlednativeandroid) and iOS (Apple App Store: 6446207239).
- CORS Proxy service hosted at corsfix.com.
- Specialized firmware update portal for ESP32-P4 / C6 coprocessor radio hosted at esp32-c6-firmware-update.github.io.
- Remote Git repositories and binary releases hosted on GitHub across Aircoookie, wled-dev, tasmota, pioarduino, Makuna, and crankyoldgit repositories.
PCB Fabrication and Physical Construction:
- No Gerber archives, mechanical drawings, drill charts, or PCB CAD layout files were included in the provided sources. Physical implementation relies on off-the-shelf development boards and modules wired to custom lighting power rails or third-party open-source carrier boards (such as QuinLED-Dig-Uno or QuinLED-Dig-Quad). Board dimensions and layer counts are not stated in the sources.