Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Location of Bluetooth Profile in Bluetooth System

My question is very basic.I need to know where does all Bluetooth profile such HID, HFP or HSP loaded in Bluetooth stack? Is it in Host layer or in Bluetooth Hardware Chipset such as USB dongle/module or in both Host and Chipset Side?

According to my understanding, we can implement Bluetooth profiles on Host side using packages like BlueZ but at same time Bluetooth chipset which is connected to Host should need some sort of firmware and logic(like CSVD, A-law ) inside its chipset.

A quote found in BlueZ Android package doc: "Wideband Speech support in HFP it is required that BT chip assumes mSBC codec". This means Host layer can implement that Profile only if BT chipset provides the low-level support like mSBC.

My Answer is like this: " We can build any Bluetooth Profile say 'X' on Host layer if BT chipset is equipped with underlining Low-level firmware which support the Profile 'X'".Please agree or disagree with my understanding.

PFA diagram of my understanding Position of profile and its low-level firmware

I need to select a USB Bluetooth dongle compatible to Raspberry Pi and customize the HID and HFP using BlueZ.

Advance Thanks to all Bright minds!

like image 623
ABHIJITH KINI Avatar asked Mar 06 '17 13:03

ABHIJITH KINI


People also ask

How do I find my Bluetooth profile?

To find your Bluetooth list on Android, go to the Settings app and select “Bluetooth.” Here, you should see a list of all the Bluetooth devices that are paired with your phone. If you don't see your device on this list, make sure that Bluetooth is turned on and try again.

What is Bluetooth pairing profile?

A Bluetooth profile is a wireless interface specification for Bluetooth-based communication between devices, such as the Hands-Free profile. For a mobile device to connect to a wireless headset, both devices must support the Hands-Free profile.

How do I change my Bluetooth profile?

Choose tion: Find the Settings app on your device, then select the app. Go to Bluetooth or the Bluetooth symbol by scrolling down. You can use Bluetooth if you toggle it on.

What is Bluetooth MAP profile?

MAP is a Bluetooth protocol designed specifically for message streaming in automobiles, which is why most smartphones are not equipped with that profile. It's used to transmit SMS, MMS, and e-mails between devices, such as between mobile phones and the Sync system.


1 Answers

There are multiple ways how Bluetooth functionality is implemented in a system based on how much is implemented in the controller and host.

  1. Everything in the controller - App, Upper stack, may or may not HCI(lower and upper stacks communicate through HCI commands and events), Lower stack. Example: Most of Bluetooth Mouse, Keyboard etc, where a single controller is responsible for everything (Bluetooth, RTOS/scheduler, Controlling LED's in the device, etc)
  2. App in Host and lower and upper part of stack in controller. May or may not implement HCI in controller. Example: Where we use a dedicated Bluetooth chip and integrate it with the Device. Here device will transmit application data to the Dedicated Bluetooth chip. All the Bluetooth protocol related things will be done from BT controller/chip. If you are using an HC-05 module with Arduino module, Arduino will transfer the serial data to the HC-05 module.
  3. App and upper stack in host and lower stack in the controller. Bluez, Bluedroid and all other stacks in Operating systems are of this type. This will communicate with the controller with HCI commands and events. Example: Mobile phones, Computers, TV with Bluetooth etc (Devices having a powerful Application processor)

So lets assume you are asking about the 3rd type. In this case your assumption is correct. Here all profiles are implemented in the host only. But protocols/codec needed to support them will be implemented in the controller(either firmware or hardware block). For example GAP(For BR-EDR) is implemented in the host but encryption and decryption algorithms are implemented in the controller as Firmware or hardware blocks. For A2DP profiles audio codec/decoders will be implemented in the controller. BT chip then transfers this audio data to host with I2S or other protocols. For BLE Security manager profile, encryption/decryption algorithm is implemented in the host itself, But whitelist, auto connection etc, will be implemented in the controller.

My Answer is like this: " We can build any Bluetooth Profile say 'X' on Host layer if BT chipset is equipped with underlining Low-level firmware which supports the Profile 'X'".Please agree or disagree with my understanding.

For BlueZ use case this is correct. You need to use the controller with the required hardware capabilities(Firmware + hardware resources).

For the scenarios 1 and 2 the profiles and supporting protocols will be implemented in the controller.

like image 152
Nithin P Avatar answered Oct 29 '22 09:10

Nithin P