ESPHome 2026.10.2 was published on GitHub on 2 November 2026 at 21:30 UTC. It is a point release with six listed fixes. One of them matters a lot more than the rest if you run Realtek RTL8710B hardware: an over-the-air update could leave the module unable to boot, and the only way back was a reflash over serial.

The release notes list the fix as "[ota] Work around the LibreTiny OTA issue that bricks RTL8710B on a compressed update" (#22111). The pull request describes the problem as a regression in 2026.10.0. That is the release that started compressing OTA uploads. The real fix belongs in LibreTiny, the framework ESPHome uses for these non-Espressif chips, and that fix is still an open pull request. So 2026.10.2 is a workaround, not a cure. The Q&A below covers what broke, what changed, and what to check before you press "Install" on a fleet of Realtek modules.

What actually went wrong?

The ESPHome 2026.10.0 changelog on esphome.io includes "[esphome][ota][core] Compress OTA uploads on ESP32, RP2040, LibreTiny and host" (esphome#19037 by @bdraco). With this change the upload tool sends a compressed image, and the device inflates it as it writes to flash. That cuts the amount of data sent over Wi-Fi.

On RTL87xx parts this collided with how LibreTiny writes OTA images. LibreTiny PR #433 describes two separate faults:

  • Buffer corruption. lt_ota_write() handed the caller's buffer straight to the UF2 writer. When the target was the OTA2 slot, uf2_binpatch() patched that block in place. The buffer was ESPHome's inflate window, which the decompressor still needed as back-reference history. Patching it corrupted the inflated image, and the MD5 check then failed on RTL87xx running from OTA1. The LibreTiny PR says it fixes the root cause of ESPHome issue #22012.
  • Activating before verifying. UpdateClass::cleanup() called lt_ota_end(), which switches the boot image, before it compared the MD5. So a corrupt image could be activated even though the update reported an error.

Each fault alone is a nuisance. Together they brick the module. ESPHome PR #22111 states it directly: "on RTL8710B a failed compressed update becomes the boot image and the module needs a serial reflash." It also names the trigger: a compressed OTA to an RTL8710B that is running from OTA1 corrupts the new image, and the module bricks at its next restart. A device running from OTA1 writes its update into OTA2, which is the slot where the in-place patching happens.

Why did it get through?

The sources don't give a post-mortem, but the mechanism suggests an answer. The bug depends on which slot the device is booted from, because the in-place patching happens only when writing to OTA2. Each successful update switches the boot slot, so a unit's behaviour can depend on its OTA history. That fits the LibreTiny PR's testing note, which says three consecutive compressed updates covered writing to both OTA1 and OTA2, and that writing to OTA2 previously failed with an MD5 error.

What does 2026.10.2 change?

PR #22111 was merged on 2 November 2026 under the 2026.10.2 milestone. It makes two changes for users:

  1. A refused update no longer becomes the boot image, on any LibreTiny chip, not only the RTL8710B. The PR also reports that on the tested boards a wrong-MD5 update was refused and the running image was kept after a restart.
  2. RTL8710B images are sent uncompressed to 2026.10 firmware, which still has the bug. The upload tool prints a warning that this takes longer. Once the 2026.10.2 firmware is installed, later OTAs are compressed again.

The PR says the change was tested on BW12, BW15, BK7238 and LN882H boards, and that on the BW12 the testing covered both slots. That covers more than one LibreTiny chip family, which matters because the "don't boot a refused image" change applies to all of them.

The PR also lists the parts that are temporary. A 511-byte write limit and the backend's own MD5 check "can go once ESPHome uses a LibreTiny release with that fix." In other words, ESPHome added defensive code around LibreTiny's behaviour and expects to remove part of it later.

What is the proper fix, and where is it?

LibreTiny PR #433, "Don't modify const OTA data in place, check MD5 before activating image," was opened on 1 November 2026. As of this writing it was still open and had not been merged. It fixes both faults at their source:

  • lt_ota_write() always copies into ctx->buf, so the caller's buffer is never modified. The cost is one 512-byte memcpy per block.
  • The MD5 is compared before lt_ota_end() activates the image.
  • A new lt_ota_cancel() function frees the update context on mismatch without activating the image. A second commit also invalidates the target image on dual-slot chips if any data was written, because some bootloaders boot a valid image regardless of the switch flag.

The PR's author tested on RTL8710BX hardware, an EMW3080 and a Solis WiFi stick, running ESPHome 2026.10.1. Three consecutive compressed OTA updates succeeded, covering both OTA1 and OTA2.

What else is in 2026.10.2?

The other five items in the release notes are smaller:

  • [http_request] Fix macOS host build with the precompiled header (#21705)
  • [esp32][audio_http] Keep TLS 1.3 working (#21786)
  • [core] Start the Apple Silicon cc1plus wrapper through sh when the Python path has a space (#21967)
  • [host] Offer the built program as a download in the Device Builder (#22114)
  • [bluetooth_proxy] Release held connections when a new client replaces the subscriber (#22077)

The Bluetooth proxy fix is likely to matter to people without Realtek hardware. Users running audio over HTTP on ESP32 should also note the TLS 1.3 fix.

One documentation note: esphome.io has no separate changelog page for 2026.10.2. That URL returns a 404, although the site header already shows 2026.10.2 as the current version. The GitHub release is the primary record for this point release.

What It Means for Makers

This release matters most to anyone who flashed ESPHome onto RTL8710B-based modules through LibreTiny and has been updating them over the air since 2026.10.0. Points to check:

  • If you are on 2026.10.0 or 2026.10.1 with RTL8710B devices, update your ESPHome tooling to 2026.10.2 before you push any more OTA updates to them. The PR says the upload tool sends RTL8710B images uncompressed to 2026.10 firmware, so the protection for that first update comes from the tool doing the upload.
  • Expect one slower upload to each such module, along with the warning about it. That is intended. After the 2026.10.2 firmware is installed, OTAs are compressed again.
  • If a module already failed to boot after an update, the PR says the module needs a serial reflash. 2026.10.2 prevents new bricks. It cannot reach a device that no longer boots.
  • Other LibreTiny chips also get the change that stops a refused update from becoming the boot image. The PR lists BK7238 and LN882H boards among those tested.
  • Watch LibreTiny PR #433. When ESPHome uses a LibreTiny release with the fix, the temporary 511-byte write limit and the backend's own MD5 check can go, according to ESPHome's PR.

Availability: ESPHome 2026.10.2 is available now as the official GitHub release, published 2 November 2026. None of the sources give a price. This is a software release, not hardware. The upstream LibreTiny fix has not been merged.

Sources