ESP32/Sen6x: Communication failed error

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.

Use multimeter to verify your connections.
I tested SEN62 month ago and it worked without problems with 4k7 pullups.