BLE Service vs Characteristic vs Descriptor: Explained
Advertisement
As per Bluetooth Core Specification, data in Bluetooth Low Energy (BLE) is organized using a strict hierarchical framework called GATT (Generic Attribute Profile).
To understand how BLE devices exchange data, you have to understand the GATT hierarchy. At the top level is a Profile, which is made up of Services, which contain Characteristics, which may contain Descriptors. Here is a breakdown of what each component is, how they differ and how they work together.
1. Service
-
As defined by the Core Specification, a service is a collection of data and associated behaviors designed to accomplish a particular function or feature on a device.
-
A service acts as a logical container for grouping related data points (Characteristics). Services are identified by UUIDs (Universally Unique Identifiers). There are two types of services:
- Primary Service: Provides the main, standalone functionality of a device (e.g., a “Heart Rate Service”).
- Secondary Service: Provides auxiliary functionality and is meant to be referenced (included) by a primary service (e.g., a “Battery Service” included within the Heart Rate Service).
-
Real World Analogy: Think of a Service as a department in a hospital (e.g. the Cardiology Department).
2. Characteristic
-
A characteristic is nested inside a Service. It is the actual container where the raw data value lives.
-
A characteristic is more than just a number; it is a bundled definition that includes:
- The Value: The actual data payload (e.g. “72” for a heart rate).
- The Properties: The rules defining exactly “how a connected device” can interact with this value. Common properties include Read (allow client to read the value), Write (allow client to change the value), Notify (server pushes updates to the client without being asked), and Indicate (like Notify, but requires an acknowledgment receipt from the client).
-
Real World Analogy: If the Service is the Cardiology Department, the Characteristic is a specific patient’s medical chart. It holds the actual data (the heart rate) and has strict rules about who is allowed to read it or write in it.
3. Descriptor
-
Descriptors are optional attributes nested inside a Characteristic. They provide additional information (metadata) about the characteristic’s value, or they act as configuration switches for that specific characteristic.
-
Descriptors help the receiving device understand how to interpret the data or allow the receiving device to control the data flow. Common examples include:
- Characteristic User Description: A human readable text string explaining what the data is (e.g., “Left Bicep Sensor”).
- Presentation Format: Tells the receiver what data format the value is in (e.g., “This value is a 16-bit integer representing degrees Celsius”).
- Client Characteristic Configuration Descriptor (CCCD): The most common descriptor. It acts as an on/off switch that the client device uses to tell the server, “Please start sending me Notifications/Indications whenever this characteristic value changes.”
-
Real World Analogy: If the Characteristic is the patient’s medical chart, the Descriptor is the sticky note attached to the front of the chart. It might explain how to read the chart (e.g., “Measurements are in metric”) or give instructions to the nurse (e.g., “Page the doctor immediately if this heart rate changes”).
Putting it all together (An Example)
Imagine you buy a BLE Smart Thermostat. Here is how its GATT hierarchy would be structured:
- Profile: Smart Home Environment Profile (The overarching application)
- Service: Thermostat Service (UUID: 0x181A)
- Characteristic 1: Current Temperature (UUID: 0x2A6E)
- Properties: Read, Notify
- Value: 72
- Descriptor A (CCCD): “Notify = ON” (Your phone flipped this switch so it gets updated instantly when the temp changes).
- Descriptor B (User Description): “Living Room Temperature”
- Characteristic 2: Target Temperature (UUID: 0x2A6F)
- Properties: Read, Write (Allows your phone app to change the thermostat setting).
- Value: 68
- Characteristic 1: Current Temperature (UUID: 0x2A6E)
- Service: Thermostat Service (UUID: 0x181A)
References & Further Reading
- Bluetooth SIG : Bluetooth Core Specification Version 6.3, May 5, 2026.
- Bluetooth SIG : Bluetooth Technology Overview
Continue Learning Bluetooth Basic Concepts
- What are new features in Bluetooth 6.3 Version
- Bluetooth GATT Vs. ATT Vs. GAP : Key Comparison
- Bluetooth Central Vs. Peripheral : Key Differences
- Bluetooth pairing Vs. Bonding Phase
- Bluetooth Notifications Vs. Indications
- Bluetooth Channel Sounding Vs. RSSI
- Bluetooth Direction Finding Methods : AoA Vs. AoD
- Bluetooth Error Codes Guide : Meanings, Causes & Fixes
Continue Learning Bluetooth Technology
- Bluetooth Basics Tutorial
- Bluetooth Low Energy (BLE) Basics Tutorial
- Bluetooth Protocol Stack & Device State Diagram
- Bluetooth Physical Layer Modules
- Bluetooth MAC Layer Overview
- Bluetooth Channel Frequency List
- Bluetooth Network Security
- Bluetooth Low Energy (BLE) Connection Establishment Procedure
- Bluetooth Profiles: HFP, HSP, A2DP, AVRCP, PBAP & MAP
- Bluetooth Mesh Node Types & Protocol Stack Layer Functions
