BlueZ Low Energy support status

2010 was a busy year for BlueZ developers. In the first day of the new year I decided to write my first post in the BlueZ blog to provide initial guidance to everyone interested on Low Energy support in BlueZ. The Low Energy support is on heavy development, so feel free to report bugs and contribute.


There are three major pieces:
- BLE controller abstraction
- Attribute protocol
- Security Manager


Our goal is to hide BLE technology details from the applications. BlueZ will expose the same interface for device discovery operations, meaning that the applications do not need to know the hardware capabilities/features. BlueZ will use the same abstraction(D-Bus signals) to report found devices and services. Internally, BlueZ will manage the interleaved BLE scanning and BR/EDR inquiry.
The logic to “create” a device is still the same, an application needs to call StartDiscovery() to find the MAC address and call CreateDevice or CreatePairedDevice to “create” the device representation. bluetoothd identifies the remote type based on the advertising data and triggers the SDP or GATT primary service discovery.
ATT(Attribute Protocol) is a very simple protocol to discover/exchange characteristics. GATT is basically procedures descriptions of how ATT should be used to discover services and read/write characteristics. ATT can be considered transport agnostic, we implemented GATT/ATT first over BR/EDR due the BLE hardware unavailability, extend to BLE was just a minor surgery in the BlueZ code. Nowadays, both are supported, the BlueZ attribute server/client supports both transports, there are some restrictions in the Bluetooth Specification to avoid interoperability problems, some of them are already implemented in BlueZ but minor hacks in the code allows anyone to test ATT/GATT over BR/EDR.
Security Manager: Only Just Works method is supported at the moment. LE kernel is not in the bluetooth-next tree yet.
It is available at: git.infradead.org/users/vcgomes/linux-2.6.git


Issues that still open:
- Random address support
- Privacy
- GATT server API
- Register Application API
- Better connection management
- Characteristic descriptors
More issues can be found in the TODO file(BlueZ source)


What is currently implemented:
- Attribute server example
- gatttool: command line tool to run common GATT procedures
- Generic Attribute Client: over BR/EDR and LE
- General Discovery Procedure: interleaved discovery
- Just works method for Security Manager


Contributions are welcome!
Happy New Year!

Release of bluez-4.84

This release fixes an issue with the adapter initialization and the handling of device found signals.

bluez-4.84.tar.gz

Release of bluez-4.83

This release fixes a few bugs and updates the support for primary service discovery.

bluez-4.83.tar.gz

Release of obexd-0.38

This release fixes some minor bugs with Phonebook Access profile handling and removes some limitations which large files.

obexd-0.38.tar.gz

Release of bluez-4.82

This release fixes a few minor bugs and also one nasty regression when the storage files are exactly the size of memory page.

bluez-4.82.tar.gz

Release of bluez-4.81

This release fixes a regression with the legacy paring and some other small bugs.

bluez-4.81.tar.gz

Release of obexd-0.37

This release fixes another set of bugs with Phonebook Access profile handling.

obexd-0.37.tar.gz

Release of bluez-4.80

This release fixes some additional race conditions with the adapter initialization. It also fixes multiple bugs with the AVDTP connect and disconnect handling.

bluez-4.80.tar.gz

As a bonus this release contains an optimized version of SBC for ARM PXA series CPUs.