diff --git a/esphome/components/esphome/ota/ota_esphome.cpp b/esphome/components/esphome/ota/ota_esphome.cpp index dfa637f701..b2ae185687 100644 --- a/esphome/components/esphome/ota/ota_esphome.cpp +++ b/esphome/components/esphome/ota/ota_esphome.cpp @@ -370,12 +370,14 @@ void ESPHomeOTAComponent::handle_data_() { error: this->write_byte_(static_cast(error_code)); - this->cleanup_connection_(); + // Abort backend before cleanup - cleanup_connection_() destroys the backend if (this->backend_ != nullptr && update_started) { this->backend_->abort(); } + this->cleanup_connection_(); + this->status_momentary_error("err", 5000); #ifdef USE_OTA_STATE_LISTENER this->notify_state_(ota::OTA_ERROR, 0.0f, static_cast(error_code));