GATT Descriptor

<\/script>\n
'; }, get iframeSnippet() { const domain = '{ SITE_DOMAIN }'; const type = '{ embed_type }'; const slug = '{ embed_slug }'; return ''; }, get activeSnippet() { return this.method === 'script' ? this.scriptSnippet : this.iframeSnippet; }, copySnippet() { navigator.clipboard.writeText(this.activeSnippet).then(() => { this.copied = true; setTimeout(() => { this.copied = false; }, 2000); }); } }" @keydown.escape.window="open = false" @click.outside="open = false">

Embed This Widget

Theme


      
    

Widget powered by . Free, no account required.

Metadata attached to a characteristic, such as the Client Characteristic Configuration Descriptor (CCCD).

Also known as: Descriptor

What Is a GATT Descriptor?

A ATT">gatt-descriptor/" class="glossary-term-link" data-term="GATT Descriptor" data-definition="Metadata attached to a BLE characteristic." data-category="GATT & ATT">GATT Descriptor is a small attribute attached to a characteristic that provides supplementary metadata about the characteristic's value. While the characteristic declaration defines access properties and the value holds application data, descriptors supply context -- enabling notifications, describing presentation format, or providing a human-readable label.

Common Descriptor Types

UUID Name Purpose
0x2902 CCCD Enables/disables notifications and indications
0x2901 Characteristic User Description Human-readable string label
0x2904 Characteristic Presentation Format Data format, exponent, unit, namespace
0x2906 Valid Range Min/max values the characteristic accepts
0x2900 Characteristic Extended Properties Additional property flags (reliable write, writable auxiliaries)

The CCCD in Detail

The Client Characteristic Configuration Descriptor (0x2902) is by far the most important and most commonly used descriptor. It is a 2-byte value where bit 0 enables notifications and bit 1 enables indications. The CCCD is unique in that each bonded client gets its own copy of the value -- the server must store per-client CCCD state so that reconnecting devices resume their subscription preferences without re-subscribing. This per-client persistence is a frequent source of firmware bugs, especially when bonding storage is limited.

Characteristic Presentation Format

The Presentation Format descriptor (0x2904) is a structured 7-byte value that encodes the data type (uint8, float32, UTF-8, etc.), an exponent for scaling, the unit (using Bluetooth SIG assigned numbers), and a namespace/description pair. This descriptor is particularly useful when a service exposes multiple instances of the same characteristic type, such as multiple temperature sensors on a single device.

Placement in the Attribute Database

Descriptors follow their parent characteristic's value attribute in the ATT database and precede the next characteristic declaration or service boundary. During service discovery, the GATT client issues a Discover All Characteristic Descriptors request to enumerate them within the handle range. Minimizing descriptor count reduces discovery time, which is especially important on power-constrained peripherals that want to keep connection events short.

Best Practices

Always include a CCCD on any characteristic that supports Notify or Indicate -- many mobile BLE stacks will refuse to subscribe without one. Use the User Description descriptor sparingly; it increases the attribute database size and is rarely displayed by production apps. If interoperability with third-party clients matters, include the Presentation Format descriptor so that generic BLE explorer tools can render values correctly.

Related Terms

Frequently Asked Questions

Our glossary covers 90+ BLE technical terms organized by category. Each term includes a definition, related terms, and links to relevant chips and guides.