Bluetooth stack: Difference between revisions

Content deleted Content added
BlueDroid/Fluoride: Add dead link template
Tags: Mobile edit Mobile web edit Advanced mobile edit
 
(33 intermediate revisions by 21 users not shown)
Line 38:
 
====BlueZ====
''BlueZ'', initially developed by [[Qualcomm]],<ref>{{cite web |title=BlueZ |url=http://www.bluez.org/ |access-date=20 July 2021}}</ref> is a Bluetooth stack, included with the official [[Linux kernel]] distributions,<ref>{{Citation|last=Torvalds|first=Linus|title=linux: Linux kernel source tree|date=2015-10-24|url=https://github.com/torvalds/linux/blob/master/net/bluetooth/lib.c|access-date=2017-08-30}}</ref> 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.{{cncitation needed|date=July 2021}} It was initially developed by [[Qualcomm]], and is available for [[Linux kernel]] versions 2.4.6 and up.<ref>{{cite web |last1=Holtmann |first1=Marcel |title=The BlueZ: towards a wireless world of penguins |url=https://www.kernel.org/doc/ols/2005/ols2005v1-pages-247-252.pdf |website=Proceedings of the [[Linux Symposium]] 2005 |access-date=21 July 2021 |quote=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.}}</ref> 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).<ref name=lwn-BlueZ-Android>{{cite web|url=https://lwn.net/Articles/597293/|title=Returning BlueZ to Android|date=2014-05-06|quote=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. |work=[[LWN.net]]}}</ref>
 
hidd is the Bluetooth [[human interface device]] (HID) [[daemon (computing)|daemon]].<ref>{{cite web|url=https://linux.die.net/man/1/hidd|title=hidd(1): Bluetooth HID daemon - Linux man page|publisher=die.net|access-date=2018-04-02}}</ref>
 
===={{Anchor|BLUEDROID}}BlueDroid/Fluoride====
[[Android (operating system)|Android]] switched from BlueZ to its own ''BlueDroid'' stack, created by [[Broadcom]], in late 2012.<ref name=lwn-BlueZ-Android/> BlueDroid has been since been renamed Fluoride.<ref>{{Cite web|url=https://gerrit.unlegacy-android.org/plugins/gitiles/Unlegacy-Android/android_system_bt/+/219d4b6a542ade76b6069ee99cd0af0548139c9c|archive-url=https://web.archive.org/web/20190831084012/https://gerrit.unlegacy-android.org/plugins/gitiles/Unlegacy-Android/android_system_bt/%2B/219d4b6a542ade76b6069ee99cd0af0548139c9c|url-status=dead|archive-date=August 31, 2019|title=Fluoride Bluetooth stack|website=android.googlesource.com|access-date=2019-08-31}} </ref>{{Dead link}} Marcel Holtmann, from the Intel Open Source Technology Center, claimedimplied that Google made a poor choice in switching to BlueDroid, during a presentation for ''BlueZ for Android'' at the Android Builders Summit in 2014.<ref name=lwn-BlueZ-Android/>
 
===Mac= OSGabeldorsche X====
With Android 13, Google by default enabled the newly developed Bluetooth stack ''Gabeldorsche''.<ref>{{cite web | url=https://www.xda-developers.com/android-13-gabeldorsche-bluetooth-stack/ | title=Android's new Gabeldorsche Bluetooth stack is enabled by default in Android 13 | date=25 August 2022 }}</ref>
Since version 10.2, [[Apple Inc.]]'s [[Mac OS X]] has contained an integrated Bluetooth stack.<ref>{{cite web|url=https://developer.apple.com/mac/library/documentation/DeviceDrivers/Conceptual/Bluetooth/BT_Intro/BT_Intro.html |title=Loading |publisher=Developer.apple.com |access-date=2012-08-24}}</ref> Included profiles are DUN, SPP, FAX, HID, HSP, SYNC, PAN, BPP and OBEX. Version 10.5 adds support for A2DP and AVRCP.
 
The name ''Gabeldorsche'' very indirectly relates to [[Sweyn Forkbeard]], the son and successor of [[Harald Bluetooth]].<ref>{{cite web | url=https://9to5google.com/2020/02/19/android-11-dp1-gabeldorsche-bluetooth/ | title=Android 11's new 'Gabeldorsche' Bluetooth stack was given its name for a great reason | date=20 February 2020 }}</ref>
 
===macOS===
Since version 10.2, [[Apple Inc.]]'s [[Mac OS XmacOS]] has contained an integrated Bluetooth stack.<ref>{{cite web|url=https://developer.apple.com/mac/library/archive/documentation/DeviceDrivers/Conceptual/Bluetooth/BT_Intro/BT_Intro.html |title=LoadingIntroduction to Bluetooth Device Access Guide |work=Bluetooth Device Access Guide |publisher=Developer.apple.com |access-date=20122025-0805-2404}}</ref> Included profiles are DUN, SPP, FAX, HID, HSP, SYNC, PAN, BPP and OBEX. VersionMac OS X 10.5 addsadded 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 [[Conventional PCI|PCI]], [[I2C|I²<sup>2</sup>C]], [[serial port|serial]], [[PC Card]] or other interfaces.<ref name="MSBTFAQ">{{cite web|url=http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Bth_FAQ.docx |title=Bluetooth Wireless Technology FAQ |access-date=2012-11-04}}</ref> It also only supports a single Bluetooth radio.<ref name="MSBTFAQ"/> Windows 8 has an extensible transport model allowing support for Bluetooth radios on non-USB buses.<ref name="BTWindows">{{cite web|url=https://msdn.microsoft.com/en-us/library/windows/hardware/dn133849(v=vs.85).aspx|title=General Bluetooth Support in Windows|publisher=Microsoft}}</ref>
 
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.
Line 58 ⟶ 63:
* [[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.<ref>{{cite web|url=http://msdn.microsoft.com/en-us/library/aa910275.aspx |title=Bluetooth HCI Transport Layer |publisher=Msdn.microsoft.com |date=2008-08-28 |access-date=2012-11-04}}</ref> 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 [[XP Service Pack 2|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. <ref name="WinBT 2010 FAQ">{{cite web|url=http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Bth_FAQ.docx |title=Bluetooth Wireless Technology FAQ - 2010 |access-date=2012-11-04}}</ref>
* Windows XP SP1 : Microsoft released a [[Quick Fix Engineering|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.<ref name="MSBTFAQ"/> The Windows Vista Bluetooth stack supports a kernel mode [[device driver|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.<ref>{{cite web|url=http://download.microsoft.com/download/9/8/f/98f3fe47-dfc3-4e74-92a3-088782200fe7/TWMO05002_WinHEC05.ppt |title=USB/1394 on the PC |access-date=2012-11-04 |url-status=dead |archive-url=https://web.archive.org/web/20120215074927/http://download.microsoft.com/download/9/8/f/98f3fe47-dfc3-4e74-92a3-088782200fe7/TWMO05002_WinHEC05.ppt |archive-date=2012-02-15 }}</ref> 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.<ref name="MSBTFAQ"/> This feature pack while initially only available to OEMs, was eventually included in Windows Vista Service Pack 2.
Line 65 ⟶ 70:
* [[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.<ref name="MSBTFAQ"/><ref name="BTWindows"/><ref name="WinBT 2010 FAQ"/> Windows 8 adds support for HFP, A2DP, GATT and AVRCP Profiles.<ref name="BTWindows"/>
 
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.<ref name="BTWindows"/>
 
Windows 10 (Version 1803) and later support Bluetooth version 5.0 and several Bluetooth profiles.<ref> [https://docs.microsoft.com/en-us/windows-hardware/drivers/bluetooth/general-bluetooth-support-in-windows Bluetooth Version and Profile Support in Windows 10] </ref>
 
Bluetooth profiles exposed by the device but unsupported by the Windows stack will show as "Bluetooth Peripheral Device" in [[Device Manager]].
 
====Broadcom WIDCOMM (BTW)====
Line 113 ⟶ 120:
 
===Bluelet===
Bluelet is a portable embedded Bluetooth protocol stack of [http://www.barrot.com.cn/ 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.<ref>{{Cite web|title=Launch Studio - Listing Details|url=https://launchstudio.bluetooth.com/ListingDetails/137849|access-date=2021-10-31|website=launchstudio.bluetooth.com}}</ref>
 
===BlueMagic===
Line 119 ⟶ 126:
 
===Blue SDK===
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™Bluetooth Special Interest Group (SIG) and meets the standards of safety and security expected in automotive-grade products. Bluetooth™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.<ref>{{cite web|url=http://www.opensynergy.com/produkte/blue-sdk/ |title=OpenSynergy's Blue SDK|date=28 October 2020 }}</ref>
 
===Bluetopia===
Line 127 ⟶ 134:
 
=== BlueWiseLE ===
BlueWiseLE is the ''Bluetooth® Low Energy'' certified protocol stack software product from Alpwise. It includes the Link Layer<ref>{{cite web |url=http://www.alpwise.com/bluetooth-protocol-stack/software/bluetooth-stack/link-layer/ |title=Link layer Bluetooth Low Energy 5 developed by Alpwise |publisher=alpwise.com |access-date=2018-11-20}}</ref> and also the Host stack (i.e. upper layers above the HCI).<ref>{{Cite web|url=https://launchstudio.bluetooth.com/ListingDetails/RedirectFromQdid/102355|title=QD ID 102355 {{!}} Launch Studio - Listing Details|website=launchstudio.bluetooth.com|access-date=2018-11-20}}</ref> 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).<ref>{{cite web |url=http://www.alpwise.com/bluetooth-protocol-stack/software/bluetooth-stack/ |title=Bluetooth Protocol Stack and its development kit - Alpwise |publisher=alpwise.com |access-date=2018-11-20 |archive-date=2018-02-03 |archive-url=https://web.archive.org/web/20180203141832/http://www.alpwise.com/bluetooth-protocol-stack/software/bluetooth-stack/ |url-status=dead }}</ref>
 
===ClarinoxBlue===
Bluetooth host subsystem product of Clarinox Technologies. Support for Windows 7/8/8.110, WinCE, Linux/AGL Linux, Android, AutoSAR, Integrity, SafeRTOS, QNX, μITRON, FreeRTOS, uCμC/OS, Azure RTOS ThreadX, Nucleus, MQX, RTX, embOS, TI-RTOS, DSP/BIOS, eCos and VelOSityμ-velOSity. BluetoothQualified classicfor HCI,Bluetooth L2CAP,specification RFCOMM5.2, SDP, BNEP, AVCTP, AVDTP protocols5.0 and SDAP,all GAP,previous SPP,specifications DUN,includes HFP,all HSP,Classic OBEX,profiles/protocols FTP,and AVRCP,LE A2DP,profiles/services MAP,including PBAP,BT HID,& HDP, PAN profilesLE are supportedAudio. BluetoothClarinoxBlue Lowsupports EnergyHCI customtransport GATTfor andSDIO, allUART GATT3-Wire, basedUART-BCSP, profilesUART-H4, IPSP profiles are currently supportedUSB. The stack has been ported to many CPU and MCU families including Freescale;NXP iMX6,i.MX6/i.MX7/i.MX8/i.MX iMX7RT, Kinetis K6x/7x, LPC 18xx/43xx/54xxx STMicro; STM32F4x, NXPSTM32H7, STM32WB55, STM32MP157; LPCTexas 18xx,Instruments LPC43xxTI MSP432, TIDSP 5xxx, OMAP/Davinci, Tiva TM4C129xTM4C123x, RenesasSitara 3xxx; S7G2Renesas Synergy S5/S7, XilinxRH850, 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.<ref>{{cite web
|url=httphttps://www.clarinox.com/index.php?id=56products/softframe/supported-platforms/
|title=ClarinoxBlue
|publisher=clarinox
|access-date=20102022-0804-0911
|archive-url=https://web.archive.org/web/2011021919392020190820044339/http://www.clarinox.com/index.php?id=56products/softframe/supported-platforms/
|archive-date=20112019-0208-1920
|url-status=dead
}}</ref>
 
==={{Proper name|dotstack}}===
{{Proper name|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™{{Proper name|dotstack}} is qualified as V2.1 + EDR, V4.1, V4.2 and 5.0 ready, 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. {{Proper name|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. {{Proper name|dotstack}} has FreeRTOS, uOS, Linux, Android, QNX, MQX, ThreadX, and no RTOS integration. Min RAM requirement for SPP 3KB with RTOS and app.<ref>
{{cite web
|url=http://www.searanllc.com/
|title={{Proper name|dotstack}}
|access-date=2011-11-16
}}</ref>
Line 168 ⟶ 175:
 
===Mecel/Aricent Betula===
[[Mecel]] Betula is aAda 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 [[Microsoft Windows|Windows]], [[Linux]], [[Android (operating system)|Android]] or running without or with a custom OS. It has support for Bluetooth version 45.03, including the new Bluetooth Low Energy & mesh.<ref>
{{cite web
|url=http://www.mecel.se/products/bluetooth
Line 197 ⟶ 204:
 
===Zephyr Project===
The [[Zephyr (operating system)|Zephyr Project RTOS]] includes a complete, [[open source]] Bluetooth Low Energy 5v5.03<ref>{{Cite web |title=Overview — Zephyr Project Documentation |url=https://docs.zephyrproject.org/latest/connectivity/bluetooth/overview.html#supported-features |access-date=2023-06-21 |website=docs.zephyrproject.org}}</ref> compliant protocol stack written in C for [[embedded system]]s. 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==