- Collection of air purifiers and humidifiers that can be more or less easily hacked to run ESPHome instead of cloud-based firmware.
- Eliminating cloud dependency and enabling native Home Assistant integration for air purifiers.
I like Wi-Fi enabled air purifiers! But I hate the fact that they all depend on a cloud service.
I've run Home Assistant and custom-built ESPHome devices at home for quite some time, and found a project that let me flash custom, ESPHome-based firmware onto a Levoit Core 300S (which I already owned). Wi-Fi enabled air purifiers often use an ESP32 for the Wi-Fi side plus a separate MCU to manage the purifier itself (speeds, air-quality sensor, auto mode, …), with a UART link between the two.
This started as a handful of custom ESPHome firmware and hardware projects for Levoit air purifiers, and is slowly growing into the broader collection you see here.
Every purifier that runs ESPHome at a glance — how it's converted, its specs, and how involved the teardown is. Click a model or its Guide for the full write-up.
Devices that can't run ESPHome but are still controllable locally on stock firmware are listed separately in Cloud-free without ESPHome below.
| Model | Manufacturer | Support | Methods | CADR (spec) | Noise | Disassembly | Guide | Links | Comments |
|---|---|---|---|---|---|---|---|---|---|
| Core 200S | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 167 m³/h | 24–48 dB | Easy | Guide | Amazon | ✅ Tested · 3 speeds, no air-quality sensor |
| Core 300S | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 214 m³/h | 24–50 dB | Easy | Guide | Amazon | ✅ Tested · PM2.5 + Auto mode |
| Core 400S | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 442 m³/h | 24–52 dB | Hard | Guide | Amazon | ✅ Tested · 4 speeds |
| Core 600S | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 641 m³/h | 26–54 dB | Hard | Guide | Amazon | ✅ Tested · 4 auto modes |
| Vital 100S | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 221 m³/h | 23–52 dB | Easy | Guide | Amazon | ✅ Tested · Pet mode; detailed teardown |
| Vital 200S (Pro) | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 415 m³/h | 23–58 dB | Easy | Guide | Amazon | ✅ Tested |
| Everest Air | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 612 m³/h | 24–56 dB | Easy | Guide | Amazon | ✅ Tested · vent louver, PM1.0/2.5/10, Turbo |
| Sprout | Levoit | 🏠 levoit + levoit_audio |
🟢 Flash / 🔵 Add ESP | 145 m³/h | 22–47 dB | Easy | Guide | Amazon | 🚧 WIP · white-noise audio (I2S MP3) |
| LV-PUR 131S | Levoit | 🏠 Guide + YAML | 🔴 Custom HW | — | — | Medium | Guide | — | ESP12F → ESP32-C3, PM1003 → PM5003 |
| LV-PUR 131 | Levoit | 🏠 Guide + YAML | 🔴 Custom HW | — | — | Medium | Guide | — | As above + temperature sensor |
| Levoit Mini | Levoit | 🏠 Guide + YAML | 🔴 Custom HW | 78 m³/h | 41.8 – 53.6 dBA | Easy | Guide | Amazon | Custom PCB + 3D parts; original PCB bypassed, reversible |
| Core 300 | Levoit | 🔗 External | 🔴 Custom HW | 214 m³/h | 24–50 dB | Easy | Reddit ↗ | — | Non-smart Core 300 with broken PCB; ESP32 wired straight to the fan-speed lines → 3 interlocked GPIO switches (no MCU/UART, no sensors) |
| Core 300-P | Levoit | 🔗 External | 🔴 Custom HW | 214 m³/h | 24–50 dB | Easy | Shop ↗ | Silo City Labs | Non-smart Core 300-P — a ready-made ESP32-C6 replacement controller running ESPHome, reusing the stock fan controller and PSU. 4 fan speeds, 14 RGB LEDs, 3 spare GPIOs for AQ/VOC add-ons. Check the Intertek model on the back (5014566 vs 5030453) before ordering |
| AC0650 | Philips / MUJI | 🏠 philips |
🔵 Add ESP | 170 m³/h | 19–49 dB | Easy | Guide | Amazon | ✅ Tested · secure boot → replace module; no AQ sensor |
| AC0651 | Philips / MUJI | 🏠 philips |
🔵 Add ESP | 170 m³/h | 19–49 dB | Easy | Guide | Amazon | ✅ Tested · adds PM2.5 (PM1003), allergen index, Auto mode |
| AC0951 | Philips | 🏠 philips |
🔵 Add ESP | — | — | Easy | Guide | — | ✅ Tested · MXCHIP module parked, ESP32-C3 added; PM2.5, allergen index, child lock, beep, display brightness, sleep timer |
| AC0950 | Philips | 🏠 philips |
🔵 Add ESP | — | — | Easy | Guide | — | |
| Förnuftig | IKEA | 🔗 External | 🔴 Custom HW | 120 m³/h | 28–60 dB | Easy | Blog ↗ · C6 ↗ | — | Dumb 3-speed fan, ESP added for control |
| Uppåtvind | IKEA | 🔗 External | 🔴 Custom HW | 95 m³/h | 42.5–53.8 dB | Easy | GitHub ↗ | — | Small desk purifier, ESP added for control |
| Mi Air Purifier 3 / 3H / 3C · Pro H · Smart 4 / 4 Lite / 4 Pro / Elite | Xiaomi | 🔗 External | 🟢 Flash | — | — | — | GitHub ↗ | — | MIoT UART component; flashes the built-in ESP gateway. Also covers other Xiaomi MIoT devices |
Support — where the firmware/guide lives:
- 🏠 This repo — maintained here: an in-repo ESPHome component (
levoit,philips) or a full build guide with YAML. - 🔗 External — someone else's project; the Guide column links straight to it. Listed for completeness, not maintained here.
Methods — how the custom firmware ends up on the device:
- 🟢 Flash — flash ESPHome straight onto the device's own ESP32 (works where it isn't locked — most Levoits). Easiest; back up the stock firmware first.
- 🔵 Add ESP — wire in a separate ESP32 and disable the original (
EN→GND). Needed when secure boot blocks reflashing, and fully reversible. - 🔴 Custom HW — replace the controller board / build custom hardware.
CADR and Noise are manufacturer specs. Disassembly is a rough effort estimate (Easy / Medium / Hard) — check the linked Guide before you start.
Got another air purifier running ESPHome? Add it to the list — open a Pull Request or share it in Discussions. Two requirements: it has to be an air purifier, and it has to run (or be made to run) ESPHome. In-repo components or external projects (like the IKEA ones above) are both welcome.
Humidifiers use the same MCU-over-UART approach as the purifiers above, and the
same in-repo components — a Levoit humidifier is just another model: for the
levoit component.
| Model | Manufacturer | Support | Methods | Tank | Output (spec) | Disassembly | Guide | Links | Comments |
|---|---|---|---|---|---|---|---|---|---|
| Superior 6000S | Levoit | 🏠 levoit |
🟢 Flash / 🔵 Add ESP | 6 L | 500 mL/h | Easy | Guide | — | 🚧 Untested on hardware · evaporative; 9 fan speeds, target humidity, auto-dry, temperature + humidity sensors |
The legend is the same as for the purifiers above — Tank and Output are manufacturer specs and replace the CADR/Noise columns.
Got a humidifier running ESPHome? Same deal as the purifiers — open a Pull Request or start a Discussion.
Many Philips / Versuni purifiers can be driven locally over CoAP on stock firmware — no flashing, no hardware changes. The supported-model list and setup live in docs/philips-coap.md.
Two external components live here. Each README carries its own supported models, configuration reference, feature list and change log.
| Component | Devices | Docs |
|---|---|---|
levoit |
Levoit air purifiers and the Superior 6000S humidifier | README · compile tests |
philips |
Philips / MUJI 600 and 900 series purifiers | README |
Per-device wiring, teardowns and example YAML live under
devices/ — one folder per model, linked from the
tables above.
- Levoit LV-PUR 131S – Custom Firmware + MCU & sensor upgrade + hardware hack
- Levoit LV-PUR 131 – Custom Firmware + temperature sensor + MCU & sensor upgrade + hardware hack
- Levoit Mini – Custom PCB, 3D parts, hardware hack
Not part of this repo, but built on the same idea — an ESPHome component talking the vendor's UART protocol to the purifier's MCU:
- dhewg/esphome-miot — Xiaomi MIoT serial protocol. Flashes the device's built-in ESP gateway (no extra hardware) and covers a range of Xiaomi/Mi air purifiers: Mi Air Purifier 3 / 3H / 3C, Pro H, and Smart 4 / 4 Lite / 4 Pro / Elite. Also supports other Xiaomi MIoT devices (humidifiers, fans, …).
See CHANGELOG.md for project-level changes, and the levoit component change log for component releases.
See CONTRIBUTING.md — issues, pull requests, what CI runs, and what a good contribution looks like.
Adding a model that is not listed above? Start with docs/adding-a-new-device.md.
Not my projects, but worth checking out:
