Using Android, is there a way to know which is the hardware manufacture and more details about the Bluetooth hardware of the device I'm using?
I have different behavior of my Bluetooth app using different device (smartphone LG and Sony tablet) and I'd like to get inside.
Yes, Android BT stack is based on bluez. You can use hciconfig to interact with the hardware device and get info about exact capabilities and manufacturer. Here's a link describing this: https://sites.google.com/a/android.com/opensource/projects/bluetooth-faq
Related
So I have a Linux with old BT2.0. I want to use it as iBeacon. Energy consumption is not my concern; the only one is API. Is it possible?
Unfortunately no. iBeacon and beacons in general depend on BLE advertisements, and this was introduced as part of the Bluetooth Low Energy features that are part of BT4.0. The only way around this is if you added a BT4.0 HCI dongle or a Bluetooth v4.0 device to your Linux machine.
You can find more information here:-
5 Things to Know about Beacon Technology
BLE Beacon Technology Made Simple
What are BLE Beacons
Pluggable USB Bluetooth v4.0 Dongle
Best Bluetooth Adapters in 2020
You will also need a relatively new version of Linux in order to have BlueZ support for BLE. Ideally your laptop should be on Linux v4.4 or later, but theoretically this should work from Linux v3.13 onwards. More details are found here:-
Bluetooth Linux Kernel Supported Versions
Checking BLE Capability on Linux
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!
There are multiple ways how Bluetooth functionality is implemented in a system based on how much is implemented in the controller and host.
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)
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.
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.
I'm planning to replace the Beacon tag of my Bluetooth (BLE)-based localization System with a smartwatch. Therefore, the smartwatch has to be able to advertise bluetooth signals. However I can't find any information about smartwatches using BLE advertising methods. I actually don't want to use an additional smartphone which would be able to advertise. I already found that the iWatch and the Moto 360 are probably not able to advertise.
Does anyone know if there's (or will be) a smartwatch available that is able to advertise BLE signals?
Thanks a lot!
el Baum
Ok, this is not possible for Sony Smartwatch atleast. This is because in order to be able to broadcast a BLE advertisement of your choosing, any given Android device has to be able to support BluetoothAdapter.isMultipleAdvertisementSupported(). Unfortunately, this feature is not available on most Android Wear devices.
If your Android device does support multiple advertisement, then you can create an advertisement packet and use the BluetoothLeAdvertiser object to start advertising.
I have to test Ble devices with an App on iOS and Android, the scenario is having multiple device sending signals and it is difficult to figure out which device is connecting to what phone.
Is there a better way to test and what are some of best tools for checking the status of ble devices like signal strength and other characteristics.
I've been using LightBlue Explorer to poke at BLE devices to see characteristics and values. It can also emulate devices once it's seen a real one.
I ultimately ended up writing my own Device Simulator on iOS. This lets me generate a controlled BLE service/characteristic, with full control of the device name, advertised broadcast name, and characteristic values.
I have Quectel M66 modem which is bluetooth enabled. I need some hints about how can I provide internet to my embedded device (which has M66 as a peripheral) using Android or iOS, or other device which supports bluetooth tethering.
I believe Android has that feature by default. Take a look at this link:
https://www.androidpit.com/share-wifi-over-bluetooth
I believe you can just approach the tethering device as a wifi acces point following the above guide.
This link sheds some light on choosing what tethering approach is appropriate:
http://m.pocketnow.com/2014/03/21/tethering-methods
My initial thought was "why would you want to tether through Bluetooth?" but looking at the power consumption, it might be a good choice for an embedded system, or if Wi-Fi is not available on the board.