Sonoff POW CT (Ring) – ESP32 flashes successfully but stuck in invalid header boot loop

I’m having consistent issues flashing Sonoff POW CT (Ring, 100A) devices.
Flashing appears successful with ESPHome, Tasmota, and esptool, but the device never boots and remains stuck in an endless reset loop.

This has happened on two different POW CT units, following very careful procedures, so hardware damage or user error seems unlikely.

Observed Behavior:

After flashing (ESPHome or Tasmota):

No WiFi connection

No fallback AP

No LEDs active

Serial log shows endless loop:

invalid header: 0xffffffff
ets Jul 29 2019 12:21:46
rst:0x10 (RTCWDT_RTC_RESET), boot:0x13 (SPI_FAST_FLASH_BOOT)

Loop repeats indefinitely.

What I Have Tried:

ESPHome Web flasher

Tasmota Web installer (tasmota32)

esptool.py erase_flash

Manual flashing with esptool.py

Powering via:

External regulated 3.3V

AC L–N (120V, onboard PSU confirmed stable 3.3V)

Different ESP32 board definitions:

esp32dev

nodemcu-32s

Minimal YAML (WiFi only)

Full YAML (CSE7761 + TM1621)

ESP-IDF framework and Arduino framework

All flashes report success, but runtime behavior is always the same.

Hardware Notes

Model: Sonoff POW CT (Ring) – 100A

ESP32 + external SPI flash

UART access confirmed

Boot button (GPIO0) detected correctly

Flash erase confirmed

Same result on two separate units

Hypothesis

This looks like one of the following:

Non-standard flash layout or size

Bootloader expecting a custom offset

SPI flash incompatibility

Partial secure boot / vendor-specific boot configuration

The device boots into SPI flash mode but cannot find a valid firmware header.

Question

Has anyone successfully flashed ESPHome or Tasmota on the Sonoff POW CT (Ring)?

If yes:

Which firmware?

Which board definition?

Any special flash offsets or flags?

Any known limitations on newer batches?

Any insight would be greatly appreciated.
I’m attaching the serial log screenshot for reference.

did you get confirmation for successful erase?

yes, succesful erase confirmed

And upload through esphome CLI?

No, i didn´t . maybe could it make a difference?

Try purging your ESPHome cache and let it build it again on next re-compile to flush any leftover obsolete files.
Are you running the latest versions of everything?

2019? What versions are you using?

Post some code and more logs [</> formatted please]

Thanks for the suggestions.

Yes, I already tried purging/erasing the flash completely multiple times (erase_flash) and re-flashing from scratch. The issue persists across ESPHome Web, Tasmota Web Installer, and esptool.py.

Environment / Versions

ESP32 SoC (Sonoff POW CT Ring, ESP32-based)
ESPHome:

  • ESPHome Web (latest at the time of testing)
  • PlatformIO auto-installed by ESPHome
  • Also tested with Tasmota32 (latest stable)

The boot log always shows a continuous loop like this, regardless of firmware:

invalid header: 0xffffffff
ets Jul 29 2019 12:21:46
rst:0x10 (RTCWDT_RTC_RESET), boot:0x13 (SPI_FAST_FLASH_BOOT)

Sometimes the header value changes (e.g. 0x79616c70, 0x50434d7c), but the behavior is identical: watchdog reset loop, no WiFi, no AP, no LEDs, no application logs.

What I’ve verified:

  • Flashing succeeds (erase + write complete without errors)

  • Power rails OK (stable 3.3 V measured on board)

  • Same behavior when powered via:

    • External regulated 3.3 V
    • AC mains (L–N), onboard PSU
  • BOOT button interaction is detected (can force DOWNLOAD mode)

  • Happens on two different POW CT units from the same batch

Minimal ESPHome test YAML:

Even with a minimal config (no sensors, just WiFi + logger), the loop persists:

esphome:
  name: powct-test

esp32:
  board: nodemcu-32s

logger:

wifi:
  ssid: "TEST_SSID"
  password: "TEST_PASS"

captive_portal:

If anyone has confirmed success flashing ESPHome or Tasmota on a POW CT Ring (recent hardware revision), I’d really appreciate:

  • Exact ESPHome/Tasmota versions
  • Board definition used
  • Any special flashing steps (flash mode, frequency, offsets, etc.)

Happy to post more logs if needed, but the behavior is 100% reproducible and firmware-agnostic so far.

Thanks in advance.

Maybe it could.

Sonoff powct / pow ring power not accurate - ESPHome - Home Assistant Community

Maybe try with

esphome:
  name: powring
  friendly_name: PowRing

wifi:
  networks:
    - ssid: !secret wifi_ssid
      password: !secret wifi_password
    - ssid: !secret wifi_ssid2
      password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "PowRing Hotspot"
    password: "password"

captive_portal:

esp32:
  board: esp32dev
  framework:
    type: esp-idf
1 Like