Bluetooth Versions Walkthrough, and Bluetooth 4.0 Low Energy Development Resources
I’ve seen more and more Bluetooth 4.0 LE devices in the last few months including RFDuino, Wimoto Motes, TI SensorTag, and Scadanu Scout, so I thought it would be good to write a bit about Bluetooth. First, I’ll write about the different version of Bluetooth, since I was still confused with the practical implications between the versions, and then I’ll show some development kits and software resources to play around and/or develop Bluetooth 4.0 LE applications both on devices and hosts.
- Bluetooth v1.0 and v1.0B
The Bluetooth 1.0 Specification was released in 1999, and according to an entry in Wikipedia, 1.0 and 1.0B devices had many issues, mainly interoperability issues. You won’t find any Bluetooth 1.0 device today.
- Bluetooth v1.1
Bluetooth v1.1 was ratified as IEEE Standard 802.15.1-2002 in 2002. It fixed many issues found in the previous specifications, added the option to use non-encrypted channels, as well as Received Signal Strength Indicator (RSSI). This standard has been superseded by v1.3, and there are now very few devices that only support Bluetooth 1.1.
- Bluetooth v1.2
Bluetooth v1.2 (IEEE Standard 802.15.1–2005) is backward compatible with 1.1, and according to Wikipedia, it brings the following main enhancements:
- Faster Connection and Discovery
- Adaptive frequency-hopping spread spectrum (AFH), which improves resistance to radio frequency interference by avoiding the use of crowded frequencies in the hopping sequence.
- Higher transmission speeds in practice, up to 721 kbit/s, than in v1.1.
- Extended Synchronous Connections (eSCO), which improve voice quality of audio links by allowing retransmissions of corrupted packets, and may optionally increase audio latency to provide better concurrent data transfer.
- Host Controller Interface (HCI) operation with three-wire UART.
- Introduced Flow Control and Retransmission Modes for L2CAP.
Although the standard is still active, I’m struggling to find many devices based on this version.
- Bluetooth v2.0 + EDR
Bluetooth v2.0 + EDR specification was released in 2004. v2.0 is backward compatible with v1.2, and the main difference is the introduction of Enhanced Data Rate (EDR) for theoretical data rates of about 3 Mbit/s (around 2.1Mbit/s in practice). EDR can also provide a lower power consumption.
EDR is an optional feature, so some products may support “Bluetooth v2.0”, but not EDR. One example was HTC TyTN phone. There are still many Bluetooth v2.0 products sold today, usually with EDR, but you may prefer devices with Bluetooth v2.1 + EDR.
- Bluetooth v2.1 + EDR
Bluetooth Core Specification Version 2.1 + EDR adopted on July 26, 20007, is fully backward compatible with 1.2, and the key improvement is the addition of Secure Simple Pairing (SSP). This improves pairing user-friendliness as no, or limited, user interaction is needed, and increases the use and strength of security. Other improvements include “Extended inquiry response” (EIR), which provides more information during the inquiry procedure, and sniff subrating, which reduces the power consumption in low-power mode.
The majority of low bandwidth Bluetooth devices, such as headsets, speakers, mouse and speakers, use this version of the standard.
- Bluetooth v3.0 + HS
Version 3.0 + HS of the Bluetooth Core Specification adopted by the Bluetooth SIG on April 21, 2009. provides theoretical data transfer speeds of up to 24 Mbit/s thanks to the HS (High Speed) in its name. This feat is not achieved over the Bluetooth link itself, but via an 802.11 link, usually Wi-Fi. Bluetooth is used for pairing. Like with EDR in the previous specifications, HS is optional, so you may find Bluetooth 3.0 devices without HS.
Other improvements include L2CAP enhanced modes, Unicast connectionless data, and enhanced power control. There are also many devices compliant with Bluetooth v3.0, not always with HS, including input devices such as keyboards and mice, and I fail to see why you’d ever need Bt 3.0 HID devices. Maybe it’s just a marketing trick, or I missed something. Bluetooth v3.0 + HS is the minimum version to select if you plan to transfer large files between your devices. I understand that although functionality and performance should be similar to Wi-Fi Direct, Bluetooth 3.0 +HS should consume less as the Wi-Fi link is only enabled during transfer.
- Bluetooth v4.0
The latest Bluetooth Core Specification version 4.0 adopted on June 30, 2010, includes Classic Bluetooth, Bluetooth high speed and Bluetooth Low Energy protocols. Bluetooth high speed is based on Wi-Fi in a similar (same?) fashion as Bluetooth 3.0 + HS, and Classic Bluetooth consists of legacy Bluetooth protocols.
Bluetooth low energy (BLE), previously known as WiBree or Bluetooth ULP, is aimed at ultra low power applications running off a coin cell, just like the 4 devices I mentioned at the top of this post. Instead of BLE, you’re more likely to see “Bluetooth Smart Ready” and “Bluetooth Smart” logos, respectively for hosts (e.g. PC, tablets, smartphones…) and sensors.
Bluetooth 4.0 also adds support for the Generic Attribute Profile (GATT), and Security Manager (SM) services with AES Encryption, both of which are used for BLE.
There seems to a lots of “Bluetooth 4.0” devices on sites such as Amazon, but most of them don’t show the logos “Bluetooth Smart Ready” or “Bluetooth Smart”, and they may not support BLE, or HS, so you’ll have to be smart, and make sure they support what you need. AFAIK, currently only iOS, Mac, Windows and some HTC and Samsung devices support Bluetooth 4.0 LE, but it will come to Android 4.3 (API Level 18). Some devices such as Samsung Galaxy S4 are said to support BLE, but I understand only the hardware is capable, and you’ll have to wait for a firmware upgrade to actually connect to Bluetooth 4.0 LE sensors.
Bluetooth 4.0 Low Energy Development Resources
There are two types of Bluetooth 4.0 LE chipsets:
- Single mode implementation where the low energy protocol stack is implemented solely. CSR1010, Nordic Semiconductor nRF8001, and Texas Instruments CC2540 are examples of such ICs. Those are to be used in “Bluetooth Smart” devices.
- Dual-mode implementation where Bluetooth LE is combined with a Classic Bluetooth controller. I understand those are used in “Bluetooth Smart Ready” computers and mobile devices, and USB dongles.
You’ll need different type of hardware depending on whether your develop a Bluetooth device, or a Bluetooth applications.
If you’re developing a Bluetooth device, you can consider the kits below:
If you’re developing a Bluetooth application, you can currently use the following:
- An Apple Mac OS X Lion with XCode with iOS 5.1 SDK and PTS Low Energy Radio Module
- Apple iPhone 4S
- HTC One X+, Droid DNA, or the HTC One which support Bluetooth Low Energy API via a proprietary API.
- Windows 8 machine with Bluetooth 4.0 Controller
Using Texas Instruments Sensortag to test your application could also be a good development tool.
Once you’ve sorted out the hardware you need the easiest way to get started is probably to download the “Bluetooth Quick Start Kit v2” which is available after a free registration, and provides the following:
- Bluetooth Low Energy Fundamental Concepts
- Custom Profile – ‘Hello Bluetooth’ Example
- “Hello World” Source Code for TI CC2540, Nordic nRF8001, iOS, Android , and Windows 8 custom profile.
- Air Interface Traces captured for the ‘Hello Bluetooth’ profile using Ellisys Bluetooth Explorer 400 and Frontline FTS4BT Bluetooth Protocol Analyzer and Packet Sniffer.
- GATT Schema Documentation & Tutorial
For Linux support, you may want to check “Bluetooth Smart Devices and Low Energy support on Linux” presentation at ELCE 2012, which explains the progress at the time (November 2012), and BLE support in BlueZ.
Comments pointing to errors, and/or providing interesting additions are more than welcome.