diff --git a/esphome/components/bluetooth_proxy/bluetooth_connection.cpp b/esphome/components/bluetooth_proxy/bluetooth_connection.cpp index a21a859c9e..b16b894188 100644 --- a/esphome/components/bluetooth_proxy/bluetooth_connection.cpp +++ b/esphome/components/bluetooth_proxy/bluetooth_connection.cpp @@ -118,12 +118,11 @@ void BluetoothConnection::loop() { } // Check if we should disable the loop - // - For V3_WITH_CACHE: Services are never sent, disable immediately once connected + // - For V3_WITH_CACHE: Services are never sent, disable after INIT state // - For other connections: Disable only after service discovery is complete // (send_service_ == DONE_SENDING_SERVICES, which is only set after services are sent) - if ((this->state() == espbt::ClientState::ESTABLISHED || this->state() == espbt::ClientState::CONNECTED) && - (this->connection_type_ == espbt::ConnectionType::V3_WITH_CACHE || - this->send_service_ == DONE_SENDING_SERVICES)) { + if (this->state_ != espbt::ClientState::INIT && (this->connection_type_ == espbt::ConnectionType::V3_WITH_CACHE || + this->send_service_ == DONE_SENDING_SERVICES)) { this->disable_loop(); } }