I'm trying to get the readings from SEN66 sensor and I'm hitting [sen6x:070]: Communication failed error even though the sensor is detected by esp32 at address 0x6B
This is my esphome config file
esphome:
name: air-monitor-sen66
esp32:
board: esp32dev
framework:
type: esp-idf
logger:
wifi:
ssid: "[REDACTED]"
password: "[REDACTED]"
i2c:
id: i2c_bus
sda: GPIO21 # I2C_SDA — Freenove_ESP32_WROOM_Board_Pinout.pdf, p. 1
scl: GPIO22 # I2C_SCL — Freenove_ESP32_WROOM_Board_Pinout.pdf, p. 1
scan: true # logs all detected I2C devices at boot — SEN66 should appear at 0x6B
sensor:
- platform: sen6x
# ESPHome sen6x component: https://esphome.io/components/sensor/sen6x.html
# SEN66 I2C address 0x6B — SEN6x Datasheet p.15, COMPONENTS.md
type: SEN66
co2:
name: "CO2"
unit_of_measurement: ppm
pm_1_0:
name: "PM1.0"
pm_2_5:
name: "PM2.5"
pm_4_0:
name: "PM4.0"
pm_10_0:
name: "PM10.0"
temperature:
name: "Temperature"
humidity:
name: "Humidity"
voc:
name: "VOC Index"
nox:
name: "NOx Index"
update_interval: 60s
This is the portion of the logs which shows the error after running esphome run esphome/above-config.yaml
[08:41:05.245][E][sen6x:070]: Communication failed
[08:41:05.240][C][logger:239]: Task Log Buffer Size: 768 bytes
[08:41:05.245][E][sen6x:070]: Communication failed
[08:41:05.251][E][component:389]: sen6x.sensor set Error flag: Communication failed
[08:41:05.256][E][component:277]: sen6x.sensor was marked as failed
[08:41:05.262][C][i2c.idf:092]: I2C Bus:
[08:41:05.265][C][i2c.idf:093]: SDA Pin: GPIO21
[08:41:05.265][C][i2c.idf:093]: SCL Pin: GPIO22
[08:41:05.269][C][i2c.idf:093]: Frequency: 50000 Hz
[08:41:05.274][C][i2c.idf:103]: Recovery: bus successfully recovered
[08:41:05.279][C][i2c.idf:113]: Results from bus scan:
[08:41:05.284][C][i2c.idf:119]: Found device at address 0x6B
[08:41:05.287][C][sen6x:162]: sen6x:
[08:41:05.287][C][sen6x:162]: Product:
[08:41:05.287][C][sen6x:162]: Serial:
My setup: FNK0090 Freenove ESP32-WROOM-32E Board, ESPHome 2026.6.2 (installed on Mac), Sensirion SEN66 at 0x6B, 3.3V, 4.7kΩ pull-ups.
Connection Details: The SEN66 JST cable (150mm, JST GH 1.25mm 6-pin) connects on the sensor side, with the bare wire ends inserted directly into the breadboard. The ESP 32 is connected to the bread board via female-to-male jumper wire.
- SEN66 pin 1 (VDD) → ESP32 3.3V
- SEN66 pin 2 (GND) → ESP32 GND
- SEN66 pin 3 (SDA) → ESP32 GPIO21 + 4.7kΩ resistor (other leg) → ESP32 3.3V rail;
- SEN66 pin 4 (SCL) → ESP32 GPIO22 + 4.7kΩ resistor (other leg) → ESP32 3.3V rail;
- SEN66 pin 5 (GND) — unconnected
- SEN66 pin 6 (VDD) — unconnected
I'm a total newbie and this is my first DIY project, any help or pointers is greatly appreciated.