Skip to content

ESP32 BLE Notifications Not Received by Client

DodaTech Updated 2026-06-26 1 min read

In this tutorial, you'll learn about ESP32 BLE Notifications Not Received by Client. We cover key concepts, practical examples, and best practices.

The Problem

ESP32 BLE characteristic notifications are sent but the connected client never receives them.

Quick Fix

Wrong

pCharacteristic->setValue("hello");
pCharacteristic->notify();
Client app shows no data received. No notification event fires.
BLECharacteristic* pChar = pService->createCharacteristic(
  "beb5483e-36e1-4688-b7f5-ea07361b26a8",
  BLECharacteristic::PROPERTY_NOTIFY | BLECharacteristic::PROPERTY_READ
);
pChar->addDescriptor(new BLE2902());
pChar->setValue("hello");
pChar->notify();
Client receives notification: "hello"
Notify event fires on client app

Prevention

Always add the BLE2902 descriptor (CCC descriptor) to notify-capable characteristics. Register the characteristic with PROPERTY_NOTIFY flag. Verify the client has enabled notifications via the CCCD. Send notifications at reasonable intervals (not faster than 10 ms).

DodaTech engineers apply these same patterns when building Doda Browser's networking stack, DodaZIP's firmware packaging pipeline, and Durga Antivirus Pro's sensor communication layer.

FAQ

### Why do I need BLE2902 descriptor?

The BLE2902 Client Characteristic Configuration Descriptor (CCCD) lets the client enable/disable notifications. Without it, notifications are not delivered.

How fast can I send BLE notifications?

ESP32 can send notifications at 10-50 ms intervals depending on connection interval. Faster than 10 ms causes packet loss.

What is the maximum notification size?

ESP32 BLE notifications support up to 244 bytes per packet. Larger data must be sent in multiple notifications.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro