The fake sensor problem

In some hobby-sensor categories, counterfeits aren't a risk — they're the default. Essentially every "waterproof DS18B20" on AliExpress contains a clone chip, "BME280" listings routinely ship a different part, and some CO2 sensors don't measure CO2 at all. None of this is obvious from the listing, and most of it isn't obvious from the readings either — until the one day it matters. This page collects the documented cases and, more usefully, the checks you can run on hardware you already own.

Sources are linked per section — the primary research here was done by people who bought hundreds of parts and measured them; we're aggregating it for buyers.

DS18B20: the best-documented fake epidemic in hobby electronics

Chris Petrich tested over 1,000 DS18B20 probes from 70+ vendors and concluded that effectively all waterproof probes sold on eBay and AliExpress contain counterfeit chips — at least five distinct clone families. Genuine chips exist, but only as bare parts from authorised distributors (Mouser, DigiKey); nobody assembles genuine chips into $1.50 probes.

Why it matters: clones commonly fail parasite-power mode, read outside the ±0.5 °C spec (some families are miscalibrated at the temperature extremes you bought a probe for), and a few misbehave on long multi-drop buses.

Check your own

Genuine parts have 1-Wire ROM addresses of the form 28-xx-xx-xx-xx-00-00-crc — the two bytes before the checksum are zero. ESPHome prints every device's address at boot when the one_wire bus starts:

[dallas.sensor] Found sensors:
[dallas.sensor]   0x1C0000031EDD2A28   <- ends in the 0x28 family code;
                     ^^^^                genuine chips have 00 00 here

An address like 0x??0000xxxxxxxx28 (zeros in that position) is consistent with genuine; anything else is a clone. Petrich's repo has an Arduino sketch that fingerprints the exact clone family.

Practical verdict: for home automation, a well-behaved clone reading ±1 °C is usually fine — just don't rely on parasite power, keep bus runs sensible, and sanity-check each probe against a known thermometer before you trust it in a freezer or brew kettle. Details on the DS18B20 page.

Source: cpetrich/counterfeit_DS18B20

The "BME280" that's a BMP280

The BME280 (temperature, humidity, pressure) and BMP280 (no humidity) share the same breakout-board layout, and the BMP die is about a dollar cheaper — so a steady stream of "BME280" listings ship BMP280s. This one isn't even subtle counterfeiting; it's substitution, and it's common enough that "bme280 vs bmp280" autocompletes on Google.

Check your own

Read the chip-ID register (0xD0): 0x60 = BME280, 0x58 = BMP280. ESPHome does this for you — a substituted board fails with:

[bme280.sensor] Communication with BME280 failed! (Wrong chip ID 0x58)

Physical tell before you solder: the BME280's metal can is nearly square (2.5 × 2.5 mm); the BMP280's is visibly rectangular. Price tell: a $1.30 "BME280" is a BMP280.

Practical verdict: if you got BMP'd, the board still works fine as a pressure/temperature sensor — configure it as a BMP280 and buy your humidity sensing from a listing that costs what a real BME280 costs. Or skip the drama: an SHT41 plus a BMP280 is cheaper than a genuine BME280 and more accurate.

Source: Gough Lui's teardown of the confusion

MH-Z19: the clone that reads low — on a safety sensor

The MH-Z19B/C CO2 sensor has a well-documented clone problem: units on black PCBs (genuine Winsen boards are green/blue) have been measured reading consistently low, with double the noise and broken automatic baseline calibration. A CO2 sensor that under-reports is worse than none — it tells you the air is fine when it isn't.

Check your own

  • PCB colour and source: black PCB or a no-name listing = assume clone. Genuine comes from the Winsen official store.
  • Outdoor test: fresh outdoor air is ~420 ppm. A healthy unit settles near that outside; a clone reading 300 ppm (or pegged at 5000) is lying to you.
  • Pegged at 5000 ppm indoors? Usually a weak 5 V supply or a clone, not actual CO2.

Practical verdict: even genuine MH-Z19s drift and need calibration discipline (disable auto-baseline in bedrooms — details on the MH-Z19 page). In 2026 the cleaner answer is a Sensirion SCD41: similar money, no meaningful clone market, native ESPHome support.

Sources: eMariete's fake MH-Z19 identification guide · RevSpace long-term measurements

"CO2 sensors" that never measure CO2

This one is legal, labelled, and still catches almost everyone: sensors advertising eCO2 (ENS160, SGP30, CCS811, BME680's BSEC output) do not measure carbon dioxide. They measure VOCs — smells, solvents, breath chemistry — and estimate a CO2-like number from them. The failure mode is exactly the case you bought it for: a bedroom full of sleeping people produces lots of CO2 and few VOCs, and the "CO2" reading stays cheerfully normal.

Check the listing (before buying)

Find the sensing element. Real CO2 = NDIR or photoacoustic: SCD40/SCD41, MH-Z19, SenseAir S8 — physically bigger parts, because there's an optical chamber inside. If the listing says ENS160/SGP30/CCS811 or the spec line says "eCO2", it's a VOC estimator wearing a CO2 costume.

Practical verdict: VOC sensors are genuinely useful — for VOC things (cooking, solvents, "the air got weird"). Buy an ENS160 or SGP41 for that job, and never let an eCO2 number drive a ventilation decision.

Context: HA forum: "Air Quality sensors — dangerous fakery"

The quick-hits list

Lower stakes, same pattern — know before you solder:

PartThe problemThe check / fix
AS3935 lightning CJMCU clone boards ship wrong antenna tuning caps and can't calibrate Antenna calibration fails outright → buy DFRobot/SparkFun
Capacitive soil v1.2/v2 NE555 fitted instead of TLC555 (flaky at 3.3 V); missing bleed resistor; unsealed board edge Readings stuck or supply-dependent → check the 555's marking; coat the board top
NEO-6M GPS Virtually all AliExpress "u-blox" modules are counterfeit or refurb They mostly work; the ATGM336H is the honest-silicon alternative
HX711 Clone boards strap the rate pin to 10 Hz and use noisy regulators Wandering readings → re-strap to 80 Hz, feed clean 3.3 V
MPU6050 Genuine silicon is EOL — every GY-521 is a clone or recycled die Fine for vibration events; don't trust orientation tracking
Sensirion SHT3x/4x Mostly genuine, with a tail of reworked/salvaged dies that drift Batch reads oddly → compare against a second unit before blaming the config
HLK LD24xx radars Not fakes — but firmware differs by batch, and updates have broken ESPHome before Buy from the Hi-Link official store; note your firmware version

How to buy without getting burned

  1. Price sanity is a data point. A part that costs a third of everyone else's is answering a question you didn't ask.
  2. Prefer official stores where they exist (Hi-Link, Winsen, DFRobot, Seeed) — clone economics live in the anonymous listings.
  3. Test on arrival, not on installation. Five minutes with an I2C scan, a chip-ID read or a ROM dump beats debugging a wall-mounted sensor in winter. Every sensor page here lists what "genuine" looks like.
  4. Keep one reference unit. A single known-good SHT41 or SCD41 lets you sanity-check every cheap sensor you ever buy against it.
  5. Match the measurement to the physics. Real CO2 needs an optical chamber; real humidity needs a humidity element. If the physics isn't in the package, the number is an estimate no matter what the listing says.

Every sensor in the comparison table carries a clone-risk rating with per-part detection notes — filter by "Low clone risk" if you'd rather just avoid the problem.

← All sensors