Introduction to Bluetooth profile drivers

This article describes the support that Microsoft provides for the wireless Bluetooth protocol. Bluetooth is an industry standard protocol that enables wireless connectivity for various devices including computers, mobile phones, handheld devices, mouse devices, keyboards, and printers. This article also provides guidelines on how to develop Bluetooth profile drivers for your Bluetooth-enabled device. Details of the Bluetooth protocol are available on the Bluetooth website.

Independent hardware vendors (IHVs) write Bluetooth profile drivers to support various protocols defined in the Bluetooth specifications. Bluetooth profile drivers should follow the Windows Driver Model (WDM) architecture.

To support the Bluetooth protocol, Microsoft supplies several drivers and support files, including:

  • BthPort.sys
  • BthEnum.sys
  • BthUsb.sys
  • BthProps.cpl

The Bluetooth driver stack provides device driver interfaces (DDIs) that enable profile drivers to access Synchronous Connection-Oriented (SCO) links and Logical Link Controller and Adaptation Protocol (L2CAP) links between the local system and remote Bluetooth devices.

SCO

Synchronous connection-oriented (SCO) links are point-to-point connections between two Bluetooth devices. They're defined primarily to support time-bounded information like voice.

The Windows Bluetooth driver stack provides SCO kernel-mode device driver interfaces (DDIs). By using these interfaces, profile drivers can use the SCO DDIs to open, update, and close SCO connections, as well as perform read and write operations over an open SCO connection.

For more information about SCO, see Creating a SCO Client Connection to a Remote Device and Accepting SCO Connections in a Bluetooth Profile Driver.

L2CAP and SDP

The L2CAP is designed to support asynchronous connectionless link (ACL) Bluetooth links. The Bluetooth driver stack provides support for connection-oriented services. Profile drivers use the Bluetooth L2CAP DDIs to open, update, and close L2CAP connections, as well as to perform read and write operations over an open L2CAP connection.

The Service Discovery Protocol (SDP) provides a way for a profile driver to advertise the services or discover services offered by the device it manages.

SDP records are advertised in a complex byte stream. Profile drivers can use the SDP DDIs to find an SDP record and convert it to a tree-based representation that is more easily interpreted for parsing. Profile drivers can also use the SDP DDIs to build a tree-based representation of an SDP record and then convert it to a stream to advertise it.

For more information about L2CAP and SDP, see Creating a L2CAP Client Connection to a Remote Device, Accepting L2CAP Connections in a Bluetooth Profile Driver and Communicating with SDP Servers.

For more information about the Bluetooth driver stack, see Bluetooth Driver Stack.