Release of BlueZ 5.21

Today is the day we celebrate our independence… from bluedroid :) This is the first BlueZ release that offers full feature parity as a drop-in replacement to what comes as part of Android by default. The biggest latest additions have been HID over GATT (HoG) and Health Device Profile (HDP) support. The development of the Android support is of course by no means over – we’ll continue improving it just like the rest of BlueZ – but the full set of features is now there. It’s also notable that for all of the supported features we have full qualification documentation, from needed PIXIT and PICS values to instructions on how to pass each test case with the PTS.

Besides Android related changes there are also fixes and other improvements throughout the tree. There were several HoG fixes to improve reconnections as well as fixes to bluetoothctl to allow using it for scripting.

An important detail of this release is that it supports several new features that are on their way to the 3.17 kernel (today testable e.g. with the bluetooth-next tree). Perhaps the most important one of these is LE passive scanning. When run on a kernel that supports it, instead of doing a kind of “fake” background scanning using the Start Discovery command, bluetoothd will now tell the kernel the relevant information and the kernel will then commence passive scanning for devices. This is particularly important since active scanning (triggered by Start Discovery) is both wasteful of resources and can cause interoperability issues with devices that use direct advertising (like several LE mice do).