Official Linux Bluetooth Protocol Stack

BlueZ is the Bluetooth stack that ships with Linux. Part of the mainline kernel since 2001 and developed alongside it, it runs on millions of Linux systems: laptops, vehicles, medical equipment, gaming handhelds and embedded products of every kind.

BlueZ implements the full Bluetooth protocol stack, from the core radio protocols up to the profiles that applications use. It is modular, maintained upstream with the Linux kernel, and provides:

  • Classic Bluetooth (BR/EDR) and Low Energy in a single stack
  • Standard socket interface to every protocol layer
  • D-Bus APIs for application and system integration
  • Profiles implementable by external programs, as PipeWire does for audio
  • Support for multiple adapters on one system
  • Broad controller support over USB, UART, SDIO and PCIe
  • Device and service level security, including LE Secure Connections

BlueZ consists of several independent modules:

Kernel subsystem with L2CAP, SCO, RFCOMM and ISO channels

btusb, hci_uart, btsdio, vhci and many vendor-specific drivers

bluetoothd, the system daemon exposing the D-Bus API

bluetooth-meshd and obexd for mesh and object exchange

bluetoothctl, btmgmt and btmon for control and analysis

Supported Profiles

Lower level host stack: GAP, L2CAP (Basic, ERTM and LE credit-based channels), SDP, RFCOMM, ATT/GATT (including Enhanced ATT), SMP and isochronous channels, with support for Core Specification features up to 6.0.

Audio: PipeWire provides the endpoints and codecs for A2DP and LE Audio, and implements the HFP and HSP roles.

Audio & video (BR/EDR)

  • A2DP 1.4 Advanced Audio Distribution Profile · Source, Sink · SBC, AAC, aptX, FastStream, LDAC, LHDC, Opus, Opus 05 and LC3plus codecs from PipeWire
  • AVRCP 1.6 Audio/Video Remote Control Profile · Controller, Target · browsing and cover art
  • AVDTP 1.3 Audio/Video Distribution Transport Protocol · Initiator, Acceptor
  • AVCTP 1.4 Audio/Video Control Transport Protocol · Initiator, Acceptor
  • HFP 1.8 Hands-Free Profile · HF, AG · CVSD, mSBC, LC3-SWB and LC3-24kHz codecs from PipeWire · built-in HF is experimental; PipeWire implements both roles and advertises 1.9
  • HSP 1.2 Headset Profile · HS, AG · CVSD codec from PipeWire

LE Audio

  • BAP 1.0.2 experimental Basic Audio Profile · Unicast Client & Server, Broadcast Source & Sink · LC3 codec from PipeWire · streaming endpoints provided by PipeWire
  • BASS 1.0 experimental Broadcast Audio Scan Service · Scan Delegator, Broadcast Assistant
  • VCP 1.0 experimental Volume Control Profile · Controller, Renderer
  • MICP 1.0 experimental Microphone Control Profile · Controller, Device
  • MCP 1.0.1 experimental Media Control Profile · Client, Server
  • CCP 1.0 testing Call Control Profile · Client, Server
  • CSIP 1.0 experimental Coordinated Set Identification Profile · Set Coordinator, Set Member
  • TMAP 1.0 experimental Telephony and Media Audio Profile · Client, Server
  • GMAP 1.0 experimental Gaming Audio Profile · Client, Server
  • ASHA experimental Audio Streaming for Hearing Aids · Source · G.722 codec from PipeWire · Google specification, not Bluetooth SIG; streamed by PipeWire

Input & GATT services

  • HID 1.1 Human Interface Device Profile · Host
  • HOGP 1.0 HID over GATT Profile · Host
  • ScPP 1.0 Scan Parameters Profile · Client
  • BAS 1.0 Battery Service · Client
  • DIS 1.1 Device Information Service · Client
  • BLE-MIDI 1.0 MIDI over Bluetooth Low Energy · MIDI Association specification, not Bluetooth SIG; I/O via ALSA sequencer or PipeWire, which can also act as a server

Object exchange (OBEX)

  • GOEP 2.0 Generic Object Exchange Profile · Client, Server · OBEX over L2CAP and RFCOMM, with SRM
  • OPP 1.2 Object Push Profile · Client, Server
  • FTP 1.3 File Transfer Profile · Client, Server
  • PBAP 1.2 / 1.1 Phone Book Access Profile · Client (PCE) 1.2, Server (PSE) 1.1
  • MAP 1.4 / 1.0 Message Access Profile · Client (MCE) 1.4, Server (MSE) 1.0
  • BIP 1.2 Basic Imaging Profile · Client · AVRCP cover art only
  • SYNCH 1.0 Synchronization Profile · Client, Server · IrMC synchronisation

Networking & serial

  • PAN 1.0 Personal Area Networking Profile · PANU, GN, NAP
  • BNEP 1.0 Bluetooth Network Encapsulation Protocol
  • SPP 1.2 Serial Port Profile · Server, Client
  • DUN 1.2 Dial-Up Networking Profile · Server, Client · via an external profile implementation

Other

  • DID 1.3 Device Identification Profile · Server, Client
  • RAP 1.0 experimental Ranging Profile · Requestor, Responder · Channel Sounding based distance measurement
  • HCRP 1.2 Hardcopy Cable Replacement Profile · Client · printing, through the CUPS backend
  • Mesh 1.0.1 Bluetooth Mesh Profile · Node, Provisioner · separate bluetooth-meshd daemon
  • experimental Complete enough to use and built by default, but only registered when experimental profiles are enabled. The D-Bus API it exposes is not yet frozen and may still change.
  • testing Work in progress. Intended for development and interoperability testing rather than for general use.