BlueZ for Android status update

In past few months there has been significant amount of work put into supporting Android. This post outlines currently implemented features as well as other additions aimed at making BlueZ for Android integration as smooth as possible.

Android specifies the Bluetooth HAL and a number of profile HALs that shall be implemented by the Bluetooth stack. Each of the HALs is responsible for supporting one or more Bluetooth Profiles. The currently implemented HALs are:

  • bluetooth¬† – Generic Access Profile (GAP), Device ID Profile 1.3 (DID)
  • handsfree¬† – Headset Profile 1.2, Handsfree Profile 1.6 with Wideband Speech (HFP)
  • a2dp – Advanced Audio Distribution Profile 1.3 (A2DP)¬† and Audio/Video Remote Control Profile 1.0 (AVRCP)
  • socket – Phone Book Access Profile 1.1 (PBAP), Message Access Profile 1.1 (MAP), Object Push Profile 1.0 (OPP), RFCOMM
  • hidhost – Human Interface Device Profile 1.1 (HID)
  • avrcp – Audio/Video Remote Control Profile 1.5 (AVRCP)

Some profile’s optional functionality requires support from other Android components. For A2DP support media system (i.e. mediaserver) needs to use BlueZ provided audio.a2dp library. For Wideband Speech support in HFP it is required that BT chip assumes mSBC codec for transparent data.

Integration with Android system

Supported Android version is AOSP 4.4.2. Reference sources for Nexus 4 and Nexus 7 2013 with BlueZ integrated as replacement for default Bluetooth stack are provided at http://code.google.com/p/aosp-bluez.

Qualification documentation

Bluetooth qualification can be a tough process. To make it easier PTS PICS and PIXIT configurations for all supported profiles are provided. Those can be found in pics-*.txt and pixit-*.txt files in android folder. Tests results are also provided in pts-*.txt files. If test requires non-obvious preconditions or execution steps comments on those are also provided.

Future work

Future work includes support for Bluetooth Low Energy and Health Device Profile (health HAL). Low energy support is complex and requires implementation in multiple HALs. LE discovery and pairing (bluetooth HAL), GATT (gatt HAL) and HID over GATT (hidhost HAL) support.

Advanced Audio Distribution Profile