Pulse Oximeter MAX30100 / MAX30102 is a cheap one and quite popular among hobbyists. Unfortunately, the cheapest module boards (which are sold by thousands on Aliexpress) contain a fatal error. I’ll tell you how to fix it.
Everything I said below applies equally to the new MAX30102 modules and old modules with discontinued MAX30100 chip since they are assembled on the same boards.

If you ordered the board shown in Fig. 1 – my congratulations, you have problems with power circuits. The sensor chip requires two separated supply voltages:
- 1,8V for ADC and sensor logic (1,7V – 2,0V)
- 3,3V for green and IR LEDs of sensor (3,1V – 5,25V)
Carefully look at the circuit of the module (Fig. 2). It involves two linear voltage regulators – U2 and U3. The first one make a + 3.3V from + 5V (or simply passes through the power supply + 3.3V). The second regulator is connected to the output of the first and generates supply voltage + 1.8V. It would seem that everything is correct? Really?

Now take a closer look at the pull-up resistors 4.7k for SCL, SDA and INT signal lines (a thick red line). They are connected to the supply + 1.8V!!! If such a module is connected to a 5V logic of Arduino board – it will not be visible on the I2C bus because the logic levels are too low. However, even with a 3V logic board the I2C bus will work unstably.
This error can easily be fixed as shown in Fig. 3. It is enough to cut the path in the place of the red cross and make a jumper as shown by the yellow line. The jumper does not need an insulated wire. You can take a tinned strand from a stranded wire. The board is covered with a protective mask and there is no short circuit to the copper pour.

That’s not all!
What do you think the Chinese did when they found out that they manufactured a billions boards with an error? Sit straight and breathe deeply. Instead of throw the wrong boards in the trash they decide to install on the board the regulator with 2.8V output voltage! It’s a vile blow to the back of a radio amateur – I can not call it otherwise. With this supply voltage the I2C bus normally works with 5V TTL Arduino boards. At first glance all going well. The module seems to be working and even measuring something. However, for the MAX3010x this voltage is far beyond the permissible range.
No, the sensor does not completely fail but make a measures mostly wrong. The MAX30100 Datasheet clearly states that compliance with the power range is necessary for the stable operation of the built-in counter (referring to the built-in timing block for the ADC and logic timers). As a result, we are surprised to find that a professional-level sensor works extremely unstable and is not at all as described in Internet articles. I spent the whole evening to understand what was going wrong.
Final fix
Measure the voltage at the output of the second regulator. If there is + 1.8V then you are lucky. After cutting the track and installing the jumper the procedure is complete. Otherwise you will have to replace the regulator. We need a regulator XC6206P182MR. You can try to order it in your local store. But somewhere it may be easier and cheaper to order regulator on Ebay or Aliexpress. On Aliexpress a lot of 100 regulators are offered for $1.70. Be careful while ordering! Two digits after the letter P denote the operating voltage. In our case 18 means 1.8V.
Remove the wrong 2.8V regulator, cut the track, put the jumper, install 1.8V regulator on his place. Now that’s all!
Thank you very much!!
LikeLike
Thank you very much.
LikeLike
Thanks a lot!!!!!
LikeLike
Do you sell a repaired and working sensor max30101 / 2?
LikeLike
Thanks, Do you know if this different board works? https://www.aliexpress.com/item/4000320955076.html?spm=a2g0o.cart.0.0.30c33c00CnWVzJ&mp=1
LikeLike
Sorry, I have no experience with this board.
LikeLike
I measured for this type of board. The regulator supplies the correct 1.8V. The pullup resistors are connected to 3.3V. So that is okay I guess ?
LikeLike
Yes you are right, it should be okay
LikeLike
Dear Valeriy Yatsenkov, thanks for sharing your fix.
I’ve a question, I’ve saw some other topics on the internet, saying that it’s enough to remove the three SMD resistors and put then externally, between VIN and Arduino connections, like this(https://i2.wp.com/www.teachmemicro.com/wp-content/uploads/2018/03/Arduino-MAX30100-wiring-diagram.jpg).
On other topic they said that that jumping from resistors to U3 regulator was enought, like this image suggests(https://user-images.githubusercontent.com/7552369/39305353-cd7e0174-4997-11e8-83a3-4e0f488f4f5b.png)
I’m contacting you because your blog was the first that I found on the internet, when I was searching for that oximetry sensor. I’m currently doing a university paper for 2º semester at Computer Sciente, I’m here to ask you if those procedures that I said above, they actually works too? I’m trying to go for the easiest path, since I’ve not so much background in electronics. When I saw your blog post, I ordered the XC6206P182MR from aliexpress but I’m afraid that it maybe not arrive on time.
So, what are your thoughts about those methods that I posted above? The second method is something simlar to yours, they are the same? It’s just the position of the jumper that changes?
What about the first one?
Again, thanks for sharing your research, as I said, I’m just a student looking to learn, so If you can clarify those questions I’ll be extremely grateful.
Thanks in advance.
Regards,
Lucas
LikeLike
so, did you find the fix? please reply. I am also stuck
LikeLike
hi, I hope you are fine.I have a question. Is there a sensor max30100 connection to Raspberry Pi that you have raised?
LikeLike
Dear Amin, sorry, I never connect this sensor to Raspberry Pi. Also I heard about some problem with RPi software implementation of I2C bus, because it is not hardware but bit-bang. But I never dived deep into this subject…
LikeLike
Thankful
LikeLike
We found the same problem and made the same fix way
LikeLike
hi,Thank you. I am also following this solution.
LikeLike
jajajaj bad solution, SDA and SLC interconnect with max, the communications are bidireccional, yo solution does not work. 5v int the max pins sda and scl.
LikeLike
Thanks, for your efforts.
And instead of cutting the track cant we solder a resistor in header pins of SCL,SDA,INT to 3.3V and removing all those 3 SMD resistors.
LikeLike
Dear sir,
Thank you very much for the detailed information. I could successfully complete it and it is working now. Thanks a lot.
LikeLike
hi,You’re welcome.Did you test with sensor max30100 connection to Raspberry Pi?
LikeLike
hai friends anybody have max30102 aurdino code
LikeLike
Thank You.. it fixed my board!!
LikeLike
https://www.sparkfun.com/products/12009
SparkFun Logic Level Converter – Bi-Directional
f you’ve ever tried to connect a 3.3V device to a 5V system, you know what a challenge it can be. The SparkFun bi-directional logic level converter is a small device that safely steps down 5V signals to 3.3V AND steps up 3.3V to 5V at the same time. This level converter also works with 2.8V and 1.8V devices.
LikeLike