12. Eddystone™, what’s so special?
Openness
• It is an open Bluetooth 4.0 protocol
• While iBeacon™ is officially
supported by iOS devices only,
Eddystone™ has official support
for both iOS and Android
Packet types / frames
• Eddystone-UID (identifier)
• Namespace as UUID
• Instance (6 bytes), much like Major
and Minor
• Eddystone-URL
• Eddystone-TLM (telemetry)
• battery voltage
• temperature
• number of packets since last reboot
• beacon uptime since last reboot
13.
14. Hardware
Phones can become Smart Beacons
themselves
• TxEddystone-UID (Android Lollipop 5.0)
Almost all devices with BLE can
become Smart Beacons themselves
• BlueGiga BLED112 Dongle
• Cambridge Silicon Radio CSR1010 (Beacon
Development Board)
• Rfduino
• Linux (bluez)
• ARM mbed (Nordic nRF51-dongle, nRF51-DK)
• Node.js (node-eddystone-beacon using
bleno)
• Arduino (BLEPeripheral), using Nordic
Semiconductor's nRF8001 or nR51822
https://github.
com/google/eddystone/tree/master/eddyst
one-uid/tools/txeddystone-uid
15. Some Bluetooth® Facts
• Bluetooth / BLE
is a wireless protocol
• Bluetooth uses UHF radio waves in
the ISM band from 2.4 to
2.485 GHz divided into channels
with frequency hopping
• Signal strength is an indicator for
proximity (RSSI, received signal
strength indicator)
• BLE has reduced power
consumption
• Bluetooth SIG predicts more than
90% of Bluetooth-enabled
smartphones will support the low
energy standard by 2018.
19. Prerequisites
• Real device with BLE (emulator has
no Bluetooth™ support)
• Alternative emulator http:
//stackoverflow.
com/questions/20348743/blue
tooth-low-energy-on-android-
emulator/27712017
• Android 4.3 (Jelly Bean, API Level
18)
• Android 4.4.4 (KitKat, API Level
19) fixes some issues (e.g.
https://code.google.
com/p/android/issues/detail?
id=67272)
• Android 5.0 (Lollipop, API Level
21) recommended due to some
API changes (e.g.
Advertisement and LE Scanner)
20. BLE Permissions for an App
•
<!– Allow any Bluetooth communication -->
<uses-permission android:name="android.permission.BLUETOOTH"/>
<!– Allow device discovery -->
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
•
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true“
/>