diff --git a/docs/about/contributors.md b/docs/about/contributors.md
index 3e1a02fb6..c4d010eea 100644
--- a/docs/about/contributors.md
+++ b/docs/about/contributors.md
@@ -10,7 +10,7 @@ This page is to honor the work of all the people who helped to make WLED what it
### Direct Contributors to WLED code
Everyone you see on the Contributors page and:
-8bitbrett made the WiFi auto connect QR code with the Aircoookie/WLED logo!
+8bitbrett made the WiFi auto connect QR code with the wled/WLED logo!
adamo made the animated Discord server logo!
[@blazoncek](https://github.com/blazoncek) makes countless new features and improvements to many parts of WLED!
[@debsahu](https://github.com/debsahu) provided the HomeAssistant autodiscovery and a lot of help with PIO!
diff --git a/docs/about/roadmap.md b/docs/about/roadmap.md
index 243790d1e..a13b130ad 100644
--- a/docs/about/roadmap.md
+++ b/docs/about/roadmap.md
@@ -5,5 +5,8 @@ hide:
# - toc
---
-Please check our [WLED milestone planning](https://github.com/wled/WLED/milestones) for upcoming features and releases.
+**WLED v16.0.0** was released on 3 May 2026. See the [v16.0.0 release notes](https://github.com/wled/WLED/releases/tag/v16.0.0) for the full list of new features.
+
+For features planned in upcoming versions, check the [WLED milestone planning](https://github.com/wled/WLED/milestones) on GitHub.
There is no guarantee if and when a new feature or bugfix will be available!
+
diff --git a/docs/advanced/HUB75.md b/docs/advanced/HUB75.md
index 5a3528a0b..4e8328c30 100644
--- a/docs/advanced/HUB75.md
+++ b/docs/advanced/HUB75.md
@@ -1,65 +1,74 @@
---
-title: HUB75 support
+title: HUB75 Support
---
-WLED now features support for LED matrix panels using the HUB75 format
+WLED now features support for LED matrix panels using the HUB75 format. HUB75 support was added as an official mainline feature in **v16.0.0** — dedicated `_HUB75` build variants are included in the standard release downloads.
You can use either a regular ESP32 with a suitable adapter board such as Huidu HD-WF2, [ESP32 Trinity](https://esp32trinity.com/), [MoonHub75](https://github.com/MoonModules/Hardware/tree/main/MOONHUB75), [rorosaurus/esp32-hub75-driver](https://github.com/rorosaurus/esp32-hub75-driver) or the dedicated [Adafruit Matrix Portal S3](https://www.adafruit.com/product/5778)
This support is supplied by the [ESP32-HUB75-MatrixPanel-DMA](https://github.com/mrcodetastic/ESP32-HUB75-MatrixPanel-DMA?tab=readme-ov-file) library, so see here for more details about supported hardware panels
-
-# Setup
## Required Software Build
+
### Adafruit Matrix Portal S3
-Please use the dedicated ESP32-S3_Adafruit_Matrixportal.bin build as this is pre-configured for the pins needed for HUB75 output
+
+Please use the dedicated `ESP32-S3_Adafruit_Matrixportal.bin` build as this is pre-configured for the pins needed for HUB75 output
### Huidu HD-WF2 ESP32-S3
-* Hold the button down as you use a USB-A to USB-A cable to upload ESP32-S3_HD-WF2.bin
+
+* Hold the button down as you use a USB-A to USB-A cable to upload `ESP32-S3_HD-WF2.bin`
* See more at https://github.com/mrcodetastic/ESP32-HUB75-MatrixPanel-DMA/issues/433
+* The HD-WF2 board doesn't have PSRAM, and may become unstable if you use more than 64x64 pixels.
+
+### Generic ESP32 Support
-### Generic ESP32 support
You must use a build with WLED_ENABLE_HUB75MATRIX defined, for example, ESP32_HUB75.bin. If you do not see Hub75 options in the list of LED types, you are not using the correct build
If you are using a board such as the ESP32 Trinity or other boards wired for the default pinout of the ESP32-HUB75-MatrixPanel-DMA driver, this is selected by default

-
If you are using the rorosaurus/esp32-hub75-driver or any other board using the SmartMatrix default pinout then you will need to use the ESP32_HUB75_forum_pinout.bin which has ESP32_FORUM_PINOUT defined
If you are using any other config, you currently need to edit wled00/bus_manager.cpp to add a new elif block and define to your build - it is not possible to set the HUB75 pin config in LED preferences at the moment
### MoonHub75
+
This project is a passive adapter board to connect a [Lilygo T7-S3](https://lilygo.cc/products/t7-s3) to a HUB75 Panel. Use ESP32-S3_16MB_opi_HUB75.bin.
This is the recommended option as it had the most memory, so can handle the highest number of pixels and also supports multiple digital mic options.
-
## Configuration
-### Panel size and chain length
-* Due to limitations in the HUB75 DMA driver, only these panel dimensions are supported:
- * 32 x 32 (2-scan or 4-scan)
- * 64 x 32 (2-scan or 4-scan)
- * 64 x 64 (2-scan or 4-scan)
- * 128 x 64 (2-scan or 4-scan).
-* Only _one HUB75e port_ is supported.
-* Please chain your panels (panel#1 _OUT_ --> panel#2 _IN_) if you want to control more than one panel.
-* Maximum possible size:
- * Classic ESP32: the maximum possible size is 128x64 - however WLED might get unstable with this setup. We recommend to use no more than 64x64 on classic esp32.
- * ESP32-S3 without PSRAM (including Huidu HD-WF2): the maximum possible size is 128x64, however we recommend to use 64x64 because the firmware might get unstable above this size.
- * ESP32-S3 with PSRAM - octal "opi" PSRAM recommended (including LilyGO T7-S3) : the maximum possible size is 256x64, i.e. 4 chained panels of 64x64 pixels each.
- * ESP32-S2 is possible, however _not recommended_ due to smaller RAM
- * ESP32-C3, ESP32-C6 and ESP8266 do not support HUB75
+
+### Panel Size and Chain Length
+
+Due to limitations in the HUB75 DMA driver, only these panel dimensions are supported:
+
+* 32 x 32 (2-scan or 4-scan)
+* 64 x 32 (2-scan or 4-scan)
+* 64 x 64 (2-scan or 4-scan)
+* 128 x 64 (2-scan or 4-scan).
+
+Only _one HUB75e port_ is supported.
+Please chain your panels (panel#1 _OUT_ --> panel#2 _IN_) if you want to control more than one panel.
+
+#### Maximum possible size with panel chaining:
+
+* Classic ESP32: the maximum possible size is 128x64 - however WLED might get unstable with this setup. We recommend to use no more than 64x64 on classic esp32.
+* ESP32-S3 without PSRAM (including Huidu HD-WF2): the maximum possible size is 128x64, however we recommend to use 64x64 because the firmware might get unstable above this size.
+* ESP32-S3 with PSRAM - octal "opi" PSRAM recommended (including LilyGO T7-S3) : the maximum possible size is 256x64, i.e. 4 chained panels of 64x64 pixels each.
+* ESP32-S2 is possible, however _not recommended_ due to smaller RAM
+* ESP32-C3, ESP32-C6 and ESP8266 do not support HUB75
### Setup
+
First, you must set the LED output to match the correct Hub75Matrix option for the panel size you are using. The chain length is the number of panels connected. Note: currently only a horizontal chain of panels is supported. ~~You can used 2D setup to configure physical panel positions~~ unfortunately it's not possible to use 2D setup to change the panel layout of chained panels.
Next, you need to go into the 2D Configuration and create a _single_ matrix with the total size of your hub75 setup. e.g a chain of 2 panels with 32x32 pixels each, would be created as a 64x32 matrix in the 2D configuration page
+## HUB75 Known Problems and Limitations
-## HUB75 Known Problems and Limitations
-* Maximum possible sizes: see previous section
-* combining HUB75 with other LED types (including virtual leds) was not tested yet - it may or may not work.
+* Maximum possible sizes: [see previous section](#panel-size-and-chain-length)
+* After changing HUB75 options (LED preferences), your display will go black. You need to reboot for driver changes to take effect.
* classic ESP32: using audioreactive microphones (or line-in) causes crashes and wifi instabilities. You can still use UDP sound receive for receiving audio data from another board. Please select "None - network receive only" as DigitalMic type.
* ESP32-S2: its not possible to use HUB75 and audioreactive at the same time.
-* ESP32-S3: After changing HUB75 options (LED preferences), your display will go black. You need to reboot for driver changes to take effect.
+* ESP32-S3: audioreactive works together with HUB75 panel output. There are no known restrictions.
diff --git a/docs/advanced/audio-reactive.md b/docs/advanced/audio-reactive.md
index 02c0cbf2e..2defd15c6 100644
--- a/docs/advanced/audio-reactive.md
+++ b/docs/advanced/audio-reactive.md
@@ -7,76 +7,188 @@ hide:
## What is Audio Reactive WLED?
-Audio Reactive WLED is a possibility of using WLED controllers in such a way that the LEDs react to music and light up in time. First time this was implemented by a [Sound Reactive Fork](https://github.com/atuline/WLED). As of WLED version 0.14.0-beta1 an usermod is available for original WLED too. Since version 0.15.0 this usermod is included in the official WLED releases.
+Audio Reactive WLED lets your LEDs react to music and sound in real time. Originally implemented as the [Sound Reactive Fork](https://github.com/atuline/WLED), audio reactivity became an official usermod in WLED 0.14.0 and has been included in every official release since 0.15.0.
-## Hardware required
+An advanced version of AudioReactive is available in the [WLED-MM fork](https://github.com/MoonModules/WLED-MM). It will be integrated in the next major WLED release, v17.0.0.
-The audio must be "feed" into the microcontroller. There are basically four options: using microphones, line-in adapters, another WLED instance or directly from a PC.
+## Hardware Required
-### ESP / microcrontrollers supported
-Audio Reactive (AR) works on all ESP controllers but with some limitations:
+Audio must be fed into the microcontroller. There are four options: a microphone, a line-in adapter, another WLED instance, or a PC running audio-sync software.
-- ESP8266 does not support any microphone input, AR streaming mode only
-- ESP32 C3 is too slow and does not include AR by default, enabling AR requires a custom build
-- ESP32 S2, S3 (and C3) support digital microphones only
-- Classic ESP32 supports digital and analog microphones
-- PDM microphones (like SPM1423, see below) are supported on Classic ESP32 and ESP32-S3, but not supported on ESP32-S2 and ESP32-C3.
+### Supported ESP / Microcontrollers
-### Microphones supported
+Audio Reactive (AR) works across the ESP family, with a few differences per variant:
-Three microphone types are supported:
+- **Classic ESP32** — full support: digital and analog microphones
+- **ESP32-S3** — I2S digital and PDM microphones only
+- **ESP32-S2** — I2S digital microphones only (no PDM)
+- **ESP32-C3** — I2S digital microphones only (since WLED v16.0)
+- **ESP8266** — no microphone input; can participate in AR via network sync (receive mode only)
-#### 1. Analog microphones - Not recommended
+!!! Note "Left Channel"
+ Both digital microphones and line-in adapters must provide sound input via the LEFT audio channel.
+ For the INMP441, this is achieved by wiring the 'L/R' connection to GND (ground).
-Examples are MAX4466 (really not good) and MAX9814 (slightly better). These microphones are easy to use: you just have to connect 3.3V, GND and the analog output from the microphone to an ADC input (Analog-to-Digital Converter) of ESP32. However, the big disadvantage is the quality: both from the microphones themselves and from the ADCs integrated into microcontrollers, which are actually not well suited for audio processing and are highly influenced by the power supply noise.
-
+### Microphones
-!!! info "Analog microphones and analog buttons (potentiometers) rule out each other"
- WLED can use analog microphones or [analog buttons](/features/macros/#analog-button) but not both at the same time!
+#### I2S Digital Microphones — Recommended
-#### 2. I2S digital microphones - Better option
+Examples: INMP441, ICS-43434, ICS-43432.
-Examples are INMP441 and ICS-43434/ICS-43432. These have an integrated ADC and already output a digital signal. The advantage is the best possible quality. The disadvantage is higher complexity (you need several PINs for a digital signal). For proper trouble-free operation keep wires between the microphone and ESP32 as short as possible and solder them properly.
+These microphones have an integrated ADC and output a clean digital signal. They give the best audio quality. The trade-off is that they need several GPIO pins, so keep wiring short and well-soldered to avoid noise issues.

-There are also some commercial controllers with integrated digital microphone or plug-in capability available. Be sure to setup correct GPIOs according to the information you typically will find printed on the board or in user manual.
+Some commercial controllers come with an integrated digital microphone or a plug-in socket for one. Check the board's silkscreen or manual for the correct GPIO assignments.

-#### 3. PDM microphones
+#### PDM Microphones
-An example is SPM1423. In principle, these are also digital microphones with an integrated Sigma-Delta ADC. They are slightly cheaper than I2S microphones, require one PIN less and the quality is quite good. PDM microphones are only supported on Classic ESP32 and on ESP32-S3.
+Example: SPM1423.
-### Line-In options
+PDM microphones are also digital with an integrated Sigma-Delta ADC. They're slightly cheaper than I2S microphones, need one fewer GPIO pin, and deliver good quality. PDM is supported on Classic ESP32 and ESP32-S3 only.
-Similar to microphones there are options for analog or digital line-in adapters. In both cases you use line-out (AUX) or headphone-out signal of your sound system/TV/Smartphone/etc.
+#### Analog Microphones — Not Recommended
-#### 1. Analog line-in option
+Examples: MAX4466, MAX9814.
-At least a simple analog circuit as shown below is required to prepare the analog line-out signal and to feed it to the ADC converter of ESP32 microcontroller. In this case, the whole thing works like with an analog microphone. The quality is not the best here either because the ESP32 ADC is not particularly good at converting audio signals and the signal conditioning circuitry is very simple, but not very good. In addition, the sensitivity can be quite poor, so that the whole thing only works at a higher volume of the signal.
+These are the simplest to wire (just 3.3 V, GND, and one ADC pin), but the quality is poor. The ESP32's built-in ADC is not well suited for audio and is easily affected by power supply noise. Use a digital microphone instead if at all possible.
-
+
+
+**Recommended analog GPIO pins (Classic ESP32 only):** GPIO 36 (also labelled VP or ADC1\_CH0) is the best choice. GPIO 32–39 on ADC1 all work. **Do not use any ADC2 pin** (GPIO 0, 2, 4, 12–15, 25–27) — ADC2 conflicts with the WiFi radio and with I2S sampling, causing unreliable results.
+
+!!! warning "Analog microphones and analog buttons are mutually exclusive"
+ WLED can use an analog microphone **or** [analog buttons](/features/macros/#analog-button), but not both at the same time.
+
+!!! failure "Don't Waste Your Money on Cheapest Hardware"
+ Some inexpensive sound sensors, such as the LM393, KY-038 or KY-037, only have an on/off output (i.e. they detect either "sound" or "silence"). Sometimes, there is an additional "analogue data out" pin, but the quality is extremely low.
+ These "clap sensors" cannot be used with AudioReactive.
+
+### Line-In Options
-In some cases, you can do it without this circuit and connect the GND of the audio source and an audio channel (left or right) directly to ESP32 ADC Pin (GND and analog input, e.g. GPIO36 pin on the ESP32). This solution is rather quite dirty workaround and might work well or not at all.
+Both analog and digital line-in work with the line-out / headphone-out of a sound system, TV, phone, etc.
-#### 2. Line-in to I2S adapter - Best Option
+#### Line-In to I2S Adapter — Best Option
-Line-in to I2S adapter converts the analog line-out or headphone signal into a digital I2S signal that can be processed by ESP32. There are some general or for WLED specially developed analog-to-I2S adapters based on for example CirrusLogic CS5343, TI PCM1808 or es7243 chips on the market. In this case, the whole thing works like with a digital I2S microphone. The only difference with I2S microphone is that you at least need an extra PIN for MCLK (Master Clock) signal, which can only be generated by the ESP32 on GPIOs 0, 1 or 3. The other complication is that MCLK is a high-frequency signal and must be wired extremely carefully and have short wires. Some adapter types also require more additional signals. For stability, it is better to use a ready-to-use controller with a special Line-In to I2S adapter or DIY PCB design where you can integrate a general analog-to-I2S adapter directly without long wires.
+An analog-to-I2S adapter (using chips such as the CirrusLogic CS5343, TI PCM1808, or ES7243) converts the analog line signal to a clean digital I2S stream. This works the same as a digital I2S microphone in WLED, but you'll need an extra GPIO for MCLK (Master Clock). On ESP32, MCLK can only be generated on GPIOs 0, 1, or 3. Because MCLK is a high-frequency signal, keep those wires very short.
-An example board with integrated Line-In is the [LyraT](https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/board-esp32-lyrat-v4.3.html)
+The WLED-MM documentation provides further information on how to [connect commonly used I2S line-in adapters](https://mm.kno.wled.ge/soundreactive/Line-Input/).
+
+An example board with integrated line-in is the [LyraT](https://docs.espressif.com/projects/esp-adf/en/latest/design-guide/dev-boards/board-esp32-lyrat-v4.3.html).

-For some more details please refer to [Sound Reactive WLED WIKI](https://mm.kno.wled.ge/soundreactive/introduction/)
+#### Analog Line-In
+
+A simple conditioning circuit (shown below) is needed to scale the line-out signal down to a level the ESP32 ADC can handle. Quality is limited for the same reasons as with analog microphones — this is a fallback option when an I2S adapter isn't available.
+
+
+
+In a pinch you can connect audio GND and one audio channel directly to an ESP32 ADC pin (e.g. GPIO 36), but results vary widely and this is not recommended for permanent installs.
+
+For more detail, see the [Sound Reactive WLED Wiki](https://mm.kno.wled.ge/soundreactive/introduction/).
+
+!!! warning "Press Reset after changing the microphone type"
+ After saving a change to the microphone type (or any audio input setting), press the physical **RST** button on your ESP32. WLED can't reconfigure the audio input on the fly — the I2S driver is set up at boot, so only a hard CPU reset picks up the new configuration.
+
+## Configuration
+
+The Audio Reactive settings page (**Config → Usermods, AudioReactive**) lets you tune how WLED responds to sound. The most important controls are Squelch, Gain, and AGC.
+
+### Squelch
+
+Squelch sets the noise floor — the minimum signal level that WLED treats as "sound". Any input below this threshold is ignored, so your LEDs stay still during silence instead of flickering from background noise.
+
+Start with a higher squelch value and lower it until the LEDs just stop reacting to ambient noise in your room. A good squelch value means no activity in silence, but an instant response when music starts.
+
+For digital microphones, **squelch** is usually somewhere between 1 and 20. You might have to go up 64 with analog microphones to cut out noise.
+
+### Gain
+
+Gain amplifies the input signal before processing. The range is 1–255, which corresponds to roughly –20 dB to +16 dB. Use gain to match the signal level from your specific microphone or line-in source to the expected input range.
+
+Line-in signals are typically lower than microphone signals, so you'll usually need a higher gain setting for line-in.
+
+### AGC — Automatic Gain Control
+
+AGC automatically adjusts the internal gain based on how loud the audio currently is — so you don't have to keep tweaking the Gain slider as the volume changes. The prerequisite is that **Squelch is set correctly first**, so AGC knows what "silence" looks like.
+
+Four modes are available:
+
+| Mode | Behaviour |
+|---|---|
+| **Off** | No automatic adjustment. WLED uses the Gain value exactly as set. |
+| **Normal** | Smoothly follows changes in volume. A good default for most setups. |
+| **Vivid** | Reacts quickly to volume changes. More dramatic LED response to dynamics. |
+| **Lazy** | Slower to adjust. Works well for GEQ effects or music with wide dynamic range. |
+
+### First-Time Setup
+
+Once your microphone or line-in is set up, here's a reliable method for dialling in squelch and gain on a new device:
+
+1. Select the **Gravimeter** effect and leave its sliders at their default positions.
+2. Go to **Config → Usermods** and scroll down to the **AudioReactive** section.
+3. Set **Gain** to a high value (e.g. 200+), set **Squelch** to `1`, and turn **AGC** off. Save.
+4. The LEDs should now react to almost anything, even ambient noise.
+5. In a quiet environment, **gradually increase Squelch** (saving each time) until the LEDs stop reacting to background noise.
+6. Once silence is stable, **lower Gain to around 40** and play music at normal volume. Adjust Gain until the LEDs respond as expected.
+7. Optionally, enable **AGC** (Normal mode is a good starting point) and it will handle volume changes from here.
+
+## Audio Sync
+
+You don't need a microphone on every WLED device. One device captures the audio and shares it over the network; the rest just receive.
+
+### WLED-to-WLED Sync
+
+In the AudioReactive settings, set one device to **Send** mode and all others to **Receive**. The sending device multicasts audio data to UDP multicast address `239.0.0.1`, default port `11988`. All receiving devices on the same network pick it up automatically.
+
+You can change the UDP port in the Audio Reactive settings — useful if you want to run multiple independent sync groups on the same network.
+
+This also means that ESP8266 devices can take full advantage of Audio Reactive effects — they just need to be set to receive mode and have a WLED ESP32 on the same network doing the audio capture.
+
+!!! tip "Sync not working or delayed?"
+ Disable **Wi-Fi Multimedia (WMM) Mode / QoS** on your Wi-Fi router. This setting can interfere with UDP multicast and is a common cause of sync dropouts or latency.
+
+### Audio Sync from a PC
+
+Any of the following tools can capture audio from your computer, process it into WLED Audio Sync format, and broadcast it on your network — emulating a WLED device in send mode. Set all your WLED instances to receive.
+
+| Tool | Platform | Notes |
+|---|---|---|
+| [WledSRServer](https://github.com/Victoare/SR-WLED-audio-server-win) | Windows | Simple standalone app; sends V2 sync packets. |
+| [Feed\_My\_WLED](https://github.com/chrisgott/feed_my_wled) | macOS / Linux | Python script; good choice for non-Windows users. |
+| [WLEDAudioSync for Chataigne](https://github.com/zak-45/WLEDAudioSync-Chataigne-Module) | Cross-platform | Feature-rich audio toolset for [Chataigne](https://benjamin.kuperberg.fr/chataigne/); suits complex setups. |
+
+Learn more about the **UDP sound Sync** feature in the [documentation of the MM-fork](https://mm.kno.wled.ge/soundreactive/sync/).
+
+## Audio Reactive Palettes
+
+Most WLED effects that support palette colouring (the majority of them) pick colours by looking up a position in the active palette. Audio Reactive takes advantage of this by providing three special palettes whose colours are driven by live audio data — so any palette-aware effect automatically becomes audio responsive when one of these palettes is selected.
+
+### Enabling the Palettes
+
+The palettes are off by default. To enable them, go to **Config → Usermods, AudioReactive** and turn on **Add Palettes**. This adds three new entries to the palette list, all prefixed with `AudioReactive:`.
+
+_This feature was contributed by [@netmindz](https://github.com/netmindz)._
+
+#### The Three Palettes
+
+Each palette is a four-stop dynamic gradient that is recalculated every frame from the current FFT frequency data.
+
+| Palette | How it works |
+|---|---|
+| **AudioReactive: Ratio** | Builds RGB values directly from three frequency bands (sub-bass, mid, and upper-mid). The ratio between those bands determines the resulting colour mix. |
+| **AudioReactive: Hue** | Maps palette position across the lower frequency bands. Each band's amplitude sets both the hue and brightness, giving a colour that shifts with the dominant low frequency. |
+| **AudioReactive: Spectrum** | Maps palette position across all 16 GEQ frequency channels. Each channel's amplitude drives the hue for its slice of the palette, so the full frequency spectrum is visible as colour. |
-### Audio Sync - WLED
-You do not need to include an audio input source in every WLED device to take advantage of the Audio Reactive effects. Simply set the sync mode to "send" on the device with the audio input and all the other devices set to "receive" for their sync mode in the Audio Reactive settings.
-This only works if your network supports multicast.
+#### Tips
-### Audio Sync - WledSRServer
-For Windows, there is [WledSRServer](https://github.com/Victoare/SR-WLED-audio-server-win) which is a small application that can capture audio directly from your PC, process it into WLED Audio Sync data and send it out onto your network - emulating WLED in send mode. Configure all your WLED instances to receive.
+- These palettes work with **any** effect that reads from the active palette — not just effects designed for audio. Try them with effects like Fire, Noise, or Plasma to get audio-driven colour without needing a dedicated AR effect.
+- Because the palette refreshes every frame, the colour changes are as fast and smooth as your audio input.
+- Combine with the **Squelch** setting in Audio Reactive to keep colours steady during quiet passages.
-## Software required
+## Software
-Because audio reactive capability is currently implemented as a usermod, you need WLED compiled with this usermod included. The [official WEB-based WLED installer](https://install.wled.me/) includes the usermod by default since version 0.15.0. The [unofficial WEB-based WLED installer](https://wled-install.github.io/) offers more options including original WLED with audio reactive usermod for older versions.
+Audio Reactive is included in all official WLED builds from v0.15.0 onwards. The [official WLED web installer](https://install.wled.me/) includes it by default. No custom build is needed.
diff --git a/docs/advanced/bootloop-recovery.md b/docs/advanced/bootloop-recovery.md
new file mode 100644
index 000000000..13ca92e49
--- /dev/null
+++ b/docs/advanced/bootloop-recovery.md
@@ -0,0 +1,65 @@
+---
+title: Boot-loop Detection & Recovery
+---
+
+WLED can detect when your controller is stuck in a crash loop and automatically take steps to recover it — without you needing a USB cable or serial terminal. This feature is especially useful after a bad settings change, a corrupted config file, or a failed OTA update.
+
+---
+
+## What Counts as a Boot-loop?
+
+WLED counts **crash resets** stored in RTC memory (which survives a soft reboot). A crash reset is any of these reset reasons:
+
+- Exception / software exception
+- Hardware watchdog timeout
+- Software watchdog timeout
+- Panic / abort
+- Task watchdog timeout
+
+Normal power-on resets and clean software restarts reset the counter to zero. Brownout resets are logged but **do not** increment the counter.
+
+If **5 or more crashes** happen within a **2-minute rolling window**, WLED considers the device stuck in a boot-loop and triggers the recovery sequence.
+
+---
+
+## Recovery Sequence
+
+Recovery actions are taken **one per boot**, in order. After each action WLED restarts immediately. If the device still crashes after that restart, the next action is taken on the following boot.
+
+| Step | Action | What it does |
+|---|---|---|
+| **1** | Restore backup config | Copies `/bkp.cfg.json` back over `/cfg.json` — rolls back to the last known-good configuration. |
+| **2** | Reset config | Renames `/cfg.json` to `/rst.cfg.json` and starts WLED with factory defaults. Your old config is preserved in `/rst.cfg.json` for manual recovery. |
+| **3** | Firmware rollback *(ESP32 only)* | Swaps the OTA boot partition to the previous firmware image. Useful after a bad OTA update. On ESP8266 this step is skipped. |
+| **4** | Emergency serial dump | Dumps all filesystem files to the serial port and then **loops indefinitely**. WLED will not start normally again until you power-cycle or hardware-reset the board. Connect a serial terminal at 115200 baud to retrieve the files. |
+
+!!! warning
+ Step 4 is the last resort. WLED stops booting and only outputs to serial. A hardware reset (power cycle or the RST button) is required to exit this state.
+
+---
+
+## How the State Is Stored
+
+The crash counter and recovery progress are stored in **RTC memory**, which persists across soft reboots but is cleared by a power cycle or hardware reset.
+
+- **ESP32:** uses `RTC_NOINIT_ATTR` static variables (three values: last boot timestamp, crash count, recovery step).
+- **ESP8266:** uses `RTC_USER_MEM` slots 32–34 (same three values).
+
+This means:
+
+- Pulling the power clears the counter — the device starts fresh on the next boot.
+- A clean software restart from the WLED UI also clears the counter.
+
+---
+
+## Where This Runs
+
+Boot-loop detection runs very early in startup (`WLED::setup()`), right after the filesystem is mounted and before any configuration is loaded. This ensures recovery can happen even if config loading itself is what causes the crash.
+
+---
+
+## Tips
+
+- If your device lands in **Step 2** (reset config), check the serial log or the filesystem editor for `/rst.cfg.json` — your previous settings are still there.
+- If you're on ESP32 and a firmware update went wrong, **Step 3** (rollback) may recover you automatically without needing to re-flash.
+- To manually clear the crash counter without power-cycling, do a clean restart from the WLED web UI (reboot button in Settings → Security & Updates).
diff --git a/docs/assets/images/content/example_i2s_mic.jpg b/docs/assets/images/content/example_i2s_mic.jpg
index b17b77afd..0e1063c47 100644
Binary files a/docs/assets/images/content/example_i2s_mic.jpg and b/docs/assets/images/content/example_i2s_mic.jpg differ
diff --git a/docs/basics/getting-started.md b/docs/basics/getting-started.md
index b9f69f017..f90bd8b43 100644
--- a/docs/basics/getting-started.md
+++ b/docs/basics/getting-started.md
@@ -5,7 +5,7 @@ hide:
# - toc
---
-## Welcome to the WLED wiki!
+## Welcome to the WLED Wiki!
!!! info "Version Info"
Unless noted otherwise, all information applies to the latest release.
@@ -23,7 +23,8 @@ hide:
_If the connecting wire cannot be kept short, use a [level shifter/translator](/basics/compatible-hardware#levelshifters)._ Optionally, connect a normally open pushbutton to `GPIO0` (NodeMCU/Wemos pin `D3`, on ESP32 use `IO17`) and ground for [configurable actions](/features/macros).
-**Caution:** Board pin naming varies depending on the manufacturer. Please use the board pinout from the _specific_ board you purchased and use the GPIO pins to reference this guide. _Make sure to connect ESP and LED-strip grounds together!_
+!!! warning
+ Board pin naming varies depending on the manufacturer. Please use the board pinout from the _specific_ board you purchased and use the GPIO pins to reference this guide. _Make sure to connect ESP and LED-strip grounds together!_

Check out the [Wiring Guides](/basics/wiring-guides) for more examples.
diff --git a/docs/features/custom-fonts.md b/docs/features/custom-fonts.md
new file mode 100644
index 000000000..2c18a0775
--- /dev/null
+++ b/docs/features/custom-fonts.md
@@ -0,0 +1,70 @@
+---
+title: Custom Fonts
+---
+
+WLED supports loading custom bitmap fonts for use with the **Scrolling Text** effect. Custom fonts are stored on the device filesystem as `.wbf` files and can be created with the Font Factory tool, see below.
+The source code of the tool as well as a collection free-to-use fonts are available [on github](https://github.com/DedeHai/WLED-Tools/tree/main/WLED-FontFactory).
+
+---
+
+## Built-in Fonts
+
+WLED ships with five built-in fonts. In v16.0, four of them were redrawn for improved legibility while keeping the same pixel heights for backward compatibility. All built-in fonts now use **per-glyph variable width**, so narrow characters like `i` take less space than wide ones like `W`.
+
+| "Font Size" | Height |
+|------|---------------|
+| 1 | 6 px |
+| 2 | 8 px |
+| 3 | 8 px |
+| 4 | 9 px |
+| 5 | 12 px |
+
+!!! tip "Classic Pre-16.0 Fonts"
+ If you want the classic pre-16.0 fonts, a button in the PixelForge Scrolling Text tab lets you download "Classic WLED Fonts" as custom fonts. Make sure no additional custom fonts are installed, then enable the "Custom Font" checkbox.
+
+---
+
+## Custom Font Files
+
+WLED uses a custom font format called **WBF** which stands for WLED Bitmap Font. Up to **5 custom font files** can be loaded from the filesystem. To use custom fonts enable the "Custom Font" checkmark in the scrolling text effect and choose the font using the "Size" slider. If less than 5 fonts are available, the smallest ones use custom fonts and larger sizes default to the built-in fonts. When more than 5 fonts are uploaded, only the first five are used (in alphabetical order).
+
+### File Format
+
+`.wbf` files use a tightly bit-packed binary format with a 12-byte header. You don't need to create or edit them by hand — use the Font Factory tool instead that is available in PixelForge.
+
+### UTF-8 Support
+
+Custom fonts can include Unicode characters beyond standard ASCII. The `.wbf` format supports 2-, 3-, and 4-byte UTF-8 code points, making it possible to use accented Latin characters, Cyrillic and other scripts. To add international characters please use the Font Factory tool - it has a user friendly drop-down menu to select from and even allows to specify custom UTF8 table offsets to add mathematical symbols for example.
+
+### Enabling Custom Fonts
+
+1. Upload your `.wbf` file(s) to the WLED filesystem via the **File Manager** (`/edit`) or create and upload a font using the Font Factory tool.
+2. Open the **Scrolling Text** effect settings.
+3. Enable the **Custom Font** checkbox.
+4. Use the "Size" slider to select the font
+
+If no `.wbf` files are found on the filesystem, WLED falls back to the built-in fonts automatically. You can see currently available fonts and also delete them using the PixelForge tool.
+
+---
+
+## Creating Fonts with Font Factory
+
+[WLED Font Factory](https://github.com/DedeHai/WLED-Tools/tree/main/WLED-FontFactory) is a web-based tool for creating `.wbf` font files. It is available in the PixelForge (button below the color picker)under "Other Tools".
+
+!!! info "Terminology"
+ A single symbol or letter in a font is also referred to as a "glyph" — a typographical character.
+
+### Workflow
+
+1. Load a source font — supported formats are **TTF**, **OTF**, **WOFF** as well as pixel based **BDF** and native **WBF**
+2. Choose whether to use variable or fixed glyph width
+3. Adjust the three sliders until you get the desired font size - the sliders are not available when loading bitmap fonts
+4. Choose which UTF-8 extenstion to include (e.g. Latin, Cyrillic, Greek etc.) - use preview example text to test
+5. Set the pixel height. The tool renders each glyph at that height.
+6. Edit individual glyphs pixel by pixel in the built-in glyph editor if needed or delete unwanted glyphs to save space
+7. Click **Upload** to save the `.wbf` file to the controller directly or **Download** to store it on your phone/pc
+
+### Showcase Your Font
+
+The Font Factory source files include the [showcase tool](https://github.com/DedeHai/WLED-Tools/blob/main/WLED-FontFactory/source/wbfShowcaseGenerator.htm) available for download (click "Download raw file", then open the file).
+It renders a `.wbf` file into a PNG image with all glyphs in the font. Use it to show a preview of your font if you want to share it on discord, reddit or any other place.
diff --git a/docs/features/effects.md b/docs/features/effects.md
index 747c068e7..aa3079845 100644
--- a/docs/features/effects.md
+++ b/docs/features/effects.md
@@ -6,9 +6,26 @@ hide:
---
!!! info "Version Info"
- Effects above 117 are only available 0.14+ or Sound Reactive forks.
+ Effects above 117 are only available 0.14+ or Sound Reactive forks.
+ v16.0 adds 36 new effects — see [New in v16.0](#new-in-v160) below.
[Retired Effects](#retired-effects) - Can't find an old favorite? Look here.
+## New in v16.0
+
+v16.0 adds **36 new effects** across 1D, 2D, and the Particle System:
+
+**1D Particle System effects** (requires [Particle System](/features/particle-system)):
+PS DripDrop, PS Pinball, PS Dancing Shadows, PS Fireworks 1D, PS Sparkler, PS Hourglass, PS Spray 1D, PS 1D Balance, PS Chase, PS Starburst, PS GEQ 1D, PS Fire 1D, PS Sonic Stream, PS Sonic Boom, PS Spring
+
+**2D Particle System effects** (requires a 2D segment):
+PS Fire, PS Waterfall, PS Vortex, PS Fireworks, PS Volcano, PS Ballpit, PS Box, PS Fuzzy Noise, PS Impact, PS Attractor, PS Spray, PS GEQ Nova, PS Ghost Rider, PS Blobs, PS Galaxy, PS GEQ 2D
+
+**Other new effects:**
+PacMan, Shimmer, Color Clouds, Slow Transitions, Copy Segment
+
+**user_fx usermod effects** (requires `user_fx` usermod build):
+Diffusion Fire, Spinning Wheel, Lava Lamp, Magma, Ants, Morse Code, PS Comet
+
## Effect Overlay
Since 16.0 true segment & effect overlay is supported.
@@ -49,7 +66,7 @@ For 2D effects the background (secondary) color is set to black.
## Effects
| ID | Effect | Description | Flags | Colors | Parameters |
-|----:|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------|-----------------------------------------|-------------------------------------------------------------------------------|
+|:----|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------|-----------------------------------------|-------------------------------------------------------------------------------|
| 186 | Akemi | The WLED mascot rocking to your tunes.
 | ▦ ♫ | Head palette, Arms & Legs, Eyes & Mouth | Color speed, Dance |
| 27 | Android | Section of varying length running
 | ⋮ | 🎨 Fx, Bg | Speed, Width |
| 38 | Aurora | Simulation of the Aurora Borealis
 | ⋮ | 🎨 1, 2, 3 | Speed, Intensity |
@@ -233,7 +250,7 @@ For 2D effects the background (secondary) color is set to black.
All new effects support palettes except pacman. Effects with the prefix "PS" use the particle system.
| ID | Effect | Description | Flags | Colors | Parameters |
-|---:|:---|:---|:---:|:---:|:---|
+|:---|:---|:---|:---:|:---:|:---|
| 187 | **PS Volcano** | Erupting volcano.
 | ▦ | 🎨 | **Speed:** Particle speed
**Intensity:** Particles emitted
**Move:** Movement velocity
**Bounce:** Collision hardness
**Spread:** Emitter variation
**AgeColor:** Color by particle age
**Walls:** Enable side boundaries
**Collide:** Enable particle-particle collisions |
| 188 | **PS Fire** | Versatile and quite realistic fire effect.
 | ▦ | 🎨 | **Speed:** Flame speed
**Intensity:** Heat intensity
**Flame height:** Vertical reach
**Wind:** Wind speed
**Spread:** Fire width
**Smooth:** Enable Smoothing/Blurring
**Cylinder:** Wrap left & right
**Turbulence:** Add turbulence |
| 189 | **PS Fireworks** | Rockets shooting up and exploding in various ways and colors.
 | ▦ | 🎨 | **Launches:** Rocket launch frequency
**Explosion Size:** size of explosion
**Fuse:** Detonation timer
**Blur:** Trail softness
**Gravity:** Pull force
**Cylinder:** Wrap left & right
**Ground:** Enable floor
**Fast:** Doubles speed |
diff --git a/docs/features/macros.md b/docs/features/macros.md
index bc7be0259..e1b6bb77a 100644
--- a/docs/features/macros.md
+++ b/docs/features/macros.md
@@ -41,7 +41,9 @@ For further buttons, the default action for short press is cycling effects, long
## Buttons
-Multiple buttons are implemented since 0.13 and allow a few different types of buttons to be connected to the ESP:
+Multiple buttons are implemented since 0.13. Starting in v16.0, up to **32 buttons** can be configured without any custom compilation — use the LED Settings page to add as many as you need.
+
+The following button types are supported:
- momentary push-buttons that are normally open and short GPIO pin to ground (active low)
- momentary push-buttons that are normally closed and release the connection from GPIO pin to GND (inverted, active high)
@@ -63,7 +65,8 @@ For assigning [Presets](/features/presets) to buttons use _Time & Macros_ settin
Note: Button 0 has two, built-in functions. 1. Hold it down for >6 seconds and the Wi-Fi settings will be reset to default. 2. Hold it down for >12 seconds and flash memory is erased.
-### Analog button
+### Analog Button
+
Starting in WLED 0.13, analog "buttons" (e.g. a potentiometer) are supported.
With the Short and Long columns set to 0, set the Double column in Button Actions to one of these values to configure:
@@ -82,7 +85,7 @@ This potentiometer should be supplied 3.3V and GND, with it's output supplied to
On ESP8266, you can only have a single analog button on pin A0, the pin set in the settings UI is ignored.
On ESP32, only ADC1 pins will work for analog input while WiFi is active (pins 32-39). ADC2 pins will not work.
-### Global brightness
+#### Global Brightness
Users planning to use a potentiometer for global brightness should be aware that wled is configured to turn off when the potentiometer is adjusted to either extreme - both maximum and minimum adjustments. Users who desire to disable this functionality may do so on the hardware side by adding resistors between the potentiometer and the rails.
diff --git a/docs/features/palettes.md b/docs/features/palettes.md
index b35486dc7..4f4e8d241 100644
--- a/docs/features/palettes.md
+++ b/docs/features/palettes.md
@@ -6,7 +6,7 @@ hide:
---
!!! info "Version Info"
- Beginning in 0.14 up to 10 [Custom Palettes](#custom-palettes) can be uploaded.
+ Beginning in 0.14 up to 10 [Custom Palettes](#custom-palettes) can be uploaded. Starting in v16.0, over 100 custom palettes are supported, a new palette editor is built into the UI, and over 800 additional palettes from the cpt-city collection are available.
@@ -88,11 +88,15 @@ hide:
### Custom Palettes
-As of 0.14, up to 10 custom palettes can be uploaded by the user in JSON files named `palette0.json` through `palette9.json`
-The format closely resembles that of the palettes defined in `palettes.h` with a position (0-255), red, green, blue for each color. An example of the content would be:
-```
-{"palette":[
- 0, 255, 33, 4,
+As of v0.14, up to 10 custom palettes can be uploaded in JSON files. Starting in **v16.0**, over **100 custom palettes** are supported but the palette numbering scheme has changed: custom palettes start at the number 200 downwards so you need to re-save your presets - palettes 255-201 are reserved for usermod palettes like Audio Reactive.
+
+**v16.0** also introduces an improved **Palette Editor** (accessible from the palette icon below the color picker in the UI) to create and edit custom palettes directly in the UI. The editor lets you add colour stops, adjust positions - and can show what your work looks like on the LEDs in real time.
+
+Custom palettes can also be uploaded by placing JSON files named `palette0.json` through `palette9.json` on the device via the file editor. The format closely resembles that of the palettes defined in `palettes.h` with a gradient position (0–255), red, green, blue for each colour stop. An example:
+
+```json
+{"palette":[
+ 0, 255, 33, 4,
43, 255, 68, 25,
86, 255, 7, 25,
127, 255, 82, 103,
@@ -101,6 +105,8 @@ The format closely resembles that of the palettes defined in `palettes.h` with a
255, 87, 255, 65]}
```
-Once a palette[0-9].json file has been created, it can be uploaded to the controller using the `/edit` page (http://[controller-ip]/edit).
-The controller must be rebooted (`/win&RB`) before the newly uploaded palettes will be available.
-After reboot, the custom palette(s) will be named `~ Custom [0-9] ~` in the Palettes section of the user interface.
+Once a palette file has been created, it can be uploaded to the controller using the `/edit` page (`http://[controller-ip]/edit`). Since version 16.0 the editor is accessible through the file icon below the color picker.
+
+## Additional Palettes (v16.0+)
+
+v16.0 includes over **800 palettes** that were hand-picked from the [cpt-city](https://phillips.shef.ac.uk/pub/cpt-city/) collection. They are available directly in the palette editor.
diff --git a/docs/features/particle-system.md b/docs/features/particle-system.md
new file mode 100644
index 000000000..58c5f611f
--- /dev/null
+++ b/docs/features/particle-system.md
@@ -0,0 +1,72 @@
+---
+title: Particle System
+---
+
+The Particle System is a physics-based effects engine built into WLED. It simulates many independent particles — each with its own position, velocity, size, age and color — and renders them onto your LED strip or matrix in real time.
+
+WLED includes both a **1D Particle System** (for strips) and a **2D Particle System** (for matrices). The code is highly optimized for speed so it can be used with well over a thousand particles at high frame rates.
+
+Since the animations are based on particle properties with some sprinkled in randomness for a more natural behaviour, all "PS" effects are random and undeterministic in nature: the visuals generated never repeat. If you want two segments with particle effects to look identical, use the "Copy Segment" effect.
+
+---
+
+## How it works
+
+Each frame, the engine:
+
+1. Spawns new particles and ages existing particles - old particles fade out and die
+2. Updates every particle's position based on its current velocity and checks for wall collisions.
+3. Applies forces (gravity, drag, wind, etc.) depending on the active effect.
+4. Handles collisions between particles where enabled.
+5. Renders particles onto the LED output using brightness fall-off from the particle center.
+
+### Rendering
+
+Particles of size "0" are rendered to a single pixel. A size of "1" uses two/four pixels for smooth movement.
+Larger particles use quared-distance fall-off rendering: in 2D this means they render as shaded circles/ellipses.
+
+The color of each particle is added on top of already rendered ones creating fluid animation - when using a diffuser to blur individual LEDs this creates very fluid and dynamic animations.
+
+### Collisions
+
+Particles can collide with walls or with other particles if enabled. The engine uses mass-ratio based collision response: a larger particle pushes a smaller one proportionally to the mass difference, rather than applying equal and opposite forces. This makes interactions feel more physically realistic.
+
+When collisions are enabled, each particle needs to check the proximity to each other particle: this can result in tens of thousands of checks for every frame and uses a lot of processing power. The rendering speed can therefore slow down significantly. Reducing the number of particles using the effect sliders is recommended if collisions are enabled.
+
+---
+
+## 1D Particle System
+
+The 1D Particle System works on standard 1D LED segments. Effects include things like sparks, rain, fire, and bouncing balls along a single strip.
+
+**2D mapping:** 1D particle effects support the `map1D2D` option, which maps the 1D output onto a 2D segment using various patterns. This lets you use 1D physics effects on a matrix.
+
+---
+
+## 2D Particle System
+
+The 2D Particle System requires a 2D segment configured in WLED. Effects render directly onto the X/Y grid of the matrix.
+
+Available 2D particle effects include fire, fireworks, meteor, galaxy, waterfall, ballpit, and more.
+
+---
+
+## Memory usage
+
+The Particle System allocates memory dynamically per segment based on the number of used particles which depends on the effect and segment size. On larger setups with many particles or multiple segments, PSRAM is recommended. The particle system will try its best to run if not enough RAM is available by reducing the particle count automatically - if even that fails the effect fails and falls back to "Solid".
+
+---
+
+## Effect controls
+
+Since particle effects are based on physics parameters they can be tuned a lot more than normal effects by using the effect sliders.
+Each effect uses different slider controls such as:
+
+- Gravity strength and direction
+- Particle size
+- Particle lifetime / spawn rate
+- Collision on/off
+- Wrap-around edges on/off
+
+The default slider settings were chosen such that the effect looks nice on many different setups but often can be optimized for a specific situation. A description of what each slider/checkmark does for each effect is described [here](/features/effects).
+
diff --git a/docs/features/pin-info.md b/docs/features/pin-info.md
new file mode 100644
index 000000000..949c8647e
--- /dev/null
+++ b/docs/features/pin-info.md
@@ -0,0 +1,69 @@
+---
+title: Pin Info
+---
+
+The **Pin Info** page gives you a live overview of every GPIO pin on your controller — what it's doing right now, and what it's capable of. It's a handy diagnostic tool when troubleshooting hardware conflicts or checking whether a pin is free to use.
+
+Open it from **Settings → Pin Info**, or navigate directly to `http:///settings/pininfo`.
+
+The table refreshes every 250 ms, so button presses and touch events show up in real time.
+
+---
+
+## Table Columns
+
+| Column | What it shows |
+|---|---|
+| **Pin** | GPIO number (e.g. *GPIO4*) |
+| **Used by** | Who or what currently owns the pin (see below) |
+| **Pin Notes** | Hardware capabilities of that pin (see below) |
+
+---
+
+## "Used By" — Pin Owners
+
+A pin can be in one of these states:
+
+- **Available** — not allocated to anything; free to use.
+- **System** — reserved by WLED internals (flash, USB-JTAG, strapping pins, etc.). These pins cannot be assigned.
+- **LED Digital / LED PWM / LED On/Off** — driving an LED bus.
+- **Button** — configured as a button input. The button type (Push, Switch, Touch, Analog, PIR, …) is shown in small text next to "Button".
+- **IR Receiver** — infrared remote input.
+- **Relay** — relay output.
+- **Ethernet** — used by an Ethernet (LAN) interface.
+- **I2C / SPI / SPI RAM** — bus lines claimed by a peripheral.
+- **DMX Output / DMX Input** — serial DMX data lines.
+- **HUB75** — RGB matrix panel interface.
+- **Debug** — debug/logging output.
+- **Usermod** — claimed by a usermod. The usermod slot number is shown (e.g. *UM #134*).
+
+For button pins, a small coloured dot appears to the left of the owner label:
+
+- **Green dot** — button is currently pressed / relay is enabled.
+- **Grey dot** — button is released / relay is disabled.
+
+For touch-capable pins, the raw capacitive touch reading is shown in small grey text next to the dot - use it to verify the threshold value set in button settings is reasonable.
+
+---
+
+## "Pin Notes" — Hardware Capabilities
+
+This column lists the hardware capabilities of the pin itself (not its current use):
+
+| Note | Meaning |
+|---|---|
+| **Analog** | Can be used as an ADC (analogue-to-digital) input |
+| **Touch** | Has a built-in capacitive touch sensor |
+| **Input Only** | Output driver not available; can only be read, not driven |
+| **Flash Boot** | Boot-pin - boot to flash mode if low during boot |
+| **Bootstrap** | A strapping pin that affects boot mode; use with caution |
+
+A dash (`-`) means no special notes apply.
+
+---
+
+## Tips
+
+- Avoid the pins with functions shown as **Flash Boot** or **Bootstrap** unless you know what you are doing as using them can cause boot problems.
+- If a pin shows as **Available** but you know something is connected to it, double-check your LED/button/usermod settings — the pin may not be configured yet.
+- The page works in real time: press a button and watch the dot change colour without reloading.
diff --git a/docs/features/pixel-art-converter.md b/docs/features/pixel-art-converter.md
index ae16f2d75..fce2b212c 100644
--- a/docs/features/pixel-art-converter.md
+++ b/docs/features/pixel-art-converter.md
@@ -7,6 +7,9 @@ hide:
The Pixel Art Converter tool aims to make it easier to show pixel art on a LED matrix panel, by converting any image to 2D pixel art and sending it to the WLED device. The file types PNG, JPG, WEBP and GIF have been tested to work with the tool.
+!!! tip "Deprecated since WLED 16.0"
+ The more versatile [PixelForge Tool](/features/pixelforge) is recommended. Pixel Art Converter is deprecated as of v16.0.
+
## Installation Approaches
There are three ways to install the pixel art converter:
@@ -21,9 +24,8 @@ There are three ways to install the pixel art converter:
2. Open `pixartmin.htm` in a browser
3. Head over to the [Setup 2D Matrix](#setup-2d-matrix) point
-
-
### Approach 2: Include Pixart Converter In Build Files
+
!!! warning "Compilation required"
Compiling WLED from the source code is required. Follow the instructions on [compiling WLED](../../advanced/compiling-wled) to do this.
@@ -44,6 +46,7 @@ There are three ways to install the pixel art converter:
5. Now head to the [Setup 2D Matrix](#setup-2d-matrix) point
## Setup 2D Matrix
+
2D LED panels are natively supported by WLED but need some configuration for the software to show the 2D grid correctly.
1. Head into the `2D Configuration` settings menu in WLED
@@ -54,6 +57,7 @@ There are three ways to install the pixel art converter:
Setting the serpentine LED panel option incorrectly can lead to very confusing results that look almost correct but not quite. Enabling or Disabling the option depends on the characteristics of the 2D matrix
## Usage
+
The Pixel Art Generator does not yet have a link in the WLED front-end, therefore head over to the web page: `http://[device_ip_address]/pixart.htm` (default DHCP IP-address [link](http://4.3.2.1/pixart.htm)).
On the web page:
diff --git a/docs/features/pixelforge.md b/docs/features/pixelforge.md
new file mode 100644
index 000000000..d33501be3
--- /dev/null
+++ b/docs/features/pixelforge.md
@@ -0,0 +1,80 @@
+---
+title: PixelForge
+---
+
+PixelForge is WLED's built-in browser tool for images & scrolling text and accessing additional tools like PixelPaint or the legacy Pixel Art Converter.
+
+!!! warning "ESP8266 Limitation"
+ The GIF image player is **not available on ESP8266** and therefore the image converter is disabled on these controllers. Other tools like PixelPaint are available.
+
+## Overview
+
+The tool is available through the icon below the color picker or by navigating to `http:///pixelforge.htm` in a browser.
+
+The tool has three tabs: **Image Tool**, **Scrolling Text**, **Other Tools**
+
+Both the image tool to convert images into GIF's and the scrolling text tool are built in tools. In the "Other Tools" tab you can download additional tools. These are not included by default but once downloaded they are stored and available permanently on your controller unless you choose to delete them. In order to be able to download these tools your phone/pc requires internet access - but not your WLED controller. Once downloaded no internet access is needed, the tools will continue to work offline and even in AP mode.
+
+---
+
+## Image Tool
+
+### Display an Image
+
+- At the very top, select the segment you would like to use - only one segment can display an image at a time
+- Select any of the images available on your controller
+- Tap&hold / right click an image to download a backup or to delete a stored image
+
+### Uploading an Image
+
+Click the designated area to upload or drag&drop any image your browser supports (JPEG, PNG, WebP, BMP, or animated GIF). The image loads into the preview.
+
+#### Crop, Zoom, Pan
+
+- A **drag-resizable crop frame** appears over the image. Drag the edges to select the area you want to use. Use the buttons to match aspect ratio, size etc.
+- Pan the image by dragging outside the crop frame, use the sliders to zoom or rotate the image.
+- The preview area underneath shows how the final image will look, you can adjust the output image size at the bottom - the default is the selected segment size.
+
+#### Background Removal
+
+Use the slider "Dark Pixel Cutoff" to turn dark pixels transparent and color them in the selected background color. Images with transparend pixels like GIF and PNG are supported.
+
+#### Save
+
+Once happy with the crop:
+
+1. Choose a filename (PixelForge warns you if the name already exists on the filesystem).
+2. Click **Save**. The cropped image is saved as a GIF to WLED's internal filesystem.
+
+!!! info "Unsupported Image Formats"
+ If you directly upload an image to your controller through the file editor in a format that is not supported (i.e. anything other than GIF), it still appears in the list but with a **red frame** and cannot be displayed on the LEDs without converting it first.
+
+#### Animated GIFs
+
+Animated GIFs are _mostly_ supported natively by WLED i.e. even through a direct upload of the GIF using the file editor - if you experience any issues you can convert the GIF using the PixelForge tool using the process described above and re-save it.
+
+### Filesystem Usage
+
+At the bottom the **filesystem memory usage** is shown so you can see how much file system space remains on your controller.
+
+---
+
+## Scrolling Text Tool
+
+The Scrolling Text tab lets you configure and preview and control the **Scrolling Text** effect.
+
+- Select the segment you want the text to be displayed on
+- Type your message in the text box and click the checkmark to apply.
+- Insert dynamic **tokens** (current date, time, temperature, etc.) using the tokens list.
+- Adjust local effect controls (speed, size, colour palette) in the panel below.
+
+!!! info "Preview Limitations"
+ The preview shows only a simulation and does not accurately represent what is shown on the LED matrix. If your text is very short, the preview still shows scrolling but on the actual LEDs it will show as a static, non scrolling text for example. If you need the text to scroll, make it longer by adding spaces.
+
+See [Custom Fonts](/features/custom-fonts) for information on loading custom `.wbf` font files for use with the Scrolling Text effect.
+
+---
+
+## Using Saved GIFs as Effects
+
+Saved GIF files appear in the WLED effect list and can be selected like any other effect. They play back on the 2D segment at the frame rate embedded in the file.
diff --git a/docs/features/segments.md b/docs/features/segments.md
index fa50bbc07..b9742e08e 100644
--- a/docs/features/segments.md
+++ b/docs/features/segments.md
@@ -19,7 +19,7 @@ There is one _main segment_, Segment 0 by default. This segment has a few import
Tip: If you divide your strip into two segments, reverse the second one and select both, you can achieve very nice symmetrical effects!
-Segment 0 has a Start LED of 0 and a Stop LED equal to the LED Count you defined in Configuration, LED Preferences. _The Stop LED is **not** included in the Segment._ Currently you can create a maximum of 10 segments. Presets 1-15 use only Segment 0 by default. Preset 16 is the only Preset that saves settings for Segments 1-10.
+Segment 0 has a Start LED of 0 and a Stop LED equal to the LED Count you defined in Configuration, LED Preferences. _The Stop LED is **not** included in the Segment._ Currently you can create a maximum of 10 segments in WLED 0.15 and earlier. Starting in v16.0, the segment limit was significantly increased. Presets 1-15 use only Segment 0 by default. Preset 16 is the only Preset that saves settings for Segments 1-10.
To display segment information select the down arrow in the Segment box. To add a Segment select “+ Add Segment”. Enter the Start and Stop LED as appropriate. Grouping and Spacing control the organization of the LEDs within the selected effect. To reverse the direction of an effect select Reverse Direction. To delete a Segment select the trash can. To save your Segment settings select the checkmark to the right of the Start and Stop LED numbers.
@@ -85,8 +85,34 @@ A negative offset value is allowed and represents an offset starting from the la
The offset values is prioritized over grouping and/or spacing. For example, if the offset is 2, grouping 4 and spacing 1, the first group of 4 LEDs will start at the physical position number 2.
-## Effect Overlay
-Some effects can be overlaid on the background of another effect. To use overlay, set up
-segments with overlapping pixels. The overlay effect must be playing on the segment with the higher id.
-If the Overlay option is checked, the background will not be painted and the effect
-from the lower segment will be displayed.
+## Segment Layering & Effect Overlay
+
+Since v16.0, WLED supports true segment layering: segments with overlapping pixels are composited in real time using a blend mode you choose per segment. This makes it possible to combine almost any two effects on the same LEDs.
+
+To use layering, create two or more segments that cover the same pixel range. On each segment, select its **blend mode** from the dropdown:
+
+| Mode | Description |
+|------|-------------|
+| Top/Default | Shows only the top layer, ignoring the bottom entirely |
+| Bottom/None | Shows only the bottom layer, ignoring the top entirely |
+| Add | Adds colors together, clamping at white |
+| Subtract | Subtracts the top from the bottom, darkening toward black |
+| Difference | Absolute difference — identical colors go black, opposites go bright |
+| Average | 50/50 blend of both layers |
+| Multiply | Multiplies colors — white passes bottom through, black blocks it |
+| Divide | Divides bottom by top — brightens where the top is dark |
+| Lighten | Picks the brighter pixel from each layer |
+| Darken | Picks the darker pixel from each layer |
+| Screen | Inverse of multiply — always brightens |
+| Overlay | Boosts contrast using the bottom layer's brightness |
+| Hard Light | Like Overlay, but driven by the top layer |
+| Soft Light | Subtle contrast and saturation boost, no clipping |
+| Dodge | Brightens the bottom based on the top |
+| Burn | Darkens the bottom based on the top |
+| Stencil | Shows top where it has any color; shows bottom where top is black |
+
+The compositing order follows segment ID order: the segment with the **lower** ID is treated as the bottom (background) layer.
+
+### Transition Blending
+
+v16.0 also adds transition blending styles that control how effects cross-fade when you switch presets. Options include Shift, Push, and others, in addition to the classic dissolve-style fade.
diff --git a/docs/interfaces/dmx-input.md b/docs/interfaces/dmx-input.md
index cd01e1022..d62978cf5 100644
--- a/docs/interfaces/dmx-input.md
+++ b/docs/interfaces/dmx-input.md
@@ -5,27 +5,26 @@ hide:
# - toc
---
-### DMX Input
+## DMX Input
!!! info "Version Info"
As of version v16.0 supports DMX input via MAX485. This is great when ArtNet or e1.31/sACN over WIFI is not suitable
-#### features and limitations
+### Features and Limitations
* one universe (512 channels)
-#### software setup
+### Software Setup
For the DMX feature to work, you'll need to use the V4 build variants. Define *all* the pins you are using in the DMX input section of the Sync Interfaces menu
The wired DMX will work exactly like the network DMX options, only a single universe, so see [e1.31-dmx](/interfaces/e1.31-dmx/) for details of the different DMX modes
-#### hardware setup
+### Hardware Setup
The DMX interface require the use of an RS485 adapter such as the MAX485 transceiver connected to the pins defined in setup of the ESP in order to handle DMX input and RDM input and output.
-
You will need to use *three* GPIO pins that support output.
*Do NOT use the pins on your ESP32 labelled RX and TX as your DMX pins!*
@@ -39,11 +38,10 @@ Connect the RS485 power pins as follows
* 5v or 3.3v pin to VCC
* GND to GND
-#### background info
-
+## Background Info
For information about the use of DMX with ESP8266, you might like to read [this](https://robertoostenveld.nl/art-net-to-dmx512-with-esp8266/) tutorial by [Robert Oostenveld](https://robertoostenveld.nl/). Note this is just background information about the hardware and you do not need any of the code listed here when using WLED output.
-## questions
+## Questions
If you have further questions about this feature, you can ask on [DMX Input Discord](https://discord.com/channels/473448917040758787/1097792072762798110) or reach me via github (@netmindz) or via WLED Discord (netmindz).
diff --git a/docs/interfaces/dmx-output.md b/docs/interfaces/dmx-output.md
index c62a0beac..8ab0e0f43 100644
--- a/docs/interfaces/dmx-output.md
+++ b/docs/interfaces/dmx-output.md
@@ -5,12 +5,12 @@ hide:
# - toc
---
-### DMX output
+## DMX Output
!!! info "Version Info"
As of version 0.9.2 WLED supports DMX output via MAX485. This is great for controlling DMX LED PAR lamps with WLED patterns.
-#### features and limitations
+### Features and Limitations
* up to 15 DMX channels per fixture
* channels can be set to dimmer (brightness), red, green, blue, white, 0, 255
@@ -19,7 +19,7 @@ hide:
* one universe (512 channels)
* type of fixture
-#### software setup
+### Software Setup
For the DMX feature to work, you need to flash a WLED binary with DMX enabled. Among the latest releases, search for the corresponding .bin for your board with the postfix "_dmx".
@@ -37,7 +37,7 @@ Alternatively, you'll need to compile WLED from source. It's not a big deal, you
4. Grab the manual for your lamp and maybe some snacks, look up the dmx channels and set everything up accordingly.
-#### hardware setup
+### Hardware Setup
The DMX output required the use of a MAX485 / SN 75176 transceiver connected to GPIO2 of your ESP. As of now, the pin is hardcoded inside of WLED (see below).
@@ -47,6 +47,6 @@ For information about the use of DMX with ESP8266, you might like to read [this]
If you need to use another pin for output than the GPIO2, you'll need to change this in the ESP-Dmx library itself. This setting is located in src/dependencies/dmx/ESPDMX.cpp on line 31.
-#### questions
+### Questions
If you have further questions about this feature, you can reach me via github (@jwingefeld), ICQ (30914656) or via WLED Discord (JvPeek).
diff --git a/docs/interfaces/e1.31-dmx.md b/docs/interfaces/e1.31-dmx.md
index 8c0a40b78..03dac12ca 100644
--- a/docs/interfaces/e1.31-dmx.md
+++ b/docs/interfaces/e1.31-dmx.md
@@ -26,9 +26,11 @@ WLED supports the E1.31 (sACN) realtime light protocol.
* You can use up to 9 adjacent universes which is a total of more than the maximum 1500 LEDs WLED can drive.
* E1.31 priority handling. [HTP](https://wiki.openlighting.org/index.php/HTP) for multiple senders with same priority is not implemented!
-**Note:** WLED > 0.14.0-b1 implements a basic priority handling. To enable it set E1.31 port priority UI config > 0. Packages < config priority will always be skipped. Higher priority senders will overrule lower priority package senders (timeout 3 seconds). Non-zero start code and E1.31 preview data is ignored.
+!!! info "Package Priority"
+ WLED > 0.14.0-b1 implements a basic priority handling. To enable it set E1.31 port priority UI config > 0. Packages < config priority will always be skipped. Higher priority senders will overrule lower priority package senders (timeout 3 seconds). Non-zero start code and E1.31 preview data is ignored.
-**Note:** If you see issued with lag, you may see better performance if you disable Wi-Fi Multimedia (WMM) Mode QoS on your router
+!!! tip
+ If you see issued with lag, you may see better performance if you disable Wi-Fi Multimedia (WMM) Mode QoS on your router
### General Recommendations
diff --git a/docs/interfaces/espnow.md b/docs/interfaces/espnow.md
new file mode 100644
index 000000000..b266b5c8a
--- /dev/null
+++ b/docs/interfaces/espnow.md
@@ -0,0 +1,67 @@
+---
+title: ESPNow Remotes
+---
+
+WLED supports wireless control via **ESPNow**, a low-latency, connectionless Wi-Fi protocol built into ESP32 and ESP8266 chips. Compatible remotes (such as the WizMote or GLEDOPTO RF remote) can send button events directly to WLED without joining your Wi-Fi network.
+
+You can also [build your own remote](https://github.com/DedeHai/WLED-ESPNow-Remote) using an ESP32 C3.
+
+---
+
+## Enabling ESPNow
+
+ESPNow is enabled in **Settings → WiFi**. Once enabled, a **Remote List** section appears on the same page.
+
+!!! warning "Keep Wi-Fi Always On"
+ For ESPNow remotes to work reliably, **Disable WiFi Sleep** must be set to keep Wi-Fi active at all times.
+
+---
+
+## Managing Remotes
+
+WLED can store up to **10 paired remotes**. Each remote is identified by its MAC address.
+
+### Adding a Remote
+
+1. Press any button on the remote. WLED receives the signal and shows the remote's MAC address in the **Last device seen** field.
+2. Click the **`+`** button next to the MAC address to add it to the trusted list.
+
+Only remotes in the trusted list can control WLED. Signals from unlisted devices are ignored.
+
+### Removing a Remote
+
+Click the **`-`** button next to any listed MAC address to remove it.
+
+---
+
+## Supported Button Codes
+
+WLED handles the following button event codes from ESPNow remotes:
+
+| Code | Action |
+|------|--------|
+| 1 | Brightness up |
+| 2 | Brightness down |
+| 3 | Next effect |
+| 4 | Previous effect |
+| 8 | Toggle on/off |
+| 9 | Night mode |
+| 10 | Next palette |
+| 11 | Previous palette |
+| 12 | White |
+| 13 | Warm white |
+| 14 | Daylight |
+| 15 | Cool white |
+| 16 | Red |
+| 17 | Green |
+| 18 | Blue |
+| 19 | Yellow |
+| 20 | Candle effect |
+| 21 | Random colour |
+| 22 | Fade effect |
+
+Codes 20–22 were added in v16.0
+
+Additional codes can be used by adding a `remote.json` file. There are some examples on how to do that available [here](https://github.com/DedeHai/WLED-ESPNow-Remote/tree/main/remote-json).
+
+
diff --git a/docs/interfaces/infrared.md b/docs/interfaces/infrared.md
index 8a5bb3ffe..ec4bdcd5b 100644
--- a/docs/interfaces/infrared.md
+++ b/docs/interfaces/infrared.md
@@ -15,7 +15,7 @@ A dedicated infrared receiver module is required and must be connected to the WL
!!! warning
IR receiving will not work on ESP8266 if you use any LED pin other than GPIO 1, 2, or 3 for _digital_ LED strips.
-### Supported IR remotes
+## Supported IR Remotes
To use IR remote go to `Settings`, `LED Preferences` and change the value for `Infrared receiver type` according to the IR remote type of the following list:
@@ -27,7 +27,8 @@ To use IR remote go to `Settings`, `LED Preferences` and change the value for `I
6. black 6-key IR remote with CH up/down + Vol up/down
7. [JSON IR remote](json-ir/json_infrared.md) - Easily configure and use any IR remote.
-## ESP-NOW based remote control
-Since version WLED 14.0-beta3: An ESP-NOW compatible remote control is supported. An example of this is the „WIZmote“ remote control. This is based on an ESP microcontroller. You can also [build your own ESP-NOW remote](https://github.com/DedeHai/WLED-ESPNow-Remote) using an ESP32 C3. ESP-NOW can be activated in WLED settings. You have to enter the Hardware MAC address of the remote control. This is determined by clicking on any button on the remote control and copying the last received MAC address from the "Last Seen" field to the "Hardware MAC" field in WLED ESP-NOW settings (“Config->WiFi Setup”) and saving it with "Save". Advantages: no special receiver needs to be attached to the WLED controller and the signals are transmitted via radio network. Therefore there is no line of sight between the remote control and the WLED controller required, as is the case with an IR remote control.
+## ESP-NOW Based Remote Control
+
+Since version WLED 0.14.0-beta3: An ESP-NOW compatible remote control is supported. An example of this is the „WIZmote“ remote control. This is based on an ESP microcontroller. You can also [build your own ESP-NOW remote](https://github.com/DedeHai/WLED-ESPNow-Remote) using an ESP32 C3. ESP-NOW can be activated in WLED settings. You have to enter the Hardware MAC address of the remote control. This is determined by clicking on any button on the remote control and copying the last received MAC address from the "Last Seen" field to the "Hardware MAC" field in WLED ESP-NOW settings (“Config->WiFi Setup”) and saving it with "Save". Advantages: no special receiver needs to be attached to the WLED controller and the signals are transmitted via radio network. Therefore there is no line of sight between the remote control and the WLED controller required, as is the case with an IR remote control.

The 4 buttons "1"-"4" of the WIZmote remote control are linked to presets 1 to 4. The meaning of other keys is self-explanatory. Attention: WIZmote needs two good quality AAA batteries to work properly. If the batteries are too weak, the correct signal will not be sent, even if the blue LED on the remote control lights up briefly, actually indicating signal transmission.
diff --git a/docs/interfaces/json-api.md b/docs/interfaces/json-api.md
index 1dcd7aaa6..80aa930d4 100644
--- a/docs/interfaces/json-api.md
+++ b/docs/interfaces/json-api.md
@@ -171,9 +171,10 @@ np | bool | Advance to the next preset in a playlist if set to `true`. Not inclu
#### Contents of the segment object
-**Notice:** _start_, _stop_, and _len_ are not changeable in 0.8.4. Any segment with _id_ > 0 is ignored.
-Unless stated otherwise, every value may be changed via an HTTP POST request.
-The tertiary color is not gamma-corrected in 0.8.4, but is in subsequent releases.
+!!! info "Legacy limitation (v0.8.4)"
+ _start_, _stop_, and _len_ are not changeable in v0.8.4. Any segment with _id_ > 0 is ignored.
+ Unless stated otherwise, every value may be changed via an HTTP POST request.
+ The tertiary color is not gamma-corrected in 0.8.4, but is in subsequent releases.
| JSON key | Value range | Description
| --- | --- | --- |
@@ -186,7 +187,7 @@ len | 0 to info.leds.count | Length of the segment (_stop_ - _start_). _stop_ ha
grp | 0 to 255 | Grouping (how many consecutive LEDs of the same segment will be grouped to the same color)
spc | 0 to 255 | Spacing (how many LEDs are turned off and skipped between each group)
of | -len+1 to len | Offset (how many LEDs to rotate the virtual start of the segments, available since 0.13.0)
-col | array of colors | Array that has up to 3 color arrays as elements, the primary, secondary (background) and tertiary colors of the segment. Each color is an array of 3 or 4 bytes, which represents a RGB(W) color, i.e. `[[255,170,0],[0,0,0],[64,64,64]]`. It can also be represented as an array of strings of _hex_ values, i.e. `["FFAA00","000000","404040"]` for orange, black and grey. One or more colors can be set randomly with `"r"`, i.e. `["r",[0,0,0],"r"]`. _(random will soon be available in 16.0.0)_
+col | array of colors | Array that has up to 3 color arrays as elements, the primary, secondary (background) and tertiary colors of the segment. Each color is an array of 3 or 4 bytes, which represents an RGB(W) color, i.e. `[[255,170,0],[0,0,0],[64,64,64]]`. It can also be represented as an array of strings of _hex_ values, i.e. `["FFAA00","000000","404040"]` for orange, black and grey. One or more colors can be set randomly with `"r"`, i.e. `["r",[0,0,0],"r"]`. _(random available since 16.0.0)_
fx | 0 to info.fxcount -1 | ID of the effect or `~` to increment, `~-` to decrement, or `"r"` for random.
sx | 0 to 255 | Relative effect speed. `~` to increment, `~-` to decrement. `~10` to increment by 10, `~-10` to decrement by 10.
ix | 0 to 255 | Effect intensity. `~` to increment, `~-` to decrement. `~10` to increment by 10, `~-10` to decrement by 10.
@@ -267,6 +268,10 @@ product | string | The product name. Always `FOSS` for standard installations.
~~btype~~ | string | The origin of the build. `src` if a release version is compiled from source, `bin` for an official release image, `dev` for a development build (regardless of src/bin origin) and `exp` for experimental versions. `ogn` if the image is flashed to hardware by the vendor. _Removed as of v0.10_
mac | string | The hexadecimal hardware MAC address of the light, lowercase and without colons.
ip | string | The IP address of this instance. Empty string if not connected. (since 0.13.0)
+device_id | string | A unique identifier for the device, derived from the hardware MAC address. _(available since 16.0.0)_
+psram | uint32 | Total PSRAM size in bytes. `0` if no PSRAM is present or detected. _(available since 16.0.0)_
+psram_free | uint32 | Estimate of currently free PSRAM in bytes. _(available since 16.0.0)_
+repo | string | URL of the source code repository for this firmware build. _(available since 16.0.0)_
Examples of frequently requested custom API:
diff --git a/docs/interfaces/mqtt.md b/docs/interfaces/mqtt.md
index dd31b7776..b9b22ffc2 100644
--- a/docs/interfaces/mqtt.md
+++ b/docs/interfaces/mqtt.md
@@ -11,7 +11,9 @@ hide:
WLED versions from 0.8.0 up are able to connect to an MQTT broker for smart home control.
Connection to both domains and IP servers is supported on port 1883.
-!!! warning
+Starting in v16.0.0, WLED also supports **mDNS broker discovery**: if you enter an `.local` hostname as the MQTT server address, WLED will resolve it via mDNS. This lets you use a local broker without knowing its static IP address.
+
+!!! warning "MQTT Connections Are Not Secure"
Secure connections are not currently supported. I recommend only connecting to local MQTT brokers.
In v0.8.4-0.8.6 only, WLED supports MQTT autodiscovery by the HomeAssistant software. This has been removed because of bootloop issues and in favor of the native HomeAssistant integration.
diff --git a/mkdocs.yml b/mkdocs.yml
index 2a38713ea..be24c89a3 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -98,8 +98,12 @@ nav:
- Multi-strip Support: features/multi-strip.md
- Relay Control: features/relay-control.md
- Web GUI Sitemap: features/subpages.md
+ - Pin Info: features/pin-info.md
- White handling: features/cct.md
- Pixel Art Converter: features/pixel-art-converter.md
+ - PixelForge (Image & GIF Tool): features/pixelforge.md
+ - Custom Fonts: features/custom-fonts.md
+ - Particle System: features/particle-system.md
- Ethernet (LAN) compatibility: features/ethernet-lan.md
- Interfaces:
- Blynk: interfaces/blynk.md
@@ -116,6 +120,7 @@ nav:
- UDP Realtime / tpm2.net: interfaces/udp-realtime.md
- Websocket: interfaces/websocket.md
- DDP Realtime: interfaces/ddp.md
+ - ESPNow Remotes: interfaces/espnow.md
- Advanced:
- Audio Reactive WLED: advanced/audio-reactive.md
- Home Automation: advanced/home-automation.md
@@ -128,6 +133,7 @@ nav:
- Custom Features: advanced/custom-features.md
- Community Usermods: advanced/community-usermods.md
- ESP32 Recovery: advanced/esp32-recovery.md
+ - Boot-loop Detection & Recovery: advanced/bootloop-recovery.md
- HUB75: advanced/HUB75.md
- Mapping: advanced/mapping.md
- Mixed 2D and 1D Bus: advanced/2d-1d-Mixed-Setup.md