Content deleted Content added
Longsen Gao (talk | contribs) |
|||
(41 intermediate revisions by 25 users not shown) | |||
Line 10:
[[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 [[computer]]s. Support for additional [[Bluetooth profile]]s can typically be added through [[device driver|driver]]s.
# ''[[Embedded system]]'' implementations intended for use in devices where resources are limited and demands are lower, such as Bluetooth [[peripheral device]]s.<ref name="
==General-purpose implementations==
Line 18:
The [[FreeBSD]] bluetooth stack is implemented using the [[Netgraph]] framework.<ref>{{cite web|title=FreeBSD Handbook: Advanced Networking - Bluetooth|url=https://www.freebsd.org/doc/handbook/network-bluetooth.html#idp82252392|access-date=2018-04-02}}</ref> A broad variety of Bluetooth USB dongles are supported by the ng_ubt driver.<ref>{{cite web|title=FreeBSD Kernel Interfaces Manual: NG_UBT(4)|url=https://www.freebsd.org/cgi/man.cgi?query=ng_ubt&sektion=4&manpath=freebsd-release-ports#HARDWARE|access-date=2018-04-02}}</ref>
The implementation was committed in 2002, and first released with [[FreeBSD version history#FreeBSD 5|FreeBSD 5.0]].<ref name=f>{{cite web |author= Maksim Yevmenkin |date= 2002 |url= http://bxr.su/f/share/man/man4/ng_bluetooth.4 |title= ng_bluetooth.4 — placeholder for global Bluetooth variables |website= BSD Cross Reference |publisher= [[FreeBSD]]
*{{cite book |section=ng_bluetooth -- placeholder for global Bluetooth variables |title=FreeBSD Manual Pages |url=http://mdoc.su/f/ng_bluetooth.4}}</ref>
====NetBSD====
[[NetBSD]] has its own Bluetooth implementation, committed in 2006, and first released with {{Section link|NetBSD#4.0}}.<ref name=n>{{cite web |author1= Iain Hibbert |author2= Itronix Inc |date= 2006 |url= http://bxr.su/n/share/man/man4/bluetooth.4 |title= bluetooth.4 — Bluetooth Protocol Family |website= BSD Cross Reference |publisher= [[NetBSD]]
====OpenBSD====
Line 27 ⟶ 28:
====DragonFly BSD====
[[DragonFly BSD]] has had NetBSD's Bluetooth implementation since 1.11 (2008), first released with {{Section link|DragonFly BSD#1.12}}.<ref name=d>{{cite web |editor= Hasso Tepper |date= 2008 |url= http://bxr.su/d/share/man/man4/bluetooth.4 |title= bluetooth.4 — Bluetooth Protocol Family |website= BSD Cross Reference |publisher= [[DragonFly BSD]]
*{{cite book |section=bluetooth -- Bluetooth Protocol Family |title=DragonFly On-Line Manual Pages |url=http://mdoc.su/n,d/bluetooth.4}}</ref>
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.<ref name=d_ng>{{cite web |url= http://bxr.su/d/sys/netgraph7/bluetooth/common/ng_bluetooth.c |title= sys/netgraph7/bluetooth/common/ng_bluetooth.c |website= BSD Cross Reference |publisher= [[DragonFly BSD]] }}</ref><ref>{{cite web |author= Sascha Wildner |date= 2014-11-15 |url= https://github.com/DragonFlyBSD/DragonFlyBSD/commit/e85b99abf6da4a83a7dc495b0ef37ce19864149f |title= kernel/netgraph7: Port the kernel part of the netgraph7 bluetooth stack. |publisher= [[DragonFly BSD]] }}</ref>
Line 33 ⟶ 35:
===Linux===
====BlueALSA====
''BlueALSA'' is a Bluetooth audio [[Advanced Linux Sound Architecture|ALSA]] backend that allows the use of Bluetooth-connected audio devices without the use of [[PulseAudio]] or [[PipeWire]].<ref>{{Cite web|url=https://wiki.debian.org/Bluetooth/Alsa|title = Bluetooth/Alsa - Debian Wiki}}</ref><ref>{{Cite web|url=https://wiki.archlinux.org/title/Bluetooth#ALSA|title = Bluetooth - ArchWiki}}</ref>
====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.{{
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
===
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 [[
===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
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 56 ⟶ 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 63 ⟶ 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.
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 110 ⟶ 119:
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.<ref>{{cite web|url=https://www.bluetooth.org/qualweb/ProductDetails.cfm?ProductID=700 |title=The Official Bluetooth SIG Member Website |publisher=Bluetooth.org |date=2002-04-02 |access-date=2012-08-24}}</ref>
===
===BlueMagic===
Line 117 ⟶ 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
===Bluetopia===
Line 125 ⟶ 134:
=== BlueWiseLE ===
BlueWiseLE is the ''Bluetooth
===ClarinoxBlue===
Bluetooth host subsystem product of Clarinox Technologies. Support for Windows 7/8/
|url=
|title=ClarinoxBlue
|publisher=clarinox
|access-date=
|archive-url=https://web.archive.org/web/
|archive-date=
|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.
{{cite web
|url=http://www.searanllc.com/
|title={{Proper name|dotstack}}
|access-date=2011-11-16
}}</ref>
Line 166 ⟶ 175:
===Mecel/Aricent Betula===
[[Mecel]] Betula is
{{cite web
|url=http://www.mecel.se/products/bluetooth
Line 195 ⟶ 204:
===Zephyr Project===
The [[Zephyr (operating system)|Zephyr Project RTOS]] includes a complete, [[open source]] Bluetooth Low Energy
==See also==
|