Bluetooth 4.0 is same as Bluetooth 4.0 LE? , i.e. iPhone4s supports bluetooth 4.0,
does that mean iPhone4s supports bluetooth 4.0 LE ?
I know that bluetooth 3.0 != bluetooth 3.0 HS
My android phone project, msm7225A platform, bluetooth chip is WCN2243.
which version can be defined?
In short, from hardware and software aspects, how to confirm Bluetooth version
(when using bluez stack, and take android phone for an example)
it is really a problem that confusing me for a long time.
appreciate anyone give some help.
Not sure if I got your questions correctly, but maybe this helps:
Bluetooth 4.0 specifies two modes of operation: "classic" Bluetooth and "Bluetooth Low Energy (LE)". iPhone 4S's Bluetooth is dual mode, i.e. it supports both classic & LE. IOS, though, only supports programming the latter (LE) directly via the public CentralManager API. There is no way to directly access the "classic" Bluetooth stack in IOS.
The standard Android SDKs only support classic Bluetooth. If you want to use LE, this answer suggests to use a manufacturer API.
BlueZ supports LE's GATT server at least. I haven't worked with that though, so I can't tell how complete LE support is. If you're about to use BlueZ directly on Android phones, mind that this will only work if the user has root access.
To answer more generally, LE could/should also have been published without calling it "Bluetooth" at all. So to determine if the hardware/software supports classic and/or LE, you'll have to look at the specs for each platform you're targeting.
Related
Bluetooth 4.1 introduced the Internet Protocol Support Profile, which "proposes the support of exchanging IPv6 packets between devices over the Bluetooth Low Energy transport." This Profile bypasses the regular GAP and GATT protocols and heads down directly to the L2CAP layer. It defines a "Node" and "Router" role. How would this be implemented on the Android side?
file:///Users/shreyashirday/Downloads/INT_IP_Support_Profile_SPEC_V1.0.0%20(1).pdf This was useful for an overview, but I'm not even sure current Android can support this.
I am also curious whether some Android devices support this already or not.
As for the profile, the best way to get an understanding of it is the following 2 RFC's:
https://www.rfc-editor.org/rfc/rfc4944
https://www.rfc-editor.org/rfc/rfc7668
The first one describes 6LoWPAN - IPv6 over low power networks. The second one describes how 6LoWPAN is implemented specifically over Bluetooth LE.
The Bluetooth SIG IPSP spec is light on the implementation details and just provides the framework for the details in these two RFC's.
The two implementations that are available right now seem to be BlueZ running on Linux v. 3.18 or newer, and the Nordic Semiconductor nRF52 development boards. If there are more implementations available I would like to hear about them.
Since IPSP requires L2CAP Credit-based flow control mode, also called LE Data Channels, support for this is mandatory in the Android's Bluetooth stack. It is supported by since a while blueZ.
When that's the case, there could be an internal implementation that has low-level access to the stack. If not, Android would need to support it in the higher level Java APIs.
So, you're best bet would be to get/find an Android device that can run blueZ. There, IPSP is at least in the works if not complete, see e.g. https://github.com/NordicSemiconductor/Linux-ble-6lowpan-joiner/blob/master/readme.md
I have tried looking at http://developer.android.com/guide/topics/connectivity/bluetooth-le.html and searching google but I am unable to figure out the following:
If I am using a regular Bluetooth capable Android device, can I communicate with a BLE device? Thanks in advance!
Depends on the Android device. Bluetooth Low Energy is a protocol defined within Bluetooth 4.0. If you mean by "regular Bluetooth capable Android device" a Bluetooth version prior to 4.0, then it is not possible to connect. But there are Android devices shipping with BT 4.0. Those will work.
Bluetooth Low Energy is nearly a completely different thing than regular Bluetooth except for the branding. However, a lot of Bluetooth 4.0 devices support both regular Bluetooth and also LE. The only ones I've seen that don't support both are little devices that rely on low power usage.
Any cell phone with Bluetooth 4.0 will also support regular Bluetooth.
Does anyone know the best way to detect Bluetooth LE advertisements on a Android device? I need to only retrieve the service UUID and RSSI value from the advertisement packet, I don't need to connect with the device--If this makes a difference. Do I need to use one of the vendor specific Bluetooth API's like Broadcom for a device that contains a Broadcom bluetooth module?
As of Android version 4.2, the Broadcom stack has been integrated into Android and will work out of the box. Prior to that you needed to run another stack to give BLE access, as stock Android had no APIs.
As of SDK 18 Android now has APIs for this. However, in my testing they do not work properly on the Nexus 4 with 4.3.
See documentation here:
http://developer.android.com/guide/topics/connectivity/bluetooth-le.html
I am involved in a Android Project that connects the sensor using Bluetooth 4.0. AFAIK android didn't support Bluetooth 4.0. I tried with my laptop bluetooth 4.0. I tried with Broadcom using this. Later i came to know my Laptop Bluetooth 4.0 is Atheros Bluetooth 4.0 and later i searched for Atheros Bluetooth 4.0 API using android mobiles and tablets. I saw Qualcomm having Bluetooth 4.0 tablet. I want to know, is Atheros giving API for Bluetooth 4.0 for Android SDK.
Finally, long way of search, i found that up to today(23/12/12), Atheros not giving Bluetooth API for developers. But they are providing other API's for Audio, Camera, Device Info and Sensor(mobile shake). So, can't try on laptop also. Dgel comment and link helped me a lot and made me, come to the conclusion.
Android Bluetooth (and other) API's are not specific to the hardware (or software stack).
They are generic and fairly high-level, and Yes they include Bluetooth 4.0.
The actually support for BT 4 depends on the device. Recent Nexus devices support BT4 (both in hardware and in software) as long as they have the Android 4.2 update.
If you root your device you can get to the 'raw' vendor API's, but I don't know what that looks like for BT4, or wheteher any of that is published. In most cases that is Broadcom based, not Atheros.
EDIT:
I just saw this:
http://code.google.com/p/broadcom-ble/
I'm not familiar with this, but I suspect that it was just a stop gap measure before BT4 was added to the official Android API in 4.1.
Is there a library available to allow applications to utilise Bluetooth LE in Linux?
Similarly, I know the Motorola RAZR offers a proprietary API but do other devices with dual mode Bluetooth chips (i.e. Galaxy S III) offer an API for Bluetooth LE?
As for Linux...
I've been doing a lot of work with this in Python and unfortunately the existing libraries for LE are either bleeding edge or missing some things. The Bluez 5.X series has support for LE through DBUS. The kernel requirements for it were much higher than the device I needed to use so I was left having to do things by using raw sockets.
With Bluez 4.x I think everything can be done by using raw sockets, setting socket options, and very occasionally an ioctl call. In Python, however, a lot of the constants you need aren't there yet. I had to hack together some modules using the Python C API so I could import the constants from the library header files. If you're okay with doing everything in C you'll find full functionality there.
I know many people are using Broadcom BLE for developing BLE on Android devices.