Skip to content

Installing and Compiling

Frank edited this page Oct 3, 2023 · 88 revisions

IMPORTANT: Before attempting to compile this fork of WLED, make sure you can compile the original WLED - instructions are here. If you are unable to compile WLED, please consider flashing your device with binaries instead.

If you managed to compile original WLED, test your new skills and compile the soundreactive fork of WLED.

Installing pre-built binaries

Downloading USB Drivers

Download the CH340 drivers at https://www.wemos.cc/en/latest/ch340_driver.html

Flashing From Binary

The Sound Reactive WLED binaries for ESP32 are located here.

SR WLED releases are also included in this web-based installer: https://wled-install.github.io

Flashing ESP32 Binaries with esptool

Warning: We had to change the partition size on the ESP32 in order to 'fit' all the new features. This means that the 'old way' of upgrading/flashing, no longer work unfortunately. You cannot use ESPHome Flasher, and you cannot use OTA from a build prior to v0.13.0-b5.

  1. Download esptool binary for your PC or MAC.

  2. Download the ESP32 bootloader, such as

  3. Download the sound reactive binary, such as https://github.com/atuline/WLED/releases

  4. Plug the ESP32 board into your computer.

  5. Optionally determine which Com port it uses. You could use NodeMCU-PyFlasher to do this, but don't flash the binary with it.

  6. Open a Command prompt on your computer.

  7. Assuming you copied esptool and both binaries to the same directory, you could clear the contents of the ESP32 with:

    esptool.exe erase_flash

  8. Then burn the bootloader with:

    esptool.exe write_flash 0x0 esp32_bootloader_v4.bin

  9. Once complete, you can now burn the sound reactive binary with:

    esptool write_flash 0x10000 WLEDSR_0.13.X_soundReactive_esp32dev.bin

  10. You can optionally add the port, such as '-p COM6'.

  11. In addition, if this is the first time you've used this version, you need to go to the "Security & Updates" settings page and tick the "Factory reset" box, then select "Save & Reboot". Caveat: May not be necessary if you ran 'erase_flash' above.

  12. This will reset the EEPROM and remove any settings or presets you may have saved.

Note: If you Flash via another method, you will definitely need to perform a Factory Reset. Cycling the power is also a requirement if you're doing anything with I2S.

Flashing ESP8266 Binaries

  1. Download for your platform NodeMCU-PyFlasher.
  2. Plug the WeMOS D1 Mini (or other ESP8266 device) into your computer.
  3. Run NodeMCU-PyFlasher.
  4. Load the binary.
  5. Select the Com port.
  6. Select 'yes, wipes all data'.
  7. Press Flash NodeMCU.

unofficial development binaries - here be dragons

You can find some unofficial SR WLED binaries, including intermediate development builds for ESP32, here:

Installation services

Firmware Binaries

Please keep in mind that these sites are not maintained by the SR WLED team. You may find old outdated binaries, or binaries that might not work on generic ESP32 hardware. So please compare build number and dates, and read descriptions before installing one of these.


Compiling from Platform IO

Getting started

⇛ first read https://kno.wled.ge/advanced/compiling-wled/
→ use source code from https://github.com/atuline/WLED/tree/master
→ start with one of the sound reactive compile environments, like env:soundReactive_esp32dev
→ read wled00/wled.h, add your own settings to wled00/my_config.h
→ put your own compile environment(s) into platformio_override.ini.

SoundReactive has some additional compile time options - see wled00/audio_reactive.h and wled00/audio_source.h.

Additional Compile Guidelines

  • If you get .py errors, install Python (wait for the VSCode popup to install Python)
  • If you do not install the Arduino IDE (Why should you if you have PlatformIO) and your board is not recognised if you compile to board, install the USB to UART bridge VSP Drivers
  • For the sound reactive ESP32 firmware, the board type should be env:soundreactive_esp32dev. This is because we have modified the build partitions in order to go beyond the original compile size limits of WLED.

Note: We have long since stopped compiling WLED with the Arduino IDE.

Disabled Feature of WLED

Some features of "standard WLED" are by default disabled in SR WLED. These extended features have shown negative impacts on performance and stability - we need all available "power" to run sound analysis. For example, they possibly use too much memory (FLASH or RAM), can lead to lags in animations, or may cause slow responses to sound input.

The same is true for many WLED usermods: they might work (like 4LineDisplay), but could have side-effects on our sound reactive features so we disabled them in our "official" firmware builds.

How to Shoot Yourself in the Foot

If you're keen to use a disabled WLED feature, in your personal build of SR-WLED:

  1. check if there is a -D DISABLE_... flag in your build environment (platformio.ini, or platformio_override.ini), and comment it out or remove it.

  2. check if the feature is disabled explicitly in wled00/wled.h.

  3. If a feature has been disabled explicitly in wled.h, then there is usually a good technical reason for that decision. Please don't write bug reports for feature that were disabled explicitly.

  4. If you still want that feature, you can un-disable it like this

Add to your wled00/my_config.h

// re-activate Alexa support. Yes I know this is not supported officially. 
// I don't mind if animations will sometimes "stutter" and lag behind the sound.
#ifdef WLED_DISABLE_ALEXA
  #undef WLED_DISABLE_ALEXA
#endif

// re-activate MQTT support. Yes I know this is not supported officially. 
// I am ready to take good care of my hung, non-responsive device if necessary.
#ifndef WLED_ENABLE_MQTT
  #define WLED_ENABLE_MQTT
  #ifdef WLED_DISABLE_MQTT
  #undef WLED_DISABLE_MQTT
  #endif
#endif

// re-activate IR receiver support. Yes I know this is not supported officially. 
// I can live with my LEDs flickering sometimes, and effects stuttering randomly.
#ifdef WLED_DISABLE_INFRARED
  #undef WLED_DISABLE_INFRARED
#endif

Clone this wiki locally