Recent from talks
Contribute something
Nothing was collected or created yet.
Bluetooth stack
View on WikipediaThis article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
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.[1]
General-purpose implementations
[edit]BSD
[edit]FreeBSD
[edit]The FreeBSD bluetooth stack is implemented using the Netgraph framework.[2] A broad variety of Bluetooth USB dongles are supported by the ng_ubt driver.[3]
The implementation was committed in 2002, and first released with FreeBSD 5.0.[4]
NetBSD
[edit]NetBSD has its own Bluetooth implementation, committed in 2006, and first released with NetBSD § 4.0.[5]
OpenBSD
[edit]OpenBSD has had the implementation from NetBSD for some time, but it was removed in 2014 due lack of maintainership and code rot.[6][7]
DragonFly BSD
[edit]DragonFly BSD has had NetBSD's Bluetooth implementation since 1.11 (2008), first released with DragonFly BSD § 1.12.[8]
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.[9][10]
Linux
[edit]BlueALSA
[edit]BlueALSA is a Bluetooth audio ALSA backend that allows the use of Bluetooth-connected audio devices without the use of PulseAudio or PipeWire.[11][12]
BlueZ
[edit]BlueZ, initially developed by Qualcomm,[13] is a Bluetooth stack, included with the official Linux kernel distributions,[14] 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.[15] It was initially developed by Qualcomm, and is available for Linux kernel versions 2.4.6 and up.[16] 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).[17]
hidd is the Bluetooth human interface device (HID) daemon.[18]
BlueDroid/Fluoride
[edit]Android switched from BlueZ to its own BlueDroid stack, created by Broadcom, in late 2012.[17] BlueDroid has been since renamed Fluoride.[19] 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.[17]
Gabeldorsche
[edit]With Android 13, Google by default enabled the newly developed Bluetooth stack Gabeldorsche.[20]
The name Gabeldorsche very indirectly relates to Sweyn Forkbeard, the son and successor of Harald Bluetooth.[21]
macOS
[edit]Since version 10.2, Apple Inc.'s macOS has contained an integrated Bluetooth stack.[22] 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
[edit]Microsoft Bluetooth Stack
[edit]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.[23] It also only supports a single Bluetooth radio.[23] Windows 8 has an extensible transport model allowing support for Bluetooth radios on non-USB buses.[24]
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:[25]
- Windows 2000 or Windows ME : Microsoft has not released an official Bluetooth stack for these old Windows versions.
- Windows Embedded Compact (formerly Windows CE) supports UART, USB, SDIO, and BCSP connections.[26] 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 (but not 1.0), Bluetooth 2.0 and Bluetooth 2.0+EDR (Enhanced Data Rate). Profiles can be toggled in the "Services" tab of each Bluetooth Device to disable unsupported profiles. [27]
- Windows XP SP1 : Microsoft released a QFE of its Bluetooth stack (labelled as QFE323183) 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 (SCO) protocol support which is needed for audio profiles.[23] 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.[28] 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.[23] 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 (like Windows Vista).[27] 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.[27] 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 (BLE).[29]
- Windows 8.1 added developer APIs for Bluetooth Low Energy (GATT) 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.[23][24][27] Windows 8 adds support for HFP, A2DP, GATT and AVRCP Profiles.[24]
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.[24]
Windows 10 (Version 1803) and later support Bluetooth version 5.0 and several Bluetooth profiles.[30]
Bluetooth profiles exposed by the device but unsupported by the Windows stack will show as "Bluetooth Peripheral Device" in Device Manager.
Broadcom WIDCOMM (BTW)
[edit]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.[31] 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 (some vendor-tied versions excluded) 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
[edit]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.[32]
Toshiba has created its own Bluetooth stack for use on Microsoft Windows. Toshiba licenses their stack to other original equipment manufacturers (OEM) 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 (including Skype support), A2DP, AVRCP.
The latest version of the Toshiba stack is 9.20.02(T), released on 30 September 2016.
CSR Harmony
[edit]In 2010 CSR plc (formerly Cambridge Silicon Radio) created its own Bluetooth stack.[33] It was based on CSR Synergy BT host stack. CSR was acquired by Qualcomm in August 2015.[34]
IVT BlueSoleil (1000Moons)
[edit]BlueSoleil (marketed as 1000Moons in China) 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 BlueSoleil download site, 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 10.2.497.0, released on 9 January 2018.
AVM BlueFRITZ!
[edit]BlueFRITZ! was the stack supplied with the USB Bluetooth dongles from the German manufacturer AVM GmbH. It supported the profiles SPP, DUN, FTP, FAX and some more. HID was not supported. This stack could be switched into a mode where it is off and the Microsoft stack is used instead. Development of this stack has been aborted.
Digianswer BTSWS
[edit]Digianswer was a subsidiary of Motorola, Inc. since 1999.[35] Digianswer Bluetooth Software Suite (BTSWS) was marketed and sold through OEM customers such as Motorola, Dell and IBM, which bundled PCMCIA and USB products together with BTSWS. The product has been available since August 2000.[36]
Embedded implementations
[edit]Apache Mynewt NimBLE
[edit]Apache Mynewt NimBLE is a full-featured, open source Bluetooth Low Energy 4.2 and 5.0 protocol stack written in C for embedded systems. NimBLE is one of the most complete protocol stacks, supporting 5.0 features including high data rate and extended advertising. The implementation supports all layers of the Bluetooth protocol. The first ports for the Controller part are to nRF51 series and nRF52 SoCs from Nordic Semiconductor. NimBLE also supports standard HCI interfaces to work with controllers, including ST, Dialog and Em Micro chipsets. It leverages the open source Apache Mynewt OS which is designed to support multiple microcontroller architectures.[37] NimBLE can also run with FreeRTOS and is portable to other real-time operating systems. The implementation allows for the Mynewt NimBLE Controller part to be used with a non-Mynewt NimBLE Host.
BlueCode+
[edit]BlueCode+ is the portable higher layer Bluetooth protocol stack from Stollmann E+V GmbH. BlueCode+ 4.0 is qualified to Bluetooth version 3.0.[38] The protocol stack is chipset and operating system independent and supports any Bluetooth HCI chips available. The APIs offer control of the profiles and stack functions, as well as direct access to lower level functions. BlueCode+ 4.0 supports the protocols L2CAP, eL2CAP, RFCOMM, SDP Server and Client, MCAP, HCI-Host Side and AVDTP. Supported profiles are Generic Access (GAP), Service Discovery Application (SDAP), Serial Port Profile (SPP), Health Device Profile (HDP), Device Identification Profile (DID), Dial-up Networking (DUN), Fax, Headset (HSP), Handsfree (HFP), SIM Access (SAP), Phone Book Access (PBAP), Advanced Audio Distribution Profile (A2DP), Audio/Video Remote Control (AVRCP) and OBEX. The stack has been ported to a wide range of different microcontrollers and operating systems.
BlueCore Host Software (BCHS) a.k.a. CSR Synergy
[edit]CSR's BCHS or BlueCore Host Software (now called CSR Synergy) provides the upper layers of the Bluetooth protocol stack (above HCI, or optionally RFCOMM) - plus a large library of Profiles — providing a complete system software solution for embedded BlueCore applications. Current qualified Profiles available with BCHS: A2DP, AVRCP, PBAP, BIP, BPP, CTP, DUN, FAX, FM API, FTP GAP, GAVDP, GOEP, HCRP, Headset, HF1.5, HID, ICP, JSR82, LAP Message Access Profile, OPP, PAN, SAP, SDAP, SPP, SYNC, SYNC ML.[39]
Bluelet
[edit]Bluelet is a portable embedded Bluetooth protocol stack of Barrot Technology Limited with efficient, reliable, and small features. Bluelet is perfectly compatible with BREDR/LE profiles. Bluelet can easily be ported to different platforms, i.e., Linux, RTOS, Android. This offering includes the latest full implementation of Bluetooth 5.3 host using ANSI C, implementing all LE Audio Profiles / Services (BAP, PACS, ASCS, BASS; CSIP/CSIS; CCP/TBS; MCP/MCS; MICP/MICS; VCP/VCS/VOCS/AICS; TMAP, HAP/HAS; CAP) and the MESH stack.[40]
BlueMagic
[edit]BlueMagic 3.0 is Qualcomm's (formerly Open Interface North America's) highly portable embedded Bluetooth protocol stack which powers Apple's iPhone and Qualcomm-powered devices such as the Motorola RAZR. BlueMagic also ships in products by Logitech, Samsung, LG, Sharp, Sagem, and more. BlueMagic 3.0 was the first fully certified (all protocols and profiles) Bluetooth protocol stack at the 1.1 level.[41]
Blue SDK
[edit]OpenSynergy's Bluetooth Protocol Stack (Blue SDK) currently provides A2DP, AVRCP, VDP, BIP, BPP, CTN, FTP, GPP, HFP, HSP, HCRP, HDP, HID, MAP, OPP, PAN, PBAP, SAP, DUN, FAX, DID, GATT profiles. It is licensed by the Bluetooth Special Interest Group (SIG) and meets the standards of safety and security expected in automotive-grade products. Bluetooth Software Development Kit (Blue SDK) can easily be integrated into any operating system. It supports both BR/EDR (Classic) and Low Energy operations, classic profiles and low energy profiles use the same underlying protocol stack software.[42]
Bluetopia
[edit]Bluetopia is Stonestreet One's implementation of the upper layers of the Bluetooth protocol stack above the HCI interface and has been qualified to version 4.0 and earlier versions of the Bluetooth specification. The Application Programming Interface (API) provides access to all of the upper-layer protocols and profiles and can interface directly to the most popular Bluetooth chips from Broadcom, CSR, TI, and others. Bluetopia has been ported to multiple operating systems such as Windows Mobile/Windows CE, Linux, QNX, Nucleus, uCOS, ThreadX, NetBSD, and others. Bluetopia is currently shipping in devices from companies such as Motorola, Kodak, Honeywell, Garmin, VTech, and Harris.
Stonestreet One was acquired by Qualcomm in 2014. Texas Instruments provides its version of the Bluetopia stack for use with TI Bluetooth chips.
BlueWiseLE
[edit]BlueWiseLE is the Bluetooth Low Energy certified protocol stack software product from Alpwise. It includes the Link Layer[43] and also the Host stack (i.e. upper layers above the HCI).[44] The Link Layer controls the radio and the timing of the Bluetooth communication in three possible chipset configurations: SoC, co-processor or HCI. Several proprietary BLE profiles are also available including Voice over BLE and Firmware update Over the Air (FOTA).[45]
ClarinoxBlue
[edit]Bluetooth host subsystem product of Clarinox Technologies. Support for Windows 7/8/10, WinCE, Linux/AGL Linux, Android, AutoSAR, Integrity, SafeRTOS, QNX, μITRON, FreeRTOS, μC/OS, Azure RTOS ThreadX, Nucleus, MQX, RTX, embOS, TI-RTOS, DSP/BIOS, eCos and μ-velOSity. Qualified for Bluetooth specification 5.2,5.0 and all previous specifications includes all Classic profiles/protocols and LE profiles/services including BT & LE Audio. ClarinoxBlue supports HCI transport for SDIO, UART 3-Wire, UART-BCSP, UART-H4, USB. The stack has been ported to many CPU and MCU families including NXP i.MX6/i.MX7/i.MX8/i.MX RT, Kinetis K6x/7x, LPC 18xx/43xx/54xxx STMicro; STM32F4x, STM32H7, STM32WB55, STM32MP157; Texas Instruments TI MSP432, DSP 5xxx, OMAP/Davinci, Tiva TM4C123x, Sitara 3xxx; Renesas Synergy S5/S7, RH850, R-Car M3/H3; Xilinx PowerPC, soft core SPARC LEON. ClarinoxBlue Bluetooth host system is provided with ClariFi debug tool, in-built protocol analyzer, supports faster debugging of complex wireless devices. ClariFi offers threading, memory usage, memory leak analysis and audio analysis to support the tuning of applications and aid in the communication of issues.[46]
dotstack
[edit]dotstack, a dual mode Bluetooth stack by SEARAN, is a good fit for low cost and low power embedded devices, tested with iPhone (uses SEARAN's IAP), Android and other mobile platforms. dotstack is qualified as V2.1 + EDR, V4.1, V4.2 and 5.0, with SPP, GAP, HID, Headset, HFP, FTP, HDP, PBAP, Simple Secure Pairing, A2DP, AVRCP, PAN, MAP, BLE (GATT) with ANP/ANS, FMP, HIDS, HOGP, PASP/PASS, PXP, TIP, BAS, DIS, IAS, LLS, TPS, ANCS, BLP/BLS, GP, HTP, HRP/HRS. dotstack is ported to platforms from, ST Micro (STM32L1/4, STM32F0/1/2/3/4), Microchip (PIC24, dsPIC, PIC32), NXP (LPC), Energy Micro (EFM32), TI (MSP430, C5000 etc.), Renesas (RX, SH-2A, M2 ARM Cortex A15, R-Car), and tested with Bluetooth RF controllers, CSR8811/8311/8510, BlueCore 4 & 6, TI CC2560/2564, Intel/Infineon PMB8753, Marvell Avastar 88w8777, 88W8790, Toshiba TC35661, Microchip/ISSC IS1662. dotstack has FreeRTOS, uOS, Linux, Android, QNX, MQX, ThreadX, and no RTOS integration. Min RAM requirement for SPP 3KB with RTOS and app.[47]
EtherMind stack
[edit]EtherMind from MINDTREE Ltd is a BT-SIG qualified Bluetooth Stack and Profile IP offering.[48]
Mindtree's EtherMind Stack supports all popular versions of Bluetooth specifications (2.1+EDR, v4.0, v4.1, v4.2, 5.0, 5.1 and 5.2) and includes all mandatory and optional features of the core stack and all the adopted profiles are supported as part of EtherMind. The stack supports the latest adopted version of 23 Bluetooth Classic Profiles[49] such as A2DP, AVRCP, etc.; and 54 Bluetooth Low Energy Profiles & Services[50] such as Location and Navigation Profile, Weight Scale Profile/Service, etc. The offering includes the latest Mesh[51] and IPv6 Stack[52] over Bluetooth Smart capabilities.
Jungo BTware
[edit]Jungo's Bluetooth Protocol Stack BTware allows device manufacturers to easily incorporate standard Bluetooth connectivity in their designs, including mobile handsets, automotive infotainment systems, set top boxes and medical devices. BTware supports standard HCI as well as proprietary HCI. Supported protocols: L2CAP, RFCOMM, AVDTP, AVCTP, BNEP, MCAP. Supported profiles: GAP, A2DP, AVRCP, HSP, HFP, SPP, DUN, HID, PAN, HDP, PBAP, OPP, FTP, MAP and others. Jungo has discontinued distributing BTware.
lwBT
[edit]lwBT is an open source lightweight Bluetooth protocol stack for embedded systems by blue-machines. It acts as a network interface for the lwIP protocol stack.
It supports some Bluetooth protocols and layers, such as the H4 and BCSP UART layers. Supported higher layers include: HCI, L2CAP, SDP, BNEP, RFCOMM and PPP. The supported profiles are: PAN (NAP, GN, PANU), LAP, DUN and Serial Port.
lwBT has been ported to the Renesas M16C, used on the Mulle platform, line of microcontrollers, and Linux as well as Windows. The source code was also available for use.
A fork of lwBT can be found in the GitHub repository because Googlecode is gone.[53]
Mecel/Aricent Betula
[edit]Mecel Betula is a Bluetooth stack aimed at the embedded automotive market. The stack has support for a wide range of CPUs including, ARM, Renesas V850, TI DSP 54xx and 55xx family and x86 compatible. It also ported to a wide range of operating systems, such as Windows, Linux, Android or running without or with a custom OS. It has support for Bluetooth version 5.3, including the new Bluetooth Low Energy & mesh.[54] Supported profiles are HSP, DUN, FAX, HFP, PBAP, MAP, OPP, FTP, BIP, BPP, SYNC, GAVDP, A2DP, AVRCP, HID, SAP, PAN.
Silvair Mesh Stack
[edit]Silvair Mesh Stack is an implementation of Bluetooth MESH profile and Models, developed primarily for Smart lighting applications. Apart from core mesh node features it implements Light Lightness Server model, Light Controller model and Sensor Server model so that it may be used to build dimming luminaires and daylight harvesting sensors. It provides PWM/0-10V output for direct dimming control and UART interface for integration purposes. DALI output is marked as planned.[55]
Silvair Mesh Stack has been qualified by Bluetooth SIG on 2017-07-18 with QDID 98880, as a first Bluetooth mesh node implementation.[56]
SurfBlue
[edit]Siemens' implementation of the blue2net access point.
Symbian OS
[edit]Symbian OS was an operating system for mobile phones, which includes a Bluetooth stack. All phones based on Nokia's S60 platform and UIQ Technology's UIQ platform use this stack. The Symbian Bluetooth stack runs in user space rather than kernel space, and has public APIs for L2CAP, RFCOMM, SDP, AVRCP, etc. Profiles supported in the OS include GAP, OBEX, SPP, AVRCP, GAVDP, PAN and PBAP.[57] Additional profiles supported in the OS + S60 platform combination include A2DP, HSP, HFP1.5, FTP, OPP, BIP, DUN, SIM access and device ID.[58][59]
Zephyr Project
[edit]The Zephyr Project RTOS includes a complete, open source Bluetooth Low Energy v5.3[60] compliant protocol stack written in C for embedded systems. It contains both a BLE Controller and a BLE and BR/EDR capable Host running on nRF51 Series and nRF52 SoCs from Nordic Semiconductor.
See also
[edit]- Bluetooth – general overview of Bluetooth
- Bluetooth mesh#Implementations
- Java APIs for Bluetooth
References
[edit]- ^ "Implementing Bluetooth in an Embedded Environment". Retrieved 22 April 2015.
- ^ "FreeBSD Handbook: Advanced Networking - Bluetooth". Retrieved 2018-04-02.
- ^ "FreeBSD Kernel Interfaces Manual: NG_UBT(4)". Retrieved 2018-04-02.
- ^ Maksim Yevmenkin (2002). "ng_bluetooth.4 — placeholder for global Bluetooth variables". BSD Cross Reference. FreeBSD.
- "ng_bluetooth -- placeholder for global Bluetooth variables". FreeBSD Manual Pages.
- ^ Iain Hibbert; Itronix Inc (2006). "bluetooth.4 — Bluetooth Protocol Family". BSD Cross Reference. NetBSD.
- ^ Ted Unangst (2014-07-11). "CVS: cvs.openbsd.org: src". source-changes@cvs (Mailing list). OpenBSD.
bluetooth support doesn't work and isn't going anywhere.
- ^ tbert, ed. (2014-07-29). "g2k14: Ted Unangst on the Art of the Tedu". OpenBSD Journal.
Of these, you may possibly miss bluetooth support. Unfortunately, the current code doesn't work and isn't structured properly to encourage much future development.
- ^ Hasso Tepper, ed. (2008). "bluetooth.4 — Bluetooth Protocol Family". BSD Cross Reference. DragonFly BSD.
- "bluetooth -- Bluetooth Protocol Family". DragonFly On-Line Manual Pages.
- ^ "sys/netgraph7/bluetooth/common/ng_bluetooth.c". BSD Cross Reference. DragonFly BSD.
- ^ Sascha Wildner (2014-11-15). "kernel/netgraph7: Port the kernel part of the netgraph7 bluetooth stack". DragonFly BSD.
- ^ "Bluetooth/Alsa - Debian Wiki".
- ^ "Bluetooth - ArchWiki".
- ^ "BlueZ History". BlueZ Project. 2016. Retrieved 16 September 2025.
- ^ Torvalds, Linus (2015-10-24), linux: Linux kernel source tree, retrieved 2017-08-30
- ^ "BlueZ » Supported Profiles". BlueZ Official Linux Bluetooth protocol stack. BlueZ Project. Retrieved 16 September 2025.
- ^ Holtmann, Marcel. "The BlueZ: towards a wireless world of penguins" (PDF). Proceedings of the Linux Symposium 2005. Retrieved 21 July 2021.
The first steps into supporting Bluetooth with Linux are done by Axis Communications and they released their OpenBT Bluetooth Stack in April 1999. Also IBM released its BlueDrekar which was only available as binary modules....On May 3, 2001, the Bluetooth protocol stack called BlueZ which was written by Qualcomm was released under GPL. This new stack followed the socket based approach. One month later it was picked up by Linus Torvalds and integrated into the Linux 2.4.6-pre2 kernel. Another Bluetooth stack for Linux was released by Nokia Research Center in Helsinki and it is called Affix. The open source community already decided to support BlueZ as official Bluetooth protocol stack Linux and it became one of the best implementations of the Bluetooth specification.
- ^ a b c "Returning BlueZ to Android". LWN.net. 2014-05-06.
BlueZ for Android (BfA) provides a "drop-in replacement" for BlueDroid, which means that apps do not need to change...The laundry list of BlueDroid deficiencies also dropped to near zero by swapping BlueZ in...In addition, BfA has been developed as part of the open-source BlueZ project...It is also notable that BlueZ is on its way toward switching to the LGPL. Roughly 80% of the code is already licensed that way, with more coming, though it was not clear when that job would be finished.While it was never said in the presentation, the clear implication of Holtmann's talk was that Google made a poor choice in switching to BlueDroid.
- ^ "hidd(1): Bluetooth HID daemon - Linux man page". die.net. Retrieved 2018-04-02.
- ^ "Fluoride Bluetooth stack". android.googlesource.com. Archived from the original on August 31, 2019. Retrieved 2019-08-31.
- ^ "Android's new Gabeldorsche Bluetooth stack is enabled by default in Android 13". 25 August 2022.
- ^ "Android 11's new 'Gabeldorsche' Bluetooth stack was given its name for a great reason". 20 February 2020.
- ^ "Introduction to Bluetooth Device Access Guide". Bluetooth Device Access Guide. Developer.apple.com. Retrieved 2025-05-04.
- ^ a b c d e "Bluetooth Wireless Technology FAQ". Retrieved 2012-11-04.
- ^ a b c d "General Bluetooth Support in Windows". Microsoft.
- ^ "General Bluetooth Support in Windows". Retrieved 2016-01-21.
- ^ "Bluetooth HCI Transport Layer". Msdn.microsoft.com. 2008-08-28. Retrieved 2012-11-04.
- ^ a b c d "Bluetooth Wireless Technology FAQ - 2010". Retrieved 2012-11-04.
- ^ "USB/1394 on the PC". Archived from the original on 2012-02-15. Retrieved 2012-11-04.
- ^ "Bluetooth Low Energy Overview". Retrieved 2013-03-19.
- ^ Bluetooth Version and Profile Support in Windows 10
- ^ "Broadcom to Acquire WIDCOMM, the Industry's Leading Provider of Critical Software for Bluetooth Wireless Devices" (Press release). Broadcom. 2004-04-19. Retrieved 2007-03-02.
- ^ Mainelli, Tom (2001-09-18). "Toshiba Debuts First Bluetooth/Wi-Fi Notebooks". PCWorld. Archived from the original on 2012-01-20. Retrieved 2012-11-04.
- ^ "harmony". Csr.com. Archived from the original on 2012-11-02. Retrieved 2012-11-04.
- ^ "Qualcomm completes $2.4bn take-over of Cambridge's CSR". Cambridge News. Archived from the original on 23 September 2015. Retrieved 22 August 2015.
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ "Motorola Acquires Digianswer". EDN Network. 1999-11-08. Retrieved 2018-04-02.
- ^ "Digianswer and Broadcom Collaborate on Complete System Level Bluetooth Solution for PC OEMs". Business Wire (Nibe, Denmark). 2001-06-05. Retrieved 2018-04-02.
- ^ "Apache Mynewt RTOS Addresses IoT Power, Memory, Storage Constraints". www.infoq.com. Retrieved 2016-06-28.
- ^ "The Official Bluetooth SIG Member Website". Bluetooth.org. 2009-10-22. Retrieved 2012-08-24.
- ^ "The Official Bluetooth SIG Member Website". Bluetooth.org. 2002-04-02. Retrieved 2012-08-24.
- ^ "Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2021-10-31.
- ^ Greg Burns, CTO, Open Interface North America. June 4, 2007 Managing Bluetooth Profiles: A Billion Served
- ^ "OpenSynergy's Blue SDK". 28 October 2020.
- ^ "Link layer Bluetooth Low Energy 5 developed by Alpwise". alpwise.com. Retrieved 2018-11-20.
- ^ "QD ID 102355 | Launch Studio - Listing Details". launchstudio.bluetooth.com. Retrieved 2018-11-20.
- ^ "Bluetooth Protocol Stack and its development kit - Alpwise". alpwise.com. Archived from the original on 2018-02-03. Retrieved 2018-11-20.
- ^ "ClarinoxBlue". clarinox. Archived from the original on 2019-08-20. Retrieved 2022-04-11.
- ^ "dotstack". Retrieved 2011-11-16.
- ^ "Mindtree's Short Range Wireless IP Offerings". Mindtree.com. 2016-06-23. Retrieved 2016-06-23.
- ^ "Mindtree v4.0 Smart Ready stack & profile qualification BT-SIG Certification #D024827". www.bluetooth.org. Retrieved 2016-06-23.
- ^ "Mindtree v4.2 Bluetooth Smart stack & profile qualification BT-SIG Certification #D025118". www.bluetooth.org. Retrieved 2016-06-23.
- ^ "EtherMind Bluetooth v5.0 Stack & Profiles and Mesh v1.0 Stack IP are BQB qualified". mindtree.com. Retrieved 2018-07-02.
- ^ "IPv6 Stack - Mindtree". mindtree.com. Retrieved 2018-07-02.
- ^ "A fork of the lwBT stack". lwalkera. Retrieved 2016-10-08.
- ^ "Mecel Betula". Mecel AB. Archived from the original on 2011-10-06. Retrieved 2011-06-07.
- ^ "Silvair Mesh Stack". Silvair, Inc. Archived from the original on 2017-08-14. Retrieved 2017-07-20.
- ^ "QDID 98880 | The Official Bluetooth SIG Member Website". Bluetooth SIG. 2017-07-18. Retrieved 2018-05-01.
- ^ "The Official Bluetooth SIG Member Website". Bluetooth.org. 2008-07-01. Retrieved 2012-08-24.
- ^ "The Official Bluetooth SIG Member Website". Bluetooth.org. 2008-02-05. Retrieved 2012-08-24.
- ^ https://www.bluetooth.hrc.ac.in[permanent dead link]
- ^ "Overview — Zephyr Project Documentation". docs.zephyrproject.org. Retrieved 2023-06-21.
External links
[edit]Bluetooth stack
View on GrokipediaOverview
Definition and Purpose
A Bluetooth stack is the complete software implementation of the Bluetooth protocol specifications, encompassing a layered architecture that manages short-range wireless communication between devices from the physical transmission layer up to application-level services. It consists of a Host subsystem, which handles higher-layer protocols and data management, and one or more Controller subsystems, which manage the radio interface and lower-layer functions, with communication between them facilitated by a defined interface. This structure supports both Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR), also known as Classic Bluetooth, for higher-throughput applications, and Bluetooth Low Energy (LE) for low-power scenarios.[2] The primary purpose of a Bluetooth stack is to enable seamless wireless data exchange between compatible devices, such as smartphones, headphones, and sensors, by implementing standardized profiles that define specific use cases including audio streaming, file transfer, health monitoring, and networking. These profiles build upon the core protocols to ensure functionality across diverse applications, with BR/EDR optimized for continuous data streams like voice calls and LE designed for intermittent, battery-constrained transmissions such as fitness trackers. By adhering to the Bluetooth Special Interest Group (SIG) specifications, the stack promotes ecosystem-wide compatibility and adaptability to emerging needs like extended range and mesh networking.[12][2] Key benefits of the Bluetooth stack include interoperability achieved through its standardized layered design, which allows devices from different manufacturers to communicate reliably without proprietary modifications. In LE mode, it delivers exceptional power efficiency via asymmetrical communication patterns and optimized duty cycles, enabling devices to operate for months or years on small batteries. Security is integrated through mechanisms such as device pairing, key exchange, and encryption, protecting against unauthorized access and data interception during transmission.[2] At a basic level, the workflow in a Bluetooth stack involves data flowing downward through the layers for transmission—starting from application data, passing through host protocols for formatting and security, and reaching the controller for modulation and radio broadcast—and upward for reception, with the stack overseeing connection establishment, packet assembly/disassembly, and error detection/correction to maintain reliable links. This layered processing ensures efficient handling of diverse data types while minimizing latency and resource use.[2]Historical Evolution
The development of the Bluetooth stack originated with the formation of the Bluetooth Special Interest Group (SIG) on May 20, 1998, by founding members Ericsson, Intel, IBM, Nokia, and Toshiba, aimed at standardizing short-range wireless technology to replace wired connections like RS-232. This collaboration marked a shift from proprietary implementations by various companies to a unified specification, promoting interoperability across devices. The first Bluetooth Core Specification version 1.0 was released in July 1999, enabling initial stack implementations focused on basic wireless personal area networking with data rates up to 721 kbps.[13][14] Subsequent versions introduced significant enhancements to address evolving needs. Bluetooth 2.0, released in November 2004, incorporated Enhanced Data Rate (EDR) to achieve up to 3 Mbps, improving audio and file transfer performance while maintaining backward compatibility. In June 2010, Bluetooth 4.0 debuted Bluetooth Low Energy (LE), a protocol stack optimized for low-power consumption, enabling battery-efficient applications in sensors and wearables for the emerging IoT ecosystem. Bluetooth 5.0, adopted in December 2016, quadrupled range, doubled speed over previous LE (up to 2 Mbps), and expanded broadcast capacity to better support connected homes and industrial uses. More recently, Bluetooth 5.4, released in February 2023, added the Electronic Shelf Label (ESL) profile to optimize periodic data updates for retail inventory displays. Bluetooth 6.0, released on September 3, 2024, introduced features such as the Isochronous Adaptation Layer (ISOAL) for efficient audio data handling, Decision-Based Advertising Filtering for reduced power in scanning, and enhancements to the Attribute Protocol for better sensing and location services, further advancing applications in immersive audio and precise tracking.[15][16][17][18][19] The evolution of Bluetooth stacks has been driven by the SIG's standardization efforts, which transitioned the technology from fragmented proprietary solutions to a cohesive framework, alongside the parallel integration of Classic and LE protocols to serve diverse use cases from high-bandwidth streaming to ultra-low-power monitoring. Key advancements include the adoption of Bluetooth Mesh Networking in July 2017, allowing scalable many-to-many communication for large device networks without centralized hubs, and the introduction of direction finding in Bluetooth 5.1 (January 2019), using angle-of-arrival and angle-of-departure techniques for precise indoor positioning.[20][21][22] Notable milestones include the emergence of open-source implementations, such as BlueZ, initially released under GPL on May 3, 2001, by Qualcomm, which became a foundational stack for Linux and accelerated community-driven development in the early 2000s. Regulatory milestones, particularly FCC approvals under Part 15 for operations in the 2.4 GHz ISM band, facilitated widespread adoption by ensuring devices met emissions standards for unlicensed spectrum use starting from the late 1990s.[23][24]Protocol Architecture
Core Layers
The core layers of the Bluetooth stack form the foundational elements responsible for radio communication, link management, and data adaptation in Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR) systems. These layers operate primarily on the controller side, handling physical transmission and low-level protocol functions before interfacing with higher host layers via the Host Controller Interface (HCI). The Physical Layer, also known as the Baseband, manages the radio transmission aspects of Bluetooth devices. It operates within the 2.4 GHz Industrial, Scientific, and Medical (ISM) band, spanning 2400–2483.5 MHz, to enable short-range wireless communication. To mitigate interference, the layer employs frequency-hopping spread spectrum (FHSS), pseudo-randomly selecting channels at a rate of up to 1600 hops per second during active connections. For BR/EDR, this involves 79 one-megahertz-wide RF channels spaced 1 MHz apart; Bluetooth Low Energy (LE) uses 40 two-megahertz-wide channels. Modulation schemes include Gaussian Frequency Shift Keying (GFSK) for the basic rate at 1 Mb/s, π/4-Differential Quadrature Phase Shift Keying (π/4-DQPSK) for 2 Mb/s enhanced data rate, and 8-level Differential Phase Shift Keying (8DPSK) for 3 Mb/s enhanced data rate. Recent evolutions, such as in Bluetooth 6.0 (released September 2024), introduce Channel Sounding, which uses phase-based ranging in the PHY to enable precise distance measurement between devices for enhanced security applications.[25] Building upon the Physical Layer, the Link Layer oversees the formatting and reliable delivery of packets over the air interface. It structures packets with an access code for synchronization, a header containing addressing and control fields, and a payload up to 2790 bits for BR/EDR, including support for multi-slot transmissions. Error detection is achieved through a 16-bit cyclic redundancy check (CRC) in the payload and an 8-bit header error check (HEC), ensuring data integrity against transmission errors. Acknowledgments are handled via the ARQN (acknowledgment) bit in packet headers, triggering retransmissions for unacknowledged data on asynchronous connection-less (ACL) links. To optimize power consumption, the layer supports low-duty-cycle modes such as sniff (periodic listening slots), hold (temporary suspension of traffic), and park (synchronized inactivity with beacon channel access). Topologically, it defines piconets as star networks with one master coordinating up to seven active slaves, while scatternets allow interconnected piconets through devices participating in multiple roles. In Bluetooth 6.2 (released November 2025), the Link Layer supports shorter connection intervals down to 3.75 ms for LE, improving latency and responsiveness in low-power scenarios.[11] The Link Manager Protocol (LMP) operates above the Link Layer to manage and secure point-to-point connections between devices. It facilitates link setup through procedures like inquiry, paging, and role switching, enabling device discovery and connection establishment. Authentication is performed using challenge-response mechanisms, often paired with Secure Simple Pairing for key generation. For BR/EDR, encryption relies on the E0 stream cipher algorithm, which generates a keystream from a 128-bit key to protect data confidentiality. Additionally, LMP handles power control by issuing commands to adjust transmit power levels dynamically, ranging from 0.01 mW to 100 mW, to minimize interference and extend battery life. The Logical Link Control and Adaptation Protocol (L2CAP) serves as an adaptation layer, multiplexing multiple logical channels over a single physical ACL link and preparing data for upper-layer protocols. It performs segmentation and reassembly of service data units (SDUs) up to 64 KB into smaller link layer packets, supporting both connection-oriented and connectionless transport modes. Quality of Service (QoS) is managed through configurable parameters like flush timeouts and flow specifications to prioritize traffic. L2CAP channels include fixed ones for signaling (CID 0x0001) and connectionless data (CID 0x0002), alongside dynamically allocated channels (CIDs 0x0040–0xFFFF) for higher-layer services. Complementing these, the Service Discovery Protocol (SDP) allows devices to query and match available services without prior knowledge of capabilities. It uses Universally Unique Identifiers (UUIDs), either 16-bit for common services or 128-bit for custom ones, to describe service classes, protocols, and attributes in structured records. SDP operates over L2CAP connectionless channels, with clients issuing requests like ServiceSearchAttribute to retrieve details such as supported profiles from responding servers, facilitating seamless service discovery in dynamic environments.Host-Controller Separation and HCI
The Bluetooth stack employs a host-controller separation model, where the controller—typically implemented as firmware on a dedicated chip—manages the lower protocol layers, including the physical layer and link layer responsibilities such as radio transmission, modulation, and basic connection handling. In contrast, the host, residing in the operating system software, oversees the upper layers, encompassing logical link control, adaptation protocols, and application interfaces. This division promotes modularity, enabling developers to create interchangeable components that support diverse hardware while maintaining compatibility across Bluetooth implementations.[26] The Host Controller Interface (HCI) serves as the standardized communication bridge between the host and controller, facilitating the exchange of commands, events, and data packets to control Bluetooth operations. HCI supports multiple transport mechanisms, including UART for serial communication, USB for high-speed connections, and SDIO for card-based interfaces, ensuring flexibility in hardware integration. Data exchange occurs via distinct packet types: Asynchronous Connection-Less (ACL) for unreliable, packet-switched data like file transfers; Synchronous Connection-Oriented (SCO) for time-sensitive, stream-oriented audio; and Low Energy (LE) packets introduced for power-efficient Bluetooth Low Energy operations. The HCI transport layer encapsulates these packets with headers that include a packet type indicator (1 octet), followed by command-specific or event-specific payloads.[26][27] HCI commands are structured into categories to provide granular control over the controller. Link control commands handle device discovery and connectivity, such as Inquiry for scanning nearby devices, Create Connection for establishing piconets, and Disconnect for terminating links. Status parameter commands retrieve operational details, exemplified by Read BD_ADDR to obtain the Bluetooth device address. Testing commands support diagnostics, including Read Loopback Mode for packet echoing and Enable Device Under Test for certification compliance. Corresponding events notify the host of state changes, such as Connection Complete to confirm link establishment or Command Complete to acknowledge executed instructions. Command packets follow a fixed format: a 1-octet parameter length field, a 2-octet opcode specifying the command group and operation code (OCF), and variable-length parameters tailored to the command.[28][26] This architecture yields significant advantages, including vendor-agnostic host software that can interface with controllers from multiple manufacturers, thereby reducing development costs and accelerating adoption. It also streamlines Bluetooth certification processes by standardizing the interface, ensuring interoperability without proprietary dependencies. With the advent of Bluetooth 4.0, HCI evolved to incorporate LE-specific extensions, such as LE Set Advertising Parameters and LE Connection Complete events, enabling seamless support for low-power applications while preserving backward compatibility with classic Bluetooth features. Subsequent versions, including Bluetooth 6.1 (May 2025), enhance HCI with improved privacy features in command handling.[26][27]Bluetooth Low Energy Specifics
Bluetooth Low Energy (LE), introduced in Bluetooth 4.0, features a simplified protocol stack optimized for ultra-low power consumption compared to the Classic Bluetooth architecture, emphasizing short bursts of radio transmission for intermittent data exchange.[2] The stack centers on two key profiles: the Generic Access Profile (GAP) and the Generic Attribute Profile (GATT). GAP defines device roles such as broadcaster (for one-way data transmission), observer (for scanning advertisements), peripheral (slave role in connections), and central (master role), along with procedures for device discovery, connection establishment, and basic security modes.[2] GATT implements a client-server model where the server exposes data through an attribute table organized into services, characteristics (data fields with properties like read/write/notify), and descriptors, enabling efficient, attribute-based data access between connected devices.[2] The physical layer (PHY) in LE operates in the 2.4 GHz ISM band with 40 channels of 2 MHz spacing, where channels 37, 38, and 39 are dedicated to advertising, and channels 0–36 serve as data channels.[2] It supports multiple modulation schemes: the mandatory LE 1M PHY at 1 Msymbol/s (approximately 1 Mbps raw data rate), optional LE 2M PHY at 2 Msymbol/s for higher throughput, and optional LE Coded PHY with forward error correction (FEC) using coding rates S=2 (500 kbps) or S=8 (125 kbps) for extended range.[12] The Link Layer manages low-level operations including advertising packets, scanning, connection initiation, and maintenance through periodic connection events; it incorporates features like slave latency (allowing the peripheral to skip a configurable number of events to reduce active time) and supervision timeout (a watchdog period, multiples of 10 ms, to detect link loss).[12] Security in LE is handled by the Security Manager Protocol (SMP), with LE Secure Connections—introduced in Bluetooth 4.2—providing enhanced protection via elliptic curve Diffie-Hellman (ECDH) key exchange using the NIST P-256 curve for authenticated pairing, replacing weaker legacy methods.[29] Pairing methods include Just Works (no user interaction, suitable for devices without displays), Passkey Entry (user enters a 6-digit code), Numeric Comparison (users confirm matching 6-digit numbers), and Out of Band (using an external secure channel).[12] These support four security levels, from no security (Level 0) to authenticated pairing with encryption (Level 4 using ECDH and AES-CCM).[29] Bluetooth 6.1 (May 2025) further enhances SMP with improved privacy mechanisms for better protection in dynamic environments.[10] Power optimizations in LE revolve around duty cycling, where devices remain in low-power sleep modes most of the time, waking only for brief radio activities.[2] Advertising intervals (configurable from 20 ms to 10.24 s) control the periodicity of beacon transmissions, with direct advertising targeting specific devices for efficiency and indirect for general discovery, minimizing unnecessary scans.[2] Connection parameters further enable power savings, such as extended peripheral latency to skip events and adjustable supervision timeouts to balance responsiveness and battery life.[12] LE integrates with Classic Bluetooth through dual-mode controllers that support both protocols over shared hardware, allowing seamless coexistence in devices like smartphones; Bluetooth 5 and later extend LE with features like LE Long Range (via Coded PHY for up to 4x range) while maintaining backward compatibility. Bluetooth Core Specification versions 6.0 through 6.2 (2024–2025) continue to build on this with additions like Channel Sounding for ranging and reduced connection intervals for lower latency.[2][30] The Host Controller Interface (HCI) includes LE-specific commands for managing these operations, such as LE Set Advertising Parameters.[12]Implementations in General-Purpose Systems
Linux-Based Stacks
BlueZ serves as the official Bluetooth protocol stack for the Linux kernel, initially released in 2001 and integrated into the kernel starting with version 2.4.6.[23] It provides comprehensive support for the Host Controller Interface (HCI), enabling clear separation between host-side processing and controller hardware while handling core Bluetooth operations like device discovery, connection management, and profile implementation.[31] As of March 2025, the latest upstream stable release is version 5.80, with distro packages like Debian's reaching 5.84 by September 2025, including enhancements for stability and performance.[32][33] A key feature of BlueZ is its D-Bus-based API, introduced in version 5.0, which allows user-space applications to interact with Bluetooth services through a standardized interface for tasks such as pairing and data transfer.[34] Bluetooth Low Energy (LE) support was added in the same version 5.0, enabling both central and peripheral roles, while Bluetooth Mesh networking is handled via the dedicated bluez-mesh daemon and libraries.[35][36] BlueZ is the default stack in major distributions, including Ubuntu—where it is packaged as the core Bluetooth tools and daemons—and Fedora, which includes it in its repositories with utilities like bluetoothctl, a basic command-line interface (CLI) tool included with the BlueZ package for Bluetooth control on Linux, enabling users to perform operations such as device discovery, pairing, and connection management directly in any terminal.[37][38] In the Android ecosystem, which builds on the Linux kernel, the Bluetooth stack originated as BlueDroid, developed by Broadcom and adopted into the Android Open Source Project (AOSP) around 2012 to replace an earlier BlueZ-based implementation.[39] BlueDroid/Fluoride, now fully maintained by Google, supports both Bluetooth Classic and LE protocols, with integration through the Android Hardware Abstraction Layer (HAL) for profiles like Advanced Audio Distribution Profile (A2DP) for stereo audio streaming and Audio/Video Remote Control Profile (AVRCP) for media control.[40] It enables LE central and peripheral roles, facilitating applications in wearables and IoT devices.[39] Google's Gabeldorsche is a rewrite of the Android Bluetooth stack, initiated around Android 11 and progressively rolled out starting in Android 13 for improved stability and modularity, particularly in scanning and connection handling. Written partly in Rust for enhanced reliability, it focuses on lightweight integration suitable for embedded Linux environments, supporting the Web Bluetooth API in web-based applications while maintaining compatibility with AOSP's HAL.[41] Adoption of Linux-based Bluetooth stacks has trended toward deeper kernel integration, with the subsystem residing in the net/bluetooth directory since early kernels. Recent updates in Linux kernel 6.x series, starting with version 6.3, added support for Bluetooth 5.4 features such as periodic advertising enhancements and encrypted advertising data, ensuring compatibility with modern hardware in distributions like Ubuntu and Fedora.BSD and Unix-Like Stacks
BSD variants and other Unix-like systems feature Bluetooth stack implementations that emphasize modularity, portability across hardware architectures, and open-source development, often leveraging the Netgraph framework for flexible node-based networking.[42] These stacks typically interface with Bluetooth hardware through the Host Controller Interface (HCI), enabling support for both Classic Bluetooth and Bluetooth Low Energy (LE) protocols while maintaining a lightweight footprint suitable for servers and embedded-like environments in Unix-like contexts.[43] In FreeBSD, the Bluetooth stack is built around the Netgraph framework via the ng_bluetooth kernel module, which was introduced in FreeBSD 5.0 in 2003 and provides a foundational layer for managing Bluetooth connections.[44] This module supports both Classic Bluetooth and LE operations through HCI transport, including command and connection timeouts configurable via sysctl variables like net.bluetooth.hci.command_timeout.[44] Integration with the sound subsystem allows for headset functionality, such as A2DP audio streaming, using drivers like snd_hda for compatible hardware.[45] NetBSD's Bluetooth stack is designed for broad portability and minimal resource usage, making it ideal for routers and embedded systems, with support integrated into its device framework since early 2000s releases.[43] It includes drivers for various HCI interfaces, such as ubt(4) for USB adapters, and utilizes pkgsrc for additional ports like bcmfw for firmware loading and bthfp for Handsfree profiles.[43] Bluetooth Low Energy support was added in 2014, enhancing its utility for low-power applications while keeping the overall stack lightweight through tools like btpand(8) for Personal Area Networking over tap(4) interfaces.[43] OpenBSD adopted a conservative Bluetooth implementation around 2003, porting elements from NetBSD and FreeBSD to prioritize security through rigorous auditing and minimal attack surface.[46] The stack used ifconfig-like tools for basic configuration and focused on vulnerability mitigation, but it was partially removed in OpenBSD 5.6 (2014) due to unmaintained code and inherent protocol security risks, resulting in limited or no native LE support by 2018. As of OpenBSD 7.8 (October 2025), there is no official Bluetooth support in the stable release, though community efforts in development snapshots have enabled basic functionality like audio playback.[47][48] Subsequent efforts have been community-driven and incomplete, reflecting OpenBSD's emphasis on proactive security over expansive feature sets.[49][50] DragonFly BSD, forked from FreeBSD 4.8 in 2003, inherits a similar ng_bluetooth-based stack but optimizes it for symmetric multiprocessing (SMP) environments, enabling efficient handling of concurrent Bluetooth operations in multi-core setups.[51] This implementation, updated from NetBSD sources since DragonFly 1.11 in 2008, supports HCI protocols and is enabled by default in kernel builds, finding niche applications in appliances where SMP performance aids real-time networking tasks.[52] Its focus remains on stability rather than broad hardware expansion. Common across these BSD and Unix-like stacks are userland tools such as hccontrol(8), which facilitates HCI interactions like device inquiry and connection management without requiring privileged access.[53] For interoperability, BSD systems often use pkgsrc or ports to adapt elements of Linux's BlueZ stack, such as compatibility macros in bluetooth.h for shared protocol handling, though full BlueZ integration is limited by kernel differences.[54] Upper layers like L2CAP provide multiplexing for these tools, ensuring consistent data channel management.[55]macOS and iOS Stack
Apple's proprietary Bluetooth stack has been integrated into macOS since its full release in version 10.2 Jaguar in 2002, following an initial technology preview earlier that year, and into iOS from its inception, providing comprehensive support for both Bluetooth Classic and Low Energy protocols. The stack leverages hardware from Broadcom for wireless connectivity in most devices until 2025, when Apple began deploying its in-house N1 chip for combined Bluetooth and Wi-Fi functionality, starting with the iPhone 17 lineup.[56] Dual-mode operation is standard, enabling seamless handling of legacy Classic profiles for audio and file transfer alongside Low Energy for efficient, low-power connections; newer accessories incorporate Apple's custom W1 (introduced 2016 in AirPods) and H1 co-processors to optimize pairing speed, audio processing, and battery life without relying solely on the main system processor.[57] The Core Bluetooth framework serves as the primary interface for developers building Bluetooth-enabled apps on iOS and macOS, debuting in iOS 5 in 2011 to support Bluetooth 4.0 Low Energy devices.[58] Key classes include CBCentralManager, which manages scanning for nearby peripherals and central-peripheral connections, and CBPeripheral, which handles discovery, services, and characteristics for data exchange via GATT without exposing low-level HCI commands to applications.[59] This abstraction layer ensures consistent behavior across devices while offloading protocol details to the system stack, allowing apps to focus on high-level interactions like reading sensor data or controlling accessories. Platform-specific features highlight the stack's tight ecosystem integration, such as AirDrop for peer-to-peer file sharing and Handoff for cross-device task continuity, both powered by Apple's proprietary Continuity protocol over Bluetooth Low Energy for initial device discovery and authentication.[60] Privacy is prioritized through the use of randomized resolvable private addresses in BLE advertisements and connections, which rotate periodically to obscure device identity and mitigate tracking risks.[61] macOS Sonoma (2023) introduced support for Bluetooth 5.3 on compatible hardware, enhancing data throughput, connection stability, and power efficiency for features like extended-range scanning.[62] The stack integrates deeply with AVFoundation for audio applications, enabling automatic routing of playback and recording to Bluetooth devices with support for advanced codecs like AAC and low-latency modes for real-time scenarios such as video calls.[63] Security measures include mandatory pairing with just-works, numeric comparison, or passkey entry methods, combined with AES-128 encryption for data links and cross-transport key derivation to prevent key reuse across Bluetooth and Wi-Fi connections.[61]Windows Stacks
The Microsoft Bluetooth stack, introduced as a native component in Windows XP Service Pack 2 in 2004, provides core support for Bluetooth protocols through the operating system's driver architecture.[64] This stack enables device discovery, pairing, and data exchange using Win32 APIs such as BluetoothFindFirstDevice for enumerating nearby Bluetooth devices. Full support for Bluetooth Low Energy (LE) was added starting with Windows 8 in 2012, allowing integration with low-power devices like sensors and wearables.[65] In modern versions, the stack is managed via the Settings app, where users can toggle Bluetooth, scan for devices, and configure connections through a unified interface. Third-party Bluetooth stacks have historically supplemented the native Microsoft implementation on Windows, particularly for enhanced features or OEM customization. Broadcom's WIDCOMM (BTW) stack, acquired by Broadcom in 2006, served as a popular driver and software suite that offered an improved user interface for device pairing and management, including graphical tools for connection setup. It was widely used on laptops and adapters but was phased out for new installations after Windows 10, though legacy support persists for older hardware via compatibility modes.[66] Toshiba's Bluetooth stack, developed in the 2000s as an OEM-specific solution, focused on seamless integration with Toshiba laptops, providing optimized drivers for audio, file transfer, and peripheral connectivity; it was discontinued around 2015 as native Microsoft support matured.[67] Other alternatives include CSR Harmony's stack from the 2010s, which Qualcomm acquired in 2015 and used for wireless adapters emphasizing multi-device harmony and low-latency audio. IVT's BlueSoleil operates as a standalone application and stack, supporting virtual COM ports for serial communication over Bluetooth, enabling legacy device emulation on Windows systems.[68] Current trends in Windows 11 and later emphasize reliance on the native Microsoft stack, with Microsoft discouraging third-party alternatives to ensure security and compatibility, though some adapters still bundle legacy software.[66] All Bluetooth implementations for Windows, whether native or third-party, must pass the Windows Hardware Certification Kit (WHCK) tests to verify compliance with protocol standards, driver stability, and integration with the OS.Embedded and Specialized Implementations
Open-Source Embedded Stacks
Open-source embedded Bluetooth stacks are tailored for resource-constrained microcontrollers and IoT devices, emphasizing minimal memory usage, portability across RTOS environments, and compliance with Bluetooth Low Energy (LE) specifications to enable efficient wireless connectivity in battery-powered applications. These stacks often separate host and controller components for flexibility, allowing integration with various hardware platforms while avoiding the overhead of full-featured desktop implementations. Prominent examples include lightweight, C-based solutions that support core protocols like GATT and ATT for data exchange, with footprints optimized for devices with limited RAM and flash. Apache NimBLE, originating from the Apache Mynewt project in 2016, is a portable, open-source Bluetooth LE stack implemented in C, designed specifically for tiny embedded systems. It provides both host and controller subsystems, supporting up to 32 concurrent connections, all four BLE roles (broadcaster, observer, peripheral, central), and features like extended advertising, periodic advertising, and Bluetooth Mesh. With a compact footprint of approximately 65 KB ROM and 4 KB RAM in typical configurations including L2CAP CoC, advertising extensions, secure connections, and Mesh, NimBLE ensures low power consumption and is compliant with Bluetooth 5.4 specifications. It fully supports GATT for service management and ATT for attribute-based data transfer, enabling seamless integration in IoT applications. NimBLE has been adapted for use in the Zephyr RTOS through community ports, allowing developers to leverage its efficiency alongside Zephyr's modular kernel. The Zephyr Project's Bluetooth stack, introduced in 2016 as part of the open-source Zephyr RTOS, offers a highly modular implementation with configurable host and controller options, suitable for both single-chip and split configurations over interfaces like UART or SPI. Compliant with Bluetooth 5.3, it includes support for advanced features such as 2M PHY, coded PHY for long range, and up to 32 connections, while maintaining a small footprint optimized for low-power MCUs. The stack integrates Bluetooth Mesh for many-to-many device networking and Direction Finding for angle-of-arrival localization using constant tone extensions, providing comprehensive LE functionality without OS dependencies in its core. Its layered architecture allows selective enabling of protocols like L2CAP, ATT, and GATT, making it ideal for embedded systems requiring scalability and certification readiness. lwBT, developed in the early 2000s, is a minimal, ANSI C-based Bluetooth protocol stack for resource-limited embedded systems, requiring no underlying operating system and targeting microcontrollers like AVR and PIC. It implements key Classic Bluetooth protocols including HCI, L2CAP, and SDP, with a focus on simplicity and low overhead for basic connectivity tasks such as serial port emulation. While primarily oriented toward Bluetooth Classic, adaptations have extended partial LE support in community forks, though it is a legacy stack no longer actively maintained, with a footprint under 50 KB, suitable for bare-metal environments on 8- or 16-bit MCUs. lwBT serves as a network interface compatible with lwIP for IP-over-Bluetooth scenarios, emphasizing portability over advanced features. Adaptations of BlueZ for embedded Linux environments, such as those in Yocto Project builds, provide a subset of the full Linux Bluetooth stack optimized for constrained systems like single-board computers and industrial gateways. These configurations strip non-essential components, focusing on core LE host functionality via the kernel's HCI layer, while supporting GATT/ATT and Mesh through modular plugins, distinct from the comprehensive desktop version by reducing dependencies and memory usage to fit in 16-32 MB RAM environments. Integrated via Yocto recipes like bluez5, these adaptations enable Bluetooth 5.x compliance in custom distributions, allowing seamless pairing, scanning, and data transfer on platforms with limited resources.Proprietary Embedded Stacks
Proprietary embedded Bluetooth stacks are commercial, closed-source software implementations tailored for resource-constrained devices in applications such as industrial IoT, automotive, and medical systems. These stacks provide optimized performance, dedicated support through service level agreements (SLAs), and compliance with Bluetooth SIG qualification processes, enabling faster time-to-market for vendors. Unlike open-source alternatives, they often include proprietary APIs, deterministic scheduling for real-time needs, and licensing models that bundle development kits, certification assistance, and long-term maintenance. As of November 2025, emerging support for Bluetooth Core Specification 6.x (including versions 6.0, 6.1, and 6.2) is beginning to appear in select proprietary stacks, enhancing security and efficiency features like channel sounding.[69][70] Bluetopia, developed by Texas Instruments, is a full dual-mode Bluetooth stack supporting both Classic (BR/EDR) and Low Energy (LE) protocols up to Bluetooth 5.1. It includes a software development kit (SDK) with APIs for standard profiles like A2DP and GATT, facilitating integration in industrial IoT devices for reliable connectivity in harsh environments. The stack emphasizes power management and connection handling features, such as storing pairing keys to simplify device management.[71] BlueCore Host Software, originally from CSR Synergy and now under Qualcomm following the 2015 acquisition, serves as a host-side implementation for CSR Bluetooth chips prevalent in the 2000s. This HCI-based stack enables seamless integration with embedded controllers, supporting Bluetooth Classic and early LE features for applications in wearables and consumer electronics. Its influence persists in legacy systems, providing a unified API for multi-radio coexistence including Wi-Fi and FM.[72][73] ClarinoxBlue is a real-time oriented Bluetooth protocol stack from Clarinox Technologies, optimized for deterministic scheduling in automotive and medical embedded systems. It supports single- and dual-mode operations across Bluetooth versions up to 5.3, with features like auto-generated GATT profiles to reduce development errors and simultaneous multi-profile handling (e.g., HFP, HID). LE Audio support, including Auracast broadcast streams, was incorporated in 2022, enhancing audio applications in hearing aids and vehicle infotainment. The stack ports to over 15 RTOS platforms via interfaces like UART and USB, with real-time debugging via the ClariFi tool.[74][75] Jungo BTware, now part of Micro Focus after the 2014 acquisition of Jungo Ltd., functions as middleware for embedded Linux environments, focusing on profiles like HID and OBEX for human-interface and object exchange applications. It simplifies Bluetooth integration in devices by providing a qualified stack with HCI transport support, enabling standard connectivity without deep protocol knowledge. BTware has been certified by the Bluetooth SIG (Declaration ID 34164) for use in various embedded products, emphasizing ease of deployment in consumer and industrial middleware layers. Key trends in proprietary embedded stacks include per-unit or royalty-based licensing models that cover SIG qualification costs, particularly for medical devices requiring stringent compliance under Bluetooth SIG's End Product and Component testing. These stacks often achieve qualification for Bluetooth 5.x features, supporting secure, low-latency connections in regulated sectors.[70][76]Mesh and IoT-Focused Stacks
Bluetooth Mesh, introduced in the 2017 specification by the Bluetooth Special Interest Group (SIG), enables many-to-many communication in Bluetooth Low Energy (LE) networks through a flooding-based topology where messages are relayed by intermediate nodes to reach destinations beyond direct radio range. This approach supports scalable IoT deployments by allowing up to 32,767 nodes in a single network, with low latency typically under 100 ms for multi-hop transmissions in dense environments.[21] The stack extends the core Bluetooth LE architecture by incorporating node roles such as Proxy (bridging non-mesh devices via GATT), Relay (forwarding messages), Friend (caching for power-constrained nodes), and Low Power Node (LPN, which sleeps to conserve energy and relies on Friends for reliability). Provisioning and configuration integrate with GATT for initial setup, while security relies on network keys for relay protection and application keys for end-to-end message encryption.[77] The Silvair Mesh Stack, a proprietary implementation released in 2017, targets commercial lighting applications and was the first to achieve full Bluetooth SIG qualification for mesh networking.[78] Optimized for large-scale installations, it supports features like scene control for dynamic lighting adjustments and over-the-air (OTA) firmware updates to maintain network integrity without wired intervention.[79] In partnership with Nordic Semiconductor, the stack emphasizes low-latency relaying in sensor-driven networks, enabling seamless integration of occupancy and daylight sensors for energy-efficient IoT lighting systems. As of 2025, Silvair continues to advance Bluetooth NLC adoption.[79] Zephyr Mesh, an open-source extension built on the Zephyr RTOS Bluetooth LE stack, facilitates mesh networking for resource-constrained IoT devices through modular models for provisioning, configuration, and message handling.[80] It supports provisioning via the PB-ADV bearer (Provisioning Bearer over Advertising) for unassociated devices, allowing secure network joining without GATT dependency in all scenarios. Security is enforced using separate network keys for subnet access control and application keys for payload protection, with features like friend subscriptions to optimize LPN performance. Other IoT-focused stacks include Texas Instruments' SimpleLink Bluetooth LE solutions, such as those in the CC26xx family, which are tailored for sensor nodes in mesh topologies with emphasis on ultra-low power operation for battery-powered environmental monitoring.[81] For gateway applications, LTIMindtree's EtherMind Bluetooth 5.4 stack provides a dual-mode (Classic and LE) implementation with a compact footprint under 256 KB RAM, supporting interoperability in IoT hubs that aggregate mesh data for cloud uplink while achieving scalability to thousands of nodes and latencies below 100 ms.[82] These stacks prioritize managed flooding for reliability in dense deployments, contrasting with point-to-point LE links by enabling robust multi-device coordination. In 2023, the Bluetooth Mesh 1.1 specification introduced directed forwarding as an alternative to pure flooding, where relays are explicitly selected via paths computed during provisioning to reduce message overhead and improve efficiency in large networks.[83] This feature, combined with subnet bridging for segmented topologies, enhances IoT scalability without increasing latency.[84] Complementing mesh advancements, Bluetooth LE Audio's broadcast isochronous streams (BIS) enable one-to-many audio distribution for IoT applications like synchronized alerts in smart buildings or public announcements, supporting unlimited receivers with low-power periodic advertising.[85]References
- https://en.wikipedia.org/wiki/DragonFly_BSD
