A Bluetooth stack is software that is an implementation of the Bluetooth protocol stack.
Bluetooth stacks can be roughly divided into two distinct categories: 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. 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
NetBSD has its own Bluetooth implementation, committed in 2006, and first released with .
OpenBSD
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
DragonFly BSD has had NetBSD's Bluetooth implementation since 1.11 (2008), 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 (GPL), but reported to be on its way toward switching to the GNU Lesser General Public License (LGPL).
hidd is the Bluetooth human interface device (HID) daemon.
BlueDroid/Fluoride
Android switched from BlueZ to its own BlueDroid stack, created by Broadcom, in late 2012. BlueDroid has been since been renamed Fluoride. Marcel Holtmann from the Intel Open Source Technology Center, claimed 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.
Mac OS X
Since version 10.2, Apple Inc.'s Mac OS X has contained an integrated Bluetooth stack. Included profiles are DUN, SPP, FAX, HID, HSP, SYNC, PAN, BPP and OBEX. Version 10.5 adds 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, I²C, 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.