[ESP32 에러] BT_HCI: hcif disc complete: rsn 0x3d
위와 같은 에러가 뜬다면, 기존에 ble 작업하면서, bonding 되어 있는 데이터를 삭제하고 다시 진행하면 됩니다.
안드로이드 개발 과정이라면, 블루투스 기기를 등록하고 해제를 반복하면서, 캐시가 쌓여있을 수 있습니다. 이는 캐시를 지우는 과정을 진행해야 합니다. 이 과정을 refresh라고 알려져 있습니다. 이 기능을 블루투스 기기와 연결 해제되었을 때 실행하도록 하면 됩니다.
java를 사용하는 경우는 다음과 같습니다.
private void refreshDeviceCache(BluetoothGatt gatt) {
try {
Method localMethod = gatt.getClass().getMethod("refresh");
if(localMethod != null) {
localMethod.invoke(gatt);
}
} catch(Exception localException) {
Log.d("Exception", localException.toString());
}
}
코틀린의 경우는 다음과 같습니다.
private fun refreshDeviceCache(gatt: BluetoothGatt) {
try {
val localMethod: Method? = gatt.javaClass.getMethod("refresh")
if (localMethod != null) {
localMethod.invoke(gatt)
}
} catch (localException: Exception) {
Log.d("Exception", localException.toString())
}
}
0x3d의 에러는 블루투스 5.0 core 설명에서 다음과 같이 되어 있습니다. MIC가 실패했다는 이유에서 접속 실패가 된 것의 에러를 의미합니다.
2.58 CONNECTION TERMINATED DUE TO MIC FAILURE(0x3D)
The Connection Terminated Due to MIC Failure error code indicates that either the connection or the synchronization was terminated because the Message Integrity Check (MIC) failed on a received packet.
출처
https://www.bluetooth.com/wp-content/uploads/2020/01/Bluetooth_5.2_Feature_Overview.pdf
https://stackoverflow.com/questions/41751811/how-to-programmatically-clear-bluetooth-cache-using-gattserverhttps://punchthrough.com/android-ble-development-tips/
'개발 > ESP32, ESP8266' 카테고리의 다른 글
[ESP32] RTC_SW_CPU_RST 에러 (0) | 2022.11.19 |
---|---|
[ESP32 BLE 에러] BT_HCI: hcif disc complete: hdl 0x1, rsn 0x3e (0) | 2022.11.18 |
ESP8266(ESP-01, ESP-01S) wifi client, 서버로 부터 데이터 받기 (0) | 2022.11.11 |
ESP8266(ESP-01, ESP-01S) SSE, 서버에서 클라이언트에게 데이터 전송 (2) | 2022.10.30 |
ESP8266(ESP-01, ESP-01S) 웹서버 만들기, Html 출력하기 (0) | 2022.10.25 |