MLX90614 from ebay don't work


recently I purchased two MLX90614-AAA from Ebay. At first look they have different markings (printed instead of engrawed) and marking says "B89736X20E".

I connected them to my hardware and they don't work. Older sensors I have (with engraved marking MLX90614...) work ok. I tried several codes from internet.

Does anyone have a similar problem? I suspected they are fake and opened one can. There is a wafer chip and a sensor where it should be as in "genuine" MLX.

Thanks for sharing your experience.

Some links to the two sensors would help.


I've bought 2 from this source: (both working)


Knut, what marking do your sensors have? Is marking printed or engraved? Would you be willing to share simple code? I tried several codes and it works only on sensors with engraved marking.

Here are sample pictures of "original" sensors and the ones I have problems with. These are not actual sensors I have, just sample pictures from internet. On first picture is BAA - 3.3V version, mine is AAA- 5V version.

I also contacted Melexis to see if these sensors are fake or not.



engraved. I was the lucky one…
Contact seller about your “fake” sensors.
I run Adafruits example:

  This is a library example for the MLX90614 Temp Sensor

  Designed specifically to work with the MLX90614 sensors in the
  adafruit shop

  These sensors use I2C to communicate, 2 pins are required to  
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution

#include <Wire.h>
#include <Adafruit_MLX90614.h>

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

void setup() {

  Serial.println("Adafruit MLX90614 test");  


void loop() {
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempC()); 
  Serial.print("*C\tObject = "); Serial.print(mlx.readObjectTempC()); Serial.println("*C");
  Serial.print("Ambient = "); Serial.print(mlx.readAmbientTempF()); 
  Serial.print("*F\tObject = "); Serial.print(mlx.readObjectTempF()); Serial.println("*F");


…this output

Adafruit MLX90614 test
Ambient = 26.21C Object = 25.29C
Ambient = 79.18F Object = 77.52F

Ambient = 26.23C Object = 25.31C
Ambient = 79.21F Object = 77.56F

Yeah, mine are printed... and above code does not work :(

I ordered 6 pcs. I have to settle with ebayer not to sending them back, since shipping will cost more than they are worth.

Have U tried the I2C-scanner to find its address ?

Sorry for late reply...

I tried 0x5A and 0x00 address. I will try also with i2c scanner.

Today I got 4 more sensors, all with printed markings :(

Connected one, does not work. Did not even bother with the rest three

If I try them with I2 scanner, scanner freezes. It even freezes on "genuine" sensors which work ok.

I guess those sensors with printed markings are fake. Will return them to the seller.

I have 2 of those sensors with printed marking "B89736X20E". Both working, with my AVR-GCC code (not Arduino).

Hi Damo, I'm in foreign territory here as I'm a PicAxe user myself but have a similar problem to yours. I've just spent the best part of four hours trying to get a couple of sensors from Antech Electronics via AliXpress working with known good PicAxe code for the Melexis part, but no joy. I've just had a closer look at the devices and see they're the same ones you've got.

Tormentor - Did you have to make any changes to your standard AVR code to get these to work?


no, I use soft bit-banged I2C without any changes. Maybe startup delay too small (POR delay for MLX 150ms minimum) ? Or I2C speed too high ? Try to solder 0.1..1uF cap directly on VCC/GND pins.

I've received 4 of the sensors from another source. These are a different acceptance angle but correctly marked as the Melexis part. Both batches are 5V operation.

If I plug in the new parts to my breadboard I get correct Tamb and Tobj temperatures. If I plug in the incorrectly marked parts I get full range reading with a bit of dither, but not related to what's in front of the window.

I'll be opening a complaint case with the supplier.

Curiouser and curiouser . . .

I also bought a MLX90614 with a different field of view from the same supplier and changed my supply voltage to test this one (I intentionally ordered the 3.3V version of this) and it worked.

On a whim, I plugged in one of the incorrectly marked 5V devices which I couldn't get to work and started getting sensible readings off it. More investigation required, but it looks like there will be some mileage in these dubious devices after all.

Tormentor, if you're still around, what value are you using for the I2c pullups?

2.2K, 3K, 4.7K - all working.

Here is my soft-I2C lib:

Thanks for the code Tormentor, although it means little to me; with the Picaxe the I2C routines are all hidden by the interpreter so my setup code is Hi2cSetup I2CMaster, I2cAdr , I2Cslow_8, I2CByte and read command is Hi2cin RamLoc, (TgtLo, TgtHi, PEC). My routine works fine with 5V 10 degree and 3.3V 35 degree versions of the 90614.

However, if I run the 5V dodgy device at 3.3V or 4V and power-cycle the sensor after powering up the processor I can get sensible readings off it!!! This doesn't work at 5V though. I've got a 0.1uF as close as poss to the device but breadboarded at the mo, so not ideal. I'll hard-wire it and see if things improve. (I'm not using these for any sort of serious project, otherwise I've have binned them long ago ;¬)

Hello guys,

does anyone have a working code for 'non genuine sensors' - sensors with printed markings?

Apologies Damo, I hijacked your thread a bit.

If your dodgy devices are anything like mine, I think the problem is not so much with the coding as the device fabrication itself. As Knut_NY had success with the Adafruit code I suggest you use that and try the things I listed above, i.e. drop the voltage and apply power to the device after the Arduino. I couldn't get mine to work any other way.

(Mine are going in the bin . . . Or I may use them for that reactor core temperature monitor I'm designing ;¬)


Dear Damo1023 My name is Phuoc.My sensor is also printed marking ( B89763X20E) MLX90614 ESF AAA use 5V, I also get this problem,the serial monior just print "set up" and do nothing. I don't know problem is my sensor or code? Have solved this problem yet? can you share me your method? Thanks

I ordered some of these parts from Amazon with printed code B90453X09E, billed as MLX90614BBA (dual zone), $6 each.

Hooking a scope up to the output, it appears they are set up in PWM mode. I get pulses of about 270 usec with the device pointing to the ceiling and about 320 usec with my hand up close. The pulses are 1 msec apart, set to repeat some number of times.

My guess is these rebranded devices are set up for an automotive application.

I’ll try to figure out how to reset the mode back to I2C.