Beken BK72xx chips running ESPHome could not talk to a single I2C sensor until now. Change #21586 by Korkuttum, merged into ESPHome's development branch on 26 October 2026, adds a software I2C bus for the bk72xx platform. It is set to ship in ESPHome 2026.11.

Why I2C was missing

ESPHome runs on Beken chips through LibreTiny, and LibreTiny has no Wire implementation for them. The generic Arduino I2C bus in ESPHome was never built for LibreTiny, so the i2c component simply did not support bk72xx. Every I2C sensor was out of reach on those chips.

The change names a typical victim: Tuya infrared remotes with a built-in temperature and humidity sensor, built on a CBU module with a BK7231N. The sensor is on the board, but ESPHome had no way to read it.

How the new bus works

The new SoftwareI2CBus is a bit-banged I2C master, driven entirely by the processor:

  • any two GPIO pins can be used for sda and scl, and there are no default pins, so both have to be set;
  • a line is released by switching the pin to an input with pull-up and pulled low by driving it as an output, which imitates open-drain behaviour;
  • it handles repeated start, ACK and NACK, and clock stretching with a timeout option (1 ms by default);
  • the bus scan works, and at startup the bus runs a recovery that clocks out a device holding SDA low;
  • the frequency can be set, with 100 kHz as the default on bk72xx.

Existing I2C sensor components work on top of it unchanged. The author tested the hdc1080 component on a BK7231N board with a CHT8305 sensor, which uses the same registers as the HDC1080. The scan found the device at address 0x40, and temperature and humidity were read correctly.

A minimal configuration from the change looks like this:

bk72xx:
  board: cbu

i2c:
  sda: P6
  scl: P26
  scan: true

sensor:
  - platform: hdc1080
    temperature:
      name: "Temperature"
    humidity:
      name: "Humidity"

Limits

The author lists two. Each transfer blocks ESPHome's main loop for as long as it lasts, and the real clock speed is lower than the configured one because of software overhead. For a temperature sensor read every few seconds neither matters much, but a fast bus with many devices is not what this was made for.

Only BK72xx is enabled. RTL87xx and LN882x chips, which also use LibreTiny, are left out because the author had no hardware to test them.

Before you flash

Check which pins the sensor uses on your board, because there are no defaults to fall back on. Documentation for the new bus is waiting in a separate change to esphome.io, #7900. The feature arrives with ESPHome 2026.11; it is not in 2026.10.