The ACCESS Linux Platform Bluetooth components are based on open-source BlueZ stack and OpenOBEX stack. The BlueZ stack supports the latest Bluetooth specifications:
- Bluetooth 2.0
- Enhanced Data Rate (EDR)
- Advanced Frequency Hopping (AFH) for Wi-Fi cohabitation
- Extended Synchronous Connection-Oriented (eSCO)
- Different device transport support (UART, USB, etc.)
NOTE: As of this writing, ACCESS Linux Platform's Bluetooth support is based on BlueZ release 3.7. BlueZ relies on DBus, an LGPL component, in order to comply with the GPL.
Bluetooth Architecture
Figure 5.1 Bluetooth Framework
The Bluetooth Panel is the user interface for the management of Bluetooth power, discoverability, device name, known devices (connected once, paired or not).
The Bluetooth daemon (hcid) is provided by BlueZ and performs Bluetooth device initialization (name, discoverability), security (pairing), and other initializations.
The Bluetooth Hardware Management daemon provides functionality not provided by the BlueZ daemon: it manages the Bluetooth radio (starting, stopping, and initializing) through BlueZ and radio-specific code, including HW Management and Wi-Fi separation.
The Bluetooth ACCESS Linux Platform daemon displays the authentication dialog as necessary, and keeps Bluetooth ACCESS Linux Platform settings updated.
Bluetooth services are provided as a Linux daemon or as a BlueZ service.
ACCESS Linux Platform Bluetooth Library
The Bluetooth library that is part of ACCESS Linux Platform provides APIs to application developers, including functions that allow developers to:
- Check Bluetooth availability:
alp_bluetooth_check(). If Bluetooth is off and not currently disabled under Flight Mode, application developers can use the Bluetooth library to create a dialog that gives the device user an option to start Bluetooth. - Get a list of remote devices whose information has been stored on the user's device. Device information includes class of device, friendly name, last connection date, and pairing details.
- Get or remove device information for a specific device
- Get the friendly name of a remote device
- Create a dialog to discover and select one or more devices:
alp_bluetooth_discovery_dialog_new()
Prepare a channels map for AFH support (Wi-Fi coexistence): alp_bluetooth_prepare_afh_channels() See the Doxygen-generated reference documentation included in the product for more information about these functions.
Bluetooth Features
ACCESS Linux Platform Bluetooth provides a number of features, including a settings (or preferences) panel for end users, a configurable discovery widget, and a number of Bluetooth profiles.
Bluetooth Settings Panel
The Bluetooth Settings panel allows users to manage a Bluetooth configuration on their device. Using the panel, a user can perform the following tasks:
- Start and stop Bluetooth
- Set device discoverability (On - discoverable, or Off - hidden)
- Set the friendly name of the device
- Pair with other devices
- Manage a list of "known" devices (devices that have successfully connected via Bluetooth at least once)
This panel also displays a list of devices currently connected to the user's device.
User preferences for Bluetooth are stored as ACCESS Linux Platform Settings.
Bluetooth Discovery Widget
The Bluetooth Discovery widget is a dialog that can be configured programmatically. The widget is intended for use by application developers who want to ask a user to select one or more Bluetooth devices. Developers can configure the widget to suit their application's needs. See the ACCESS Linux Platform User Interface Widget Reference for more information.
Bluetooth Profiles
ACCESS Linux Platform Bluetooth support enables the use of different Bluetooth profiles. Some of the Bluetooth profiles are included in ACCESS Linux Platform. The ACCESS Linux Platform Bluetooth library API is provided to aid development and UI consistency for custom profiles.
Some of the profiles provided with ACCESS Linux Platform include:
- Headset/Handsfree Profiles
- The Headset profile describes how a Bluetooth-enabled headset should communicate with a computer or other Bluetooth enabled device such as a mobile phone. When connected and configured, the headset can act as the remote device's audio input and output interface, providing full duplex audio.
- Advanced Audio Distribution Profile
- The Advanced Audio Distribution Profile (A2DP) defines the protocols and procedures that realize distribution of audio content of high-quality in mono or stereo on ACL channels. A typical usage case is the streaming of music content from a stereo music player to headphones or speakers.
- Serial Port Profile
- This profile defines the requirements for Bluetooth devices necessary for setting up emulated serial cable connections using RFCOMM between two peer devices.
- Personal Area Network Profile
- The Personal Area Networking (PAN) Profile describes how two or more Bluetooth enabled devices can form an ad-hoc network and how the same mechanism can be used to access a remote network through a network access point.
- Dial-Up Networking Profile
- The Dial-up Networking Profile defines the protocols and procedures that shall be used by devices implementing the usage model called 'Internet Bridge' (see Bluetooth SIG MRD). The most common examples of such devices are modems and cellular phones.
- Object Push Profile
- The Object Push profile defines the requirements for the protocols and procedures that shall be used by the applications providing the Object Push usage model. This profile makes use of OBEX to transfer data. The most common devices using these usage models can be notebook PCs, PDAs, and mobile phones.
- File Transfer Profile
- The File Transfer profile defines the requirements for the protocols and procedures used by the applications providing the File Transfer usage model. This profile is based on the Generic Object Exchange profile (GOEP), which defines the interoperability requirements for the protocols needed by the applications. These usage models are most commonly found in devices such as PCs, laptops, and PDAs.
- Human Interface Device Profile
- The Human Interface Device profile defines the requirements for the protocols and procedures used by Bluetooth devices such as keyboards, pointing devices, gaming devices, and remote monitoring devices. This specification uses the Universal Serial Bus (USB) definition of Human Interface Device (HID) in order to leverage the existing class drivers for USB HID devices.
- SIM Access Profile
- The SIM Access profile defines the requirements for the protocols and procedures used to access a GSM SIM card, a UICC card, or a R-UIM card using a Bluetooth link. An example of this profile's use: a user can personalize a car-embedded phone with a subscription module in an external device, which is connected using a Bluetooth wireless link. The external device can either be a simple SIM card holder or a portable phone, which is brought into the car. For ACCESS Linux Platform, the SIM Access profile serves as an interface between the Bluetooth chip and a phone module.











