To avoid unnecessary questions and confusion I thought it’d be good to give a quick overview of Android related code that will be going into bluez.git in the near future.
Since Android 4.2 there exists a well standardized HAL interface that the Bluetooth stack is expected to provide and which enables the easy replacement of the stack of choice on Android. What’s now happening in BlueZ is that we’re working on making BlueZ a drop-in replacement to Android by ensuring that the required HAL interfaces are available straight out of the BlueZ source tree.
Most of the work has little or no impact on existing BlueZ functionality and architecture and the code will be going under a separate “android” subdirectory. However, since we’re trying to reuse as much code with the rest of BlueZ as possible this also means that some refactoring will be happening elsewhere in the tree to create reusable library-like modules from parts of the code.
One of the intentions of this work is to avoid multiple companies doing their own Android adaptation for BlueZ by having the work done in a central place upstream.
This release comes with all sorts of fixes and updates to OBEX related profiles. There is also more complete HCI decoding support in btmon as well as some improvements to our user space HCI emulator code. One notable, though completely backwards compatible, API change is the removal of the Profile1.Cancel method. This was mainly used for canceling a NewConnection call that took too long, however bluetoothd always called shutdown on the socket in this case which made the D-Bus call redundant. From BlueZ 5.9 onwards this method is no longer called and previous (5.x) BlueZ versions handle its absence gracefully.
One notable build related change in 5.9 is the removal of the libusb dependency. USB support in BlueZ is now fully self-contained and packages can drop any libusb dependency they might have had.
Here’s a new BlueZ release with mostly bug fixes to audio and OBEX related profiles. One notable feature addition is a low-priority SDP based service discovery that’s always done after connecting known profiles. The intention of this feature is to allow refreshing the list of remote services as there doesn’t exist any kind of explicit way to do this through the D-Bus API.
We had unfortunately a couple of pretty severe regressions that had crept into 5.6 so we’ve released 5.7 earlier than planned. If you’ve started using 5.6 please switch to 5.7 as soon as possible, and if you haven’t yet picked 5.6 just ignore that release
The regressions in question were related to remote service discovery for newly paired devices as well as the failure to parse some SDP responses (this happened with one Nokia headset). These issues are now fixed and since the last release we also managed to get in patches adding support for a MAP notification dispatcher.
This is mostly a bug fix release with improvements to AVRCP, A2DP and OBEX. There is also a new command line tool for controlling remote media players (through AVRCP). This release also further improves our user space Bluetooth controller and host emulation which is mainly used for L2CAP end-to-end tests (tools/l2cap-tester). The btmon tool has also received a more complete set of ATT decoders.
Again, mostly a bug fix release with fixes to SDP, AVRCP, NFC and name resolving during discovery. There are also some new features:
- New passthrough operations for AVRCP
- Auto-pairing (PIN lookup) support
- Proper HID reconnection support
Besides these externally visible changes there was also a rather big refactoring patch-set that went in to establish a new “service” concept internally within bluetoothd and its plugins. This paves the way to have each remote service represented as a separate object through D-Bus, something which may already appear in the next BlueZ release.
With this release the SBC library now supports encoding and decoding of the mSBC codec used with Handsfree 1.6 Wideband Speech feature.
It has been a fairly quiet period since BlueZ 5.3 (hopefully meaning the current tree is in a pretty good shape and doesn’t have any major issues) but the amount of fixes and minor feature additions has now grown big enough to justify a new release. So here we go with BlueZ 5.4! It consists mostly of bug fixes but some new features have also crept in:
- Improved AVRCP 1.5 feature support (mostly player handling related)
- New key mappings for AVRCP Target role (for systems that need more than traditional playback control)
- Improved MAP client features, including Message Notification Service (MNS)
- Improved command line client (client/bluetoothctl) agent callback support