u/EastyUK

Incase anyone is hitting the scenaro with the same issue, hopefully save someone my spin of frustration. 😄

Symptoms:

  • ENS160 boots successfully, firmware version reads correctly
  • I2C scan finds device at correct address
  • Stuck permanently in ENS160 readings unavailable - Normal Operation but readings not ready
  • Never produces eCO2, TVOC or AQI readings regardless of how long it runs

Hardware:

  • ESP32-C6 running ESPHome esp-idf framework
  • ENS160+AHT21 combo breakout board
  • Multiple I2C devices on same bus (AHT21 at 0x38, ADS1115 at 0x48, ENS160 at 0x52)

What didn't work:

  • Waiting 5+ days powered continuously
  • Adding 30s boot delay
  • Removing compensation block
  • Dropping I2C frequency to 10kHz (actually made it worse)

What fixed it: Increasing I2C frequency to 800kHz

yaml

i2c:
  sda: GPIO6
  scl: GPIO7
  scan: 
true
  frequency: 800khz

The ENS160 apparently needs a fast enough I2C clock to complete its internal initialisation handshake. At low frequencies it communicates but never exits warmup state.

reddit.com
u/EastyUK — 17 days ago