At connection attempt, I get an ESP_GAP_BLE_SEC_REQ_EVT, which is followed by ESP_GAP_BLE_AUTH_CMPL_EVT with fail_reason: 80. I couldn't find a reference for this error code, I don't know what it means.
Debug output of the connection attempt and full code are attached below.
Please help if you can, this is driving me nuts. Thank you.
Code: Select all
[ 11887][V][BLEClient.cpp:98] connect(): >> connect(00:00:00:12:00:00)
[ 11887][I][BLEDevice.cpp:622] addPeerDevice(): add conn_id: 0, GATT role: client
[ 11892][V][FreeRTOS.cpp:189] take(): Semaphore taking: name: RegEvt (0x3ffdc5ac), owner: <N/A> for connect
[ 11902][V][FreeRTOS.cpp:198] take(): Semaphore taken: name: RegEvt (0x3ffdc5ac), owner: connect
[ 11910][V][FreeRTOS.cpp:63] wait(): >> wait: Semaphore waiting: name: RegEvt (0x3ffdc5ac), owner: connect for connect
[ 11911][D][BLEDevice.cpp:148] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_REG_EVT
[ 11931][V][BLEUtils.cpp:1284] dumpGattClientEvent(): GATT Event: ESP_GATTC_REG_EVT
[ 11939][V][BLEUtils.cpp:1445] dumpGattClientEvent(): [status: ESP_GATT_OK, app_id: 0x0]
[ 11946][D][BLEClient.cpp:178] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_REG_EVT
[ 11957][V][FreeRTOS.cpp:143] give(): Semaphore giving: name: RegEvt (0x3ffdc5ac), owner: connect
[ 11965][V][FreeRTOS.cpp:77] wait(): << wait: Semaphore released: name: RegEvt (0x3ffdc5ac), owner: <N/A>
[ 11975][V][FreeRTOS.cpp:189] take(): Semaphore taking: name: OpenEvt (0x3ffdc610), owner: <N/A> for connect
[ 11984][V][FreeRTOS.cpp:198] take(): Semaphore taken: name: OpenEvt (0x3ffdc610), owner: connect
[ 11993][V][FreeRTOS.cpp:63] wait(): >> wait: Semaphore waiting: name: OpenEvt (0x3ffdc610), owner: connect for connect
[ 12134][V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: ESP_GAP_BLE_SEC_REQ_EVT
[ 12136][V][BLEUtils.cpp:1260] dumpGapEvent(): [bd_addr: 00:00:00:12:00:00]
[ 12140][I][BLEDevice.cpp:222] gapEventHandler(): ESP_GAP_BLE_SEC_REQ_EVT
onSecurityRequest
[ 12157][D][BLEClient.cpp:493] handleGAPEvent(): BLEClient ... handling GAP event!
[ 12158][D][BLEDevice.cpp:148] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_CONNECT_EVT
[ 12169][V][BLEUtils.cpp:1284] dumpGattClientEvent(): GATT Event: ESP_GATTC_CONNECT_EVT
[ 12176][V][BLEUtils.cpp:1312] dumpGattClientEvent(): [conn_id: 0, remote_bda: 00:00:00:12:00:00]
[ 12185][D][BLEClient.cpp:178] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_CONNECT_EVT
[ 12196][D][BLEDevice.cpp:148] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_OPEN_EVT
[ 12208][V][BLEUtils.cpp:1284] dumpGattClientEvent(): GATT Event: ESP_GATTC_OPEN_EVT
[ 12214][V][BLEUtils.cpp:1403] dumpGattClientEvent(): [status: ESP_GATT_OK, conn_id: 0, remote_bda: 00:00:00:12:00:00, mtu: 23]
[ 12225][D][BLEClient.cpp:178] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_OPEN_EVT
onConnect
[ 12246][V][FreeRTOS.cpp:143] give(): Semaphore giving: name: OpenEvt (0x3ffdc610), owner: connect
[ 12246][V][FreeRTOS.cpp:77] wait(): << wait: Semaphore released: name: OpenEvt (0x3ffdc610), owner: <N/A>
[ 12254][V][BLEClient.cpp:149] connect(): << connect(), rc=1
[ 12408][V][BLEUtils.cpp:1049] dumpGapEvent(): Received a GAP event: ESP_GAP_BLE_AUTH_CMPL_EVT
[ 12409][V][BLEUtils.cpp:1106] dumpGapEvent(): [bd_addr: 00:00:00:12:00:00, key_present: 0, key: ***, key_type: 0, success: 0, fail_reason: 80, addr_type: ***,
dev_type: ESP_BT_DEVICE_TYPE_BLE]
[ 12425][I][BLEDevice.cpp:253] gapEventHandler(): ESP_GAP_BLE_AUTH_CMPL_EVT
onAuthenticationComplete 0
[ 12443][D][BLEClient.cpp:493] handleGAPEvent(): BLEClient ... handling GAP event!
[ 12444][D][BLEDevice.cpp:148] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_DISCONNECT_EVT
[ 12453][V][BLEUtils.cpp:1284] dumpGattClientEvent(): GATT Event: ESP_GATTC_DISCONNECT_EVT
[ 12461][V][BLEUtils.cpp:1327] dumpGattClientEvent(): [reason: Unknown, conn_id: 0, remote_bda: 00:00:00:12:00:00]
[ 12471][D][BLEClient.cpp:178] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_DISCONNECT_EVT
[ 12482][V][FreeRTOS.cpp:143] give(): Semaphore giving: name: OpenEvt (0x3ffdc610), owner: <N/A>
[ 12491][V][FreeRTOS.cpp:143] give(): Semaphore giving: name: RssiCmplEvt (0x3ffdc6d8), owner: <N/A>
[ 12499][V][FreeRTOS.cpp:143] give(): Semaphore giving: name: SearchCmplEvt (0x3ffdc674), owner: <N/A>
[ 12508][I][BLEDevice.cpp:637] removePeerDevice(): remove: 0, GATT role client
onDisconnect
[ 12526][D][BLEDevice.cpp:148] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_CLOSE_EVT
[ 12527][V][BLEUtils.cpp:1284] dumpGattClientEvent(): GATT Event: ESP_GATTC_CLOSE_EVT
[ 12535][V][BLEUtils.cpp:1298] dumpGattClientEvent(): [status: ESP_GATT_OK, reason:Unknown, conn_id: 0]
[ 12544][D][BLEDevice.cpp:148] gattClientEventHandler(): gattClientEventHandler [esp_gatt_if: 4] ... ESP_GATTC_UNREG_EVT
[ 12554][V][BLEUtils.cpp:1284] dumpGattClientEvent(): GATT Event: ESP_GATTC_UNREG_EVT
Code: Select all
#include <Arduino.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#define MY_TARGET_DEVICE_NAME "SPL556852"
#define PIN 776623
BLEClient *pBLEClient = nullptr;
BLEScan *pBLEScan = nullptr;
BLEAdvertisedDevice *pBLEDevice = nullptr;
class MyAdvertisedDeviceCallbacks : public BLEAdvertisedDeviceCallbacks
{
void onResult(BLEAdvertisedDevice advertisedDevice)
{
Serial.println("onResult");
if (advertisedDevice.getName() == MY_TARGET_DEVICE_NAME)
{
pBLEDevice = new BLEAdvertisedDevice(advertisedDevice);
}
}
};
class MyClientCallback : public BLEClientCallbacks
{
void onConnect(BLEClient *pclient)
{
Serial.println("onConnect");
}
void onDisconnect(BLEClient *pclient)
{
Serial.println("onDisconnect");
}
};
class MySecurityCallback : public BLESecurityCallbacks
{
uint32_t onPassKeyRequest()
{
Serial.println("onPassKeyRequest");
return PIN;
}
void onPassKeyNotify(uint32_t pass_key)
{
Serial.println("onPassKeyNotify");
}
bool onSecurityRequest()
{
Serial.println("onSecurityRequest");
return true;
}
void onAuthenticationComplete(esp_ble_auth_cmpl_t t)
{
Serial.print("onAuthenticationComplete ");
Serial.println(t.success);
}
bool onConfirmPIN(uint32_t pin)
{
Serial.println("onConfirmPIN");
return true;
}
};
void scan()
{
Serial.println("scan");
pBLEScan->start(1, false);
}
void connect()
{
Serial.println("connect");
pBLEClient->connect(pBLEDevice);
}
void setup()
{
Serial.begin(115200);
Serial.println("setup");
BLEDevice::init("");
BLEDevice::setSecurityCallbacks(new MySecurityCallback());
pBLEScan = BLEDevice::getScan();
pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
pBLEScan->setActiveScan(true);
pBLEClient = BLEDevice::createClient();
pBLEClient->setClientCallbacks(new MyClientCallback());
scan();
if (pBLEDevice != nullptr) {
connect();
}
}
void loop()
{
}