diff --git a/libraries/BLE/src/BLERemoteCharacteristic.cpp b/libraries/BLE/src/BLERemoteCharacteristic.cpp
index dbf7e736a74..825ca33c73b 100644
--- a/libraries/BLE/src/BLERemoteCharacteristic.cpp
+++ b/libraries/BLE/src/BLERemoteCharacteristic.cpp
@@ -247,6 +247,8 @@ void BLERemoteCharacteristic::gattClientEventHandler(esp_gattc_cb_event_t event,
 			break;
 
 		case ESP_GATTC_DISCONNECT_EVT:
+			// Cleanup semaphores to avoid deadlocks.
+			m_semaphoreReadCharEvt.give(1);
 			m_semaphoreWriteCharEvt.give(1);
 			break;