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.
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.
The quick-hits list
Lower stakes, same pattern — know before you solder:
| Part | The problem | The 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
- Price sanity is a data point. A part that costs a third of everyone else's is answering a question you didn't ask.
- Prefer official stores where they exist (Hi-Link, Winsen, DFRobot, Seeed) — clone economics live in the anonymous listings.
- 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.
- Keep one reference unit. A single known-good SHT41 or SCD41 lets you sanity-check every cheap sensor you ever buy against it.
- 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.