Firmware for an orphaned air purifier
Two Aeris aair purifiers outlived their maker's servers. They now run an open firmware, report to Home Assistant over MQTT, and show the octopus as their fan gauge. As of 2026-09-25.
The two units
Both are Aeris aair 3-in-1 Pro. The maker’s backend is gone, and the app went with it. Inside each unit is a Particle Photon, a small Wi-Fi board that now runs a different program.
Unit 1 stands in the bedroom and recirculates. Unit 2 stands on the balcony and blows filtered outdoor air through the wall into the bedroom. It is the bedroom’s supply air and the only mechanical air exchange in the flat. A silencer in the wall sleeve holds the bedroom’s measured exchange to 24–28 m³/h; in free air the unit moves about 160 m³/h at a quarter of its fan speed. Its particulate sensor reads PM2.5 above PM10, so it is no reference for outdoor air.

The panel under the new firmware. The octopus is the fan gauge; the readings are the ones the unit publishes to the house broker.
What the firmware does
It is a fork of CliffLin’s firmware, which builds on mjaymeyer’s Home Assistant work. Both had already replaced the cloud with a local web API and MQTT, and the fork stays under their GPL-3 licence.
Two of its changes went back upstream and were merged in September: a serial set-up line for units whose Wi-Fi set-up mode does not answer, and a driver for the key lights behind the four buttons, with a pattern, five brightness steps and a blink rate. What stays in this fork:
- The panel shows the octopus as the fan gauge. The head is always lit; the eight arms light from left to right as the fan speeds up.
- PM2.5 and PM10 are coloured by European air-quality band, from blue for good to red for very poor.
- The filter’s remaining life counts down in minutes and survives restarts.
The code is public: tyclab/aeris-aair-firmware.
How Home Assistant sees them
The firmware sends plain integers, one topic per value, with no discovery and no last-will message. Home Assistant declares every entity itself: fan speed from 0 to 100, key lights with brightness, the filter’s remaining days. A command the firmware cannot parse is dropped. The screen-light switch runs in optimistic mode, because the firmware never reports that state back.
What is open
- The LED ring around the edge stays dark. No register bit addresses it, and why is not known.
- Unit 2 is the bedroom’s supply air, but nothing sets its fan from the bedroom’s carbon dioxide yet. The signal is already recorded; the house-state note shows it.