VelocAI logo Bluetooth Explorer Documentation

Bluetooth GATT Descriptor Reference

External Report Reference (0x2907)

org.bluetooth.descriptor.external_report_reference

The External Report Reference characteristic descriptor allows a HID Host to map information from the Report Map characteristic value for Input Report, Output Report or Feature Report data to the Characteristic UUID of external service characteristics used to transfer the associated data.

Quick Summary

Payload length ranges from 2 to 16 bytes depending on UUID width or variable fields. This page is generated from official GATT XML and presented as implementation-ready guidance.

At a Glance

Key reference details for BLE implementation, interoperability testing, and AI-assisted troubleshooting.

PropertyValue
NameExternal Report Reference
UUID0x2907
Typeorg.bluetooth.descriptor.external_report_reference
XML RootDescriptor
Source Fileorg.bluetooth.descriptor.external_report_reference.xml
Field Count1

Field Specification

Parsed field definitions from the source XML value structure.

Field Requirement Format Unit Exponent Notes
External Report ReferenceMandatorygatt_uuid--Characteristic UUID for externally referenced characteristic

Byte Layout and Decode

Payload length ranges from 2 to 16 bytes depending on UUID width or variable fields.

function decodePayload(dataView, offset = 0) {
  const external_report_referenceRaw = new Uint8Array(dataView.buffer, dataView.byteOffset + offset + 0);
  const external_report_reference = external_report_referenceRaw.length === 2
    ? `0x${external_report_referenceRaw[0].toString(16).padStart(2, "0")}${external_report_referenceRaw[1].toString(16).padStart(2, "0")}`
    : Array.from(external_report_referenceRaw).map((b) => b.toString(16).padStart(2, "0")).join("");
  // UUID width can be 2 bytes (16-bit) or 16 bytes (128-bit).
  return { external_report_reference };
}

Use Cases and Integration Notes

Descriptor Validation

Verify descriptor presence and format during integration and interoperability testing.

Client Configuration

Use descriptor semantics to configure notifications, indications, or presentation metadata.

Debug Diagnostics

Capture descriptor values alongside characteristic data for deeper BLE troubleshooting.

Implementation Checklist

  • Read descriptor metadata after characteristic discovery to confirm behavior contracts.
  • Respect descriptor read/write requirements before ATT operations.
  • Document descriptor values in exported BLE session logs for reproducibility.
  • Keep descriptor handling aligned with Bluetooth SIG format definitions.

FAQ

What is External Report Reference in Bluetooth GATT?

External Report Reference is defined as a Bluetooth GATT descriptor entry with type org.bluetooth.descriptor.external_report_reference and UUID 0x2907.

What UUID identifies External Report Reference?

The UUID for External Report Reference is 0x2907.

How should I parse External Report Reference?

Payload length ranges from 2 to 16 bytes depending on UUID width or variable fields.

Where does this definition come from?

This page is generated from the Bluetooth SIG mirror XML in the oesmith/gatt-xml repository.

How does this page support BLE implementation?

The page combines structured tables, practical Q&A, and JSON-LD metadata to help teams validate integrations and troubleshoot consistently.