GSoC/GCI Archive
Google Summer of Code 2009

BlueZ

Web Page: http://wiki.bluez.org/wiki/GSoC2009

Mailing List: linux-bluetooth [at] vger.kernel.org

BlueZ provides support for the core Bluetooth layers and protocols.It is flexible, efficient and uses a modular implementation. It has many interesting features such as:

  • Complete modular implementation
  • Symmetric multi processing safe
  • Multithreaded data processing
  • Support for multiple Bluetooth devices
  • Real hardware abstraction
  • Standard socket interface to all layers
  • Device and service level security support

Currently BlueZ consists of many separate modules:

  • Bluetooth kernel subsystem core
  • L2CAP and SCO audio kernel layers
  • RFCOMM, BNEP, CMTP and HIDP kernel implementations
  • HCI UART, USB, PCMCIA and virtual device drivers
  • General Bluetooth and SDP libraries and daemons
  • Configuration and testing utilities
  • Protocol decoding and analysis tools
  • All services are implemented as plugins
  • Audio Service witch gives support to profiles: HSP, HFP, AVDTP, A2DP, AVRCP
  • Input Service profiles: HID
  • Network Service profiles: PAN
  • Serial Service profiles: RFCOMM

Projects

  • A One-Step Bluetooth Device Setup Wizard Using 2D Data-matrix symbol This project proposes to develop a one step Bluetooth setup wizard that can simplify the device setup process by using a single 2D DataMatrix symbol containing device MAC address, SDP record etc. This is contrary to the traditional setup where a device setup relies on a time intensive inquiry and service search. A GUI and a BlueZ plugin is also planned to be developed for importing symbols from image file or webcam. More: http://ril.newport.ac.uk/sarker/pubdata/BlueZOneStepWizard.html
  • A2DP Sink Role This project is to implement the Sink role on BlueZ, according to the A2DP specification v1.2. This role provide means to receive an audio stream coming from an audio Source on the same piconet. It's very important, and can add several use cases for the Linux bluetooth stack, like Linux to Linux streams, bluetooth microphones support or using a Linux device as bluetooth speakers. It's also a mandatory feature for an implementation to be full compliant with A2DP v1.2.
  • Generic HID - easy to use and powerful plugin This project opens up possibilities of using different devices that support bluetooth and run on linux to emulate parts of a computer. The idea can be easily ported to other OS's and other output devices. The goal of this project is to standardize this feature ,giving it flexibility and the ability to be used by anyone that becomes familiar with the concept. More details about the implementation can be found on the proposal page : http://wiki.bluez.org/wiki/GSoC2009/Proposals/Proposal1
  • L2CAP Enhanced Retransmission Support L2CAP lies above the Link Manager and Baseband and interfaces with higher layer protocols. It passes the packet from the Link Manager to the higher layer protocols or vice-versa. L2CAP operates in five modes but BlueZ supports only L2CAP Basic Mode. My idea is to implement L2CAP Enhanced Retransmission Mode, which is an improved version of retransmission & flow control modes ( Not yet implemented on Linux) The Basic Mode doesn't support either Retransmission or Flow Control of packets. Those features will make bluetooth transfers more reliable and for the first time we will be able to retransmit corrupted packets making the bluetooth experience better on Linux. Bluetooth protocols like AVRCP will take advantages of L2CAP Enhanced Retransmission.