SDP

Service Discovery Protocol

Protocol
Introduced in R99
A Bluetooth protocol used by devices to discover what services other Bluetooth devices offer and to determine the characteristics of those available services. It is a fundamental part of the Bluetooth stack, enabling dynamic ad-hoc networking and interoperability between diverse devices.

Description

The Service Discovery Protocol (SDP) is a core protocol in the Bluetooth specification, defined in the 3GPP context primarily for interoperability and testing references (e.g., in 3GPP TS 36.579 for LTE-WLAN interworking tests involving Bluetooth). SDP provides a mechanism for Bluetooth devices to discover services available on other Bluetooth devices and to retrieve the attributes of those services without prior knowledge. It operates in a client-server model: the device seeking services acts as an SDP client, while the device providing services acts as an SDP server. Each service is characterized by a set of attributes stored in an SDP server's service record database. The most fundamental attribute is a Universally Unique Identifier (UUID) which identifies the service class (e.g., Serial Port, Object Push, Headset Audio Gateway). SDP uses a request-response protocol over a dedicated L2CAP channel. A client can search for services based on service class UUIDs or browse an unspecified list of services offered by a server. Once a service of interest is discovered, the client can retrieve its attributes, which include information like the RFCOMM channel number or L2CAP Protocol Service Multiplexer (PSM) needed to actually connect to and use the service. SDP itself does not provide access to the services; it only provides the information needed to establish a connection using the appropriate protocol (e.g., RFCOMM for serial emulation, L2CAP for data channels). This design allows for a dynamic environment where devices can join and leave a piconet, advertising and discovering available capabilities on the fly. It is essential for the plug-and-play user experience associated with Bluetooth technology.

Purpose & Motivation

SDP was created to address a key challenge in ad-hoc wireless personal area networks (PANs): how can two Bluetooth devices, potentially from different manufacturers and with different capabilities, automatically determine what they can do together? Without a standardized discovery mechanism, users would need to manually configure connections, severely limiting usability and the potential for seamless interoperability. The purpose of SDP is to enable this automatic service discovery, which is the foundation for Bluetooth's goal of replacing cables. It solves the problem of service identification and description in a low-power, short-range, dynamic networking environment. Before establishing a data or voice connection, devices use SDP to answer questions like 'Does the other device offer a hands-free profile?' or 'Can it receive a business card?'. This allows applications to present users with meaningful options (e.g., 'Send File' or 'Use as Audio Output') only when the remote device supports them. Its creation was motivated by the need for a simple, efficient protocol that could run on resource-constrained devices and support the wide variety of services envisioned for Bluetooth, from file transfer to telephony control. By providing this discovery layer, SDP enabled the proliferation of interoperable Bluetooth profiles and the rich ecosystem of connected devices we see today.

Key Features

  • Client-server protocol for discovering services on remote Bluetooth devices
  • Uses UUIDs to uniquely identify service classes and attributes
  • Operates over a dedicated L2CAP channel for reliable communication
  • Supports service search and service browsing requests
  • Retrieves service attributes necessary for establishing a connection (e.g., RFCOMM channel, L2CAP PSM)
  • Enables dynamic ad-hoc networking without pre-configuration

Evolution Across Releases

Defining Specifications

SpecificationTitle
TS 21.905 3GPP TS 21.905
TS 22.977 3GPP TS 22.977
TS 23.140 3GPP TS 23.140
TS 23.207 3GPP TS 23.207
TS 23.218 3GPP TS 23.218
TS 23.228 3GPP TS 23.228
TS 23.231 3GPP TS 23.231
TS 23.333 3GPP TS 23.333
TS 23.479 3GPP TS 23.479
TS 23.701 3GPP TS 23.701
TS 23.758 3GPP TS 23.758
TS 23.792 3GPP TS 23.792
TS 23.802 3GPP TS 23.802
TS 23.849 3GPP TS 23.849
TS 23.894 3GPP TS 23.894
TS 23.979 3GPP TS 23.979
TS 24.103 3GPP TS 24.103
TS 24.147 3GPP TS 24.147
TS 24.173 3GPP TS 24.173
TS 24.196 3GPP TS 24.196
TS 24.206 3GPP TS 24.206
TS 24.228 3GPP TS 24.228
TS 24.229 3GPP TS 24.229
TS 24.247 3GPP TS 24.247
TS 24.259 3GPP TS 24.259
TS 24.281 3GPP TS 24.281
TS 24.282 3GPP TS 24.282
TS 24.315 3GPP TS 24.315
TS 24.379 3GPP TS 24.379
TS 24.385 3GPP TS 24.385
TS 24.386 3GPP TS 24.386
TS 24.404 3GPP TS 24.404
TS 24.405 3GPP TS 24.405
TS 24.406 3GPP TS 24.406
TS 24.407 3GPP TS 24.407
TS 24.410 3GPP TS 24.410
TS 24.416 3GPP TS 24.416
TS 24.428 3GPP TS 24.428
TS 24.454 3GPP TS 24.454
TS 24.504 3GPP TS 24.504
TS 24.516 3GPP TS 24.516
TS 24.528 3GPP TS 24.528
TS 24.575 3GPP TS 24.575
TS 24.587 3GPP TS 24.587
TS 24.604 3GPP TS 24.604
TS 24.606 3GPP TS 24.606
TS 24.607 3GPP TS 24.607
TS 24.610 3GPP TS 24.610
TS 24.616 3GPP TS 24.616
TS 24.628 3GPP TS 24.628
TS 24.654 3GPP TS 24.654
TS 24.803 3GPP TS 24.803
TS 24.819 3GPP TS 24.819
TS 24.930 3GPP TS 24.930
TS 26.114 3GPP TS 26.114
TS 26.142 3GPP TS 26.142
TS 26.223 3GPP TS 26.223
TS 26.233 3GPP TS 26.233
TS 26.234 3GPP TS 26.234
TS 26.235 3GPP TS 26.235
TS 26.236 3GPP TS 26.236
TS 26.237 3GPP TS 26.237
TS 26.244 3GPP TS 26.244
TS 26.253 3GPP TS 26.253
TS 26.346 3GPP TS 26.346
TS 26.347 3GPP TS 26.347
TS 26.348 3GPP TS 26.348
TS 26.506 3GPP TS 26.506
TS 26.517 3GPP TS 26.517
TS 26.802 3GPP TS 26.802
TS 26.827 3GPP TS 26.827
TS 26.847 3GPP TS 26.847
TS 26.862 3GPP TS 26.862
TS 26.881 3GPP TS 26.881
TS 26.902 3GPP TS 26.902
TS 26.905 3GPP TS 26.905
TS 26.910 3GPP TS 26.910
TS 26.914 3GPP TS 26.914
TS 26.923 3GPP TS 26.923
TS 26.924 3GPP TS 26.924
TS 26.928 3GPP TS 26.928
TS 26.937 3GPP TS 26.937
TS 26.946 3GPP TS 26.946
TS 26.962 3GPP TS 26.962
TS 26.980 3GPP TS 26.980
TS 26.982 3GPP TS 26.982
TS 26.998 3GPP TS 26.998
TS 27.060 3GPP TS 27.060
TS 29.232 3GPP TS 29.232
TS 29.238 3GPP TS 29.238
TS 29.332 3GPP TS 29.332
TS 29.333 3GPP TS 29.333
TS 29.334 3GPP TS 29.334
TS 29.414 3GPP TS 29.414
TS 29.421 3GPP TS 29.421
TS 29.424 3GPP TS 29.424
TS 29.513 3GPP TS 29.513
TS 29.514 3GPP TS 29.514
TS 29.864 3GPP TS 29.864
TS 31.103 3GPP TR 31.103
TS 32.260 3GPP TR 32.260
TS 32.272 3GPP TR 32.272
TS 32.299 3GPP TR 32.299
TS 33.108 3GPP TR 33.108
TS 33.128 3GPP TR 33.128
TS 33.203 3GPP TR 33.203
TS 33.303 3GPP TR 33.303
TS 33.871 3GPP TR 33.871
TS 36.579 3GPP TR 36.579
TS 37.579 3GPP TR 37.579