NEW UPDATED ARTICLE: CLICK
Below is an old method, THIS WILL VOID YOUR WARRANTY.
In the updated article is a method that won’t void any warranties
I received an email from Pekka (Thanks!) who found out about this problem in a video/comment.
Two distinct signs:
- Slow to respond to particle changes.
- Display only shows 001
Cause:
The sensor used in the Xiaomi Air Purifiers is the: PMS9003M by Plantpower
Datasheet:
This sensor uses a pin named SET. The function of that pin is to change between two modes:
- Active
- Sleep
In Active Mode: The Sensor will send data every measurement (2.3 Seconds when there are no big changes detected, or 200-800ms if large changes are detected)The small fan is turned on all the time.
In Sleep Mode: The Sensor will not measure automatically (only if a measure command is send) and the fan will only spin up if there is a measurement.
The hanging of the Display and the slow responses are cause by the the following things
Measured:
1. My Air Purifiers contain a software bug where if you turn off the display (button on the backside of the Purifier) the Plantpower Sensor won’t go back in active mode.
2. Sometimes the sleep mode gets activated without clear reason.
Highly Likely assumptions:
1. Xiaomi averages the sensor data quite aggressively, this is a nice feature in location where the Air quality is very bad (China, etc)
It would not surprise me if they would change the averaging algorithm based on your location.
Example:
If I use the Chinese mainland app: do more averaging before displaying data .
If I use the Dutch app: Use a less aggressive averaging method.
This will result in less sporadic fan behavior.
2. Xiaomi uses sleep mode to extend the life of the small fan. Depending on the manufacturer of the 20mm fan, the rated life time will be around 25k hours (approx. 2.8 years running 24/7)
3. The air is clean, I live in the Netherlands and for the air purifier even getting above 10-20 is rare. If I solder or do other dirty work the sensor measures way higher values. My baseline in normal use is actually 1.
Fix:
Luckily there is an easy fix!
1: Find and remove the sensor back cover:
Remove the back cover with a thin knife, screw driver, blade, whatever you can find. Pry at the same spot as in the picture, there is a locking mechanism there.
2.Remove the two screws:
Yes I already did one.
3. Remove pin 3:
Two ways of doing this: Yank it out, might damage the connector and the mating part pin. (you might not be able to put it back in the connector when desired)
The correct way:
Use a small needle and lift up the plastic feed on top of the connector. More info: https://www.youtube.com/watch?v=0G7iIwfuaJ8
4. Put a small piece of tape of the metal end on the loose connector pin. This will circumvent any short circuit dangers.
5. Screw everything back together.
6. You’re done! your sensor is now running in active mode forever!
Keep in mind: higher wear on fan! Xiaomi might make an to disable this option since both active or sleep mode can be activated via firmware.
Since I don’t really like this method of having loose wires and the amount of work that is needed to remove the pin, I will design a PCB With a cable that you can put between the sensor and the cable so that it will put the sensor in active mode. Thus removing the need to fiddle with the small pins.
New Design: https://www.flamingo-tech.nl/2021/10/23/xiaomi-001-ppm-fix-update/
Never expiring Xiaomi air filters: https://www.flamingo-tech.nl/2021/06/20/xiaomi-air-purifier-3h-modchip-is-here/
Hello. Thanks for this. It’s very helpful. Your time and effort put into this is well appreciated. A couple of things though… First, you’ll need to warn about a potential warranty issue. Second, you don’t have to pry it like that with any tool to remove the LPS lid at the back. In fact in the manual, it shows how to properly remove the cover. Simply uncover the filter door, and then just under where the Laser Particulate Sensor is, you can reach the latch to release the locking mechanism of the cover.
See page 8 from the user manual – https://i01.appmifile.com/webfile/globalimg/Global_UG/Mi_Ecosystem/Mi_Air_Purifier_3H/en_V2.pdf
🙂
You are totally right! thanks for this addition, I will add it in the article the second of September, when a new release is scheduled!
As a follow-up to my 1st comment. Isn’t that by removing the pin 3 connection, you’re basically setting it to “LOW”, which tells the sensor to go to Sleep mode. That’s what I understand based on the sensor data sheet.
Hey, No ,The easy explanation is: By removing the pin, it will float, so technically it’s not connected to GND.
More info:Click
I agree this is an less than ideal solution. (normally you would always pull pin high or low) This is why the Second of September I’m releasing a small PCBA that will pull the pin high! (and there is no need to remove the pin, just add the PCBA and your done)
i don’t see any difference with pin on or off no matter the result is the same. Even in open enviromental condition not more than 020 ppm and stay mainly in 001
it wont magically change the algorithms used by Xiaomi. It will however make your values update quicker and disable the possibility to put the sensor to sleep 🙂
Hi! I find the work you do here very intriguing. I’ve noticed that when I disconnect the sensor, it consistently displays 26 ppm as the default value. Do you have any suggestions on how I could adjust this default, preferably increasing it to the maximum value? My goal is to configure the “Auto” mode so that it consistently raises the fan speed to the maximum RPM. I’m aware there are alternative methods to set the fan speed to the maximum, but I specifically need to achieve this within the Auto mode due to the limited functionalities of the app. Thanks in advance!
Hey Joel,
Thanks for the compliments! To he honest I don’t have any clue on how to achieve this! You could flash your own firmware on the ESP32 this will however change the device forever to a non xiaomi device that you have to configure yourself. Something like ESPHome is what I would use ^^