Bluetooth stack


A Bluetooth stack is software that is an implementation of the Bluetooth protocol stack.
Bluetooth stacks can be roughly divided into two distinct categories:
  1. General-purpose implementations that are written with emphasis on feature-richness and flexibility, usually for desktop computers. Support for additional Bluetooth profiles can typically be added through drivers.
  2. Embedded system implementations intended for use in devices where resources are limited and demands are lower, such as Bluetooth peripheral devices.

    General-purpose implementations

BSD

FreeBSD

The FreeBSD bluetooth stack is implemented using the Netgraph framework. A broad variety of Bluetooth USB dongles are supported by the ng_ubt driver.
The implementation was committed in 2002, and first released with FreeBSD 5.0.

NetBSD

has its own Bluetooth implementation, committed in 2006, and first released with.

OpenBSD

has had the implementation from NetBSD for some time, but it was removed in 2014 due lack of maintainership and code rot.

DragonFly BSD

has had NetBSD's Bluetooth implementation since 1.11, first released with.
A netgraph-based implementation from FreeBSD has also been available in the tree since 2008, dating to an import of Netgraph from the FreeBSD 7 timeframe into DragonFly, but was possibly disabled until 2014-11-15, and may still require more work.

Linux

BlueALSA

BlueALSA is a Bluetooth audio ALSA backend that allows the use of Bluetooth-connected audio devices without the use of PulseAudio or PipeWire.

BlueZ

BlueZ, initially developed by Qualcomm, is a Bluetooth stack, included with the official Linux kernel distributions, for Linux kernel-based family of operating systems. Its goal is to program an implementation of the Bluetooth wireless standards specifications for Linux. As of 2006, the BlueZ stack supports all core Bluetooth protocols and layers. It was initially developed by Qualcomm, and is available for Linux kernel versions 2.4.6 and up. In addition to the basic stack, the bluez-utils and bluez-firmware packages contain low level utilities such as dfutool which can interrogate the Bluetooth adapter chipset to determine whether its firmware can be upgraded. BlueZ is licensed under the GNU General Public License, but reported to be on its way toward switching to the GNU Lesser General Public License.
hidd is the Bluetooth human interface device daemon.

BlueDroid/Fluoride

switched from BlueZ to its own BlueDroid stack, created by Broadcom, in late 2012. BlueDroid has been since renamed Fluoride. Marcel Holtmann, from the Intel Open Source Technology Center, implied that Google made a poor choice in switching to BlueDroid, during a presentation for BlueZ for Android at the Android Builders Summit in 2014.

Gabeldorsche

With Android 13, Google by default enabled the newly developed Bluetooth stack Gabeldorsche.
The name Gabeldorsche very indirectly relates to Sweyn Forkbeard, the son and successor of Harald Bluetooth.

macOS

Since version 10.2, Apple Inc.'s macOS has contained an integrated Bluetooth stack. Included profiles are DUN, SPP, FAX, HID, HSP, SYNC, PAN, BPP and OBEX. Mac OS X 10.5 added support for A2DP and AVRCP.

Windows

Microsoft Bluetooth Stack

Prior to Windows 8, the Microsoft Bluetooth Stack only supports external or integrated Bluetooth dongles attached through USB. It does not support Bluetooth radio connections over PCI, I2C, serial, PC Card or other interfaces. It also only supports a single Bluetooth radio. Windows 8 has an extensible transport model allowing support for Bluetooth radios on non-USB buses.
Generally, only a single stack can be used at any time: switching usually requires uninstalling the current stack, although a trace of previous stacks remains in the Windows registry. However, there are some cases where two stacks can be used on the same Microsoft Windows system, each using their own separate Bluetooth radio hardware.
Windows versions:
  • Windows 2000 or Windows ME : Microsoft has not released an official Bluetooth stack for these old Windows versions.
  • Windows Embedded Compact supports UART, USB, SDIO, and BCSP connections. Third party stacks can also be installed on Windows CE devices, including Widcomm, BlueSoleil and Toshiba, depending on the embedded device and which version of the OS is installed.
  • Windows XP had a built-in Bluetooth stack starting with the Service Pack 2 update, released on 2004-08-06. Windows XP SP2 and SP3 support Bluetooth 1.1, Bluetooth 2.0 and Bluetooth 2.0+EDR. Profiles can be toggled in the "Services" tab of each Bluetooth Device to disable unsupported profiles.
  • Windows XP SP1 : Microsoft released a QFE of its Bluetooth stack to install onto Windows XP Service Pack 1. Microsoft only released this directly to third-party companies and did not directly release it to the public. The third-party companies were then allowed to release the QFE as part of their own Bluetooth device's software installation. Microsoft no longer supports this QFE.
  • The Windows Vista Bluetooth stack is improved, with support for more hardware IDs, EDR performance improvements, Adaptive frequency hopping for Wi-Fi co-existence, and Synchronous Connection Oriented protocol support which is needed for audio profiles. The Windows Vista Bluetooth stack supports a kernel mode device driver interface besides the user-mode programming interface, which enables third parties to add support for additional Bluetooth Profiles. This was lacking in the Windows XP Service Pack 2 built-in Bluetooth stack, which had to be entirely replaced by a third-party stack for additional profile support. It also provides RFCOMM support using sockets besides virtual COM ports. KB942567 called Windows Vista Feature Pack for Wireless adds Bluetooth 2.1+EDR support and remote wake from S3 or S4 support for self-powered Bluetooth modules. This feature pack while initially only available to OEMs, was eventually included in Windows Vista Service Pack 2.
  • Windows 7 supports Bluetooth 2.1+EDR. Windows 7 introduces Secure Simple Pairing, Extended Inquiry Response and other UI and USB Bluetooth radio installation improvements. Secure Simple Pairing auto determines the best pairing method, Extended Inquiry Response provides more information during the inquiry procedure to allow better filtering of devices before connection. In Windows 7, Bluetooth device settings have been moved to Devices and Printers from the Control Panel applet.
  • Windows 8 expands its Bluetooth stack with support for Bluetooth 4.0 which includes Bluetooth Low Energy.
  • Windows 8.1 added developer APIs for Bluetooth Low Energy and RFCOMM.
  • Windows 10 converged the Windows Phone and Windows Bluetooth stacks.
Note : The Windows XP/Vista Windows Vista/Windows 7 Bluetooth stack supports the following Bluetooth profiles natively: PANU, SPP, DUN, OPP, OBEX, HID, HCRP. Windows 8 adds support for HFP, A2DP, GATT and AVRCP Profiles.
The Windows 7/Vista/8/10 stack provides kernel-mode and user-mode APIs for its Bluetooth stack- so hardware and software vendors can implement additional profiles.
Windows 10 and later support Bluetooth version 5.0 and several Bluetooth profiles.
Bluetooth profiles exposed by the device but unsupported by the Windows stack will show as "Bluetooth Peripheral Device" in Device Manager.

Broadcom WIDCOMM (BTW)

WIDCOMM was the first Bluetooth stack for the Windows operating system. The stack was initially developed by a company named WIDCOMM Inc., which was acquired by Broadcom Corporation in April 2004. Broadcom continues to license the stack for inclusion with many Bluetooth-powered end-user devices like Qualcomm Atheros, Realtek, Ralink.
An API is available for interacting with the stack from a custom application. For developers there is also a utility named BTServer Spy Lite bundled with the stack which monitors Bluetooth activity on the stack at a very low level — although the category and level of trace is configurable. This stack also allows use of RFCOMM without creating a virtual serial port in the operating system.

Toshiba Bluetooth Stack

In 2001, Toshiba first announced a notebook design that would integrate a Bluetooth antenna inside the lid. Toshiba then went on to release the first two notebook models to offer dual Bluetooth/Wi-Fi integration.
Toshiba has created its own Bluetooth stack for use on Microsoft Windows. Toshiba licenses their stack to other original equipment manufacturers and has shipped with some Fujitsu Siemens, ASUS, Dell and Sony laptops. A non-disclosure agreement must be signed to obtain the API. The Toshiba stack is also available with certain non-OEM Bluetooth accessories such as USB Bluetooth dongles and PCMCIA cards from various vendors.
The Toshiba stack supports one of the more comprehensive list of Bluetooth profiles including: SPP, DUN, FAX, LAP, OPP, FTP, HID, HDP, HCRP, PAN, BIP, HSP, HFP, A2DP, AVRCP.
The latest version of the Toshiba stack is , released on 30 September 2016.

CSR Harmony

In 2010 CSR plc created its own Bluetooth stack. It was based on CSR Synergy BT host stack. CSR was acquired by Qualcomm in August 2015.

IVT BlueSoleil (1000Moons)

is a product of IVT Corporation, which produces stacks for embedded devices and desktop systems. The stack is available in both standard and VOIP versions. It supports the profiles A2DP, DUN, FAX, HFP, HSP, LAP, OBEX, OPP, PAN, SPP, AV, BIP, FTP, HID and SYNC.
An SDK for third-party application developers is available for non-commercial use at the , but this API will only work with the non-free version of the stack, BlueSoleil 6.4 and above.
As of April 2018, the latest version of the global BlueSoleil stack is 10.0.497.0, released on 8 January 2018. The Chinese 1000Moons stack is at version , released on 9 January 2018.