Release of BlueZ 5.22

This release contains several fixes to HID over GATT (HoG) as well as for AVRCP. Feature-wise there are a couple of notable additions debuting with the Linux kernel 3.17 release:

  • BR/EDR whitelist support. Starting with Linux kernel 3.17 bluetoothd will no-longer set adapters to connectable by default. Instead, all configured remote devices are added to the kernel whitelist after which the kernel will enable page scanning but only accept connect requests from the whitelist. This effectively reduces the attack surface for unknown devices. When whitelist support is available the general connectable state now follows the discoverable state, meaning discoverable must be enabled for previously unknown devices to be able to connect to us.
  • Proper LE passive scanning support. For kernels before 3.17 bluetoothd will use the Start/Stop Discovery commands to perform LE background scanning. This however uses LE active scanning which is both wasteful (causing unneeded Scan Requests) and can cause reconnection issues with devices using direct advertising (e.g. most LE mice). From kernel version 3.17 onward bluetoothd will use proper kernel-side passive scanning, making the background scanning both efficient and more interoperable. The kernel will even use the controller-side whitelist during scanning (if no Resolvable Private Addresses are present), saving even more power.

On the Android side there have been various fixes here and there, but the major areas of change are improved test coverage as well as full GATT over BR/EDR support.