I've got several pieces of Ibeacon signal sender from online sellers(all small business, no brand), they're quite cheap and small, and can support configuration by my IPad mini, which include the 'device name', 'Proximity UUID', 'Broadcasting interval' and etc. Now it even works in my android phone:
My question is: Is that possible to make these Ibeacon devices to detect other BLE4.0 devices around and send out the data? because as I understood, Ibeacon itself is a full BLE4.0 support device, seems like people removed some basic functions by some purpose.
My purpose is to embedded these ibeacon devices in my ARDUINO board, by connected their serial port, it works not only a Ibeacon sender, but also can detect other BLE4.0 devices around and send their advertising data to ARDUINO board to further process.
Radius Networks published a tutorial and howto on how to make a Raspberry Pi iBeacon transmitter also scan for other iBeacons and report their identifiers to the system to turn a lamp on and off. While this is on a different platform, it closely matches what you describe and probably has concepts helpful for an Arduino implementation.
Full disclosure: I am Chief Engineer at Radius Networks.
iBeacon is just a particular implementation of a BLE advertisement. Its purpose is simply to advertise the UUID, major and minor numbers.
As you say, these devices are built around BLE 4.0 chipsets and many do implement other BLE peripheral services for configuration. There is nothing stopping you from creating custom firmware for the device to communicate with something like an Arduino, but the ability to do it on any given piece of hardware will depend on what chip they are using and your ability to attach to the device to upload new firmware and access appropriate pins for communication with your Arduino using a serial port or SPI.
Related
I want to develop two Android applications out of which one application should act as a Beacon. That is, one of my application installed in one device should listen certain events from the other app installed in other device and should broadcast some information on listening those events.
I read many articles and I found that the Android device must have Bluetooth LE hardware and it must have peripheral mode enabled by the device manufacturer. But most of the manufacturer as well as Google itself has disabled peripheral mode.
So my question is there a way (a Beacon library available?), so that I can make my application to act as Beacon.
Thanks in Advance.
You can use the Android Beacon Library to make a device both transmit as a beacon and detect/decode beacon transmissions.
It is true that devices must have BLE hardware for this to work, Android 4.3+ to detect beacons and Android 5.x+ to transmit as beacons. While not all devices with 5.x+ support peripheral mode needed to transmit, most popular devices do. Google has not disabled this, and their newer Nexus and Pixel devices support transmission as well.
The library linked above has a list of devices known to support transmission, and includes example code showing how to determine this at runtime on a specific device.
If a device does not support peripheral mode, there is nothing you can do short of rooting the device and trying to write a new Bluetooth driver yourself.
Is it possible to use an Android Wear device as a Bluetooth Low Energy beacon, separately from its connection to the phone?
I'm working with iBeacons that connect to both iOS and Android devices, and the iBeacon (Bluetooth Low Energy) capabilities of various mobile devices vary widely.
Most of Apple's devices (iPhones, recent iPads, and laptop/desktop devices) can transmit as an iBeacon. Only certain recent Android devices can do so, e.g. the Nexus 6 and Nexus 9.
I just purchased a Moto 360 to play around with and it does use BLE to transmit to the paired device, but I'm curious if I can write an app that will cause it to transmit arbitrary packets and an arbitrary UUID. Has anyone done that? It seems as though it should be possible. I've gone through the Android Wear developer's site but have not found any discussion of this topic.
Thanks for any ideas, links to web sites, etc.
UPDATE:
I just test my answer below and it seems like the Android.Bluetooth.LE namespace is not available for Android Wear. I'm afraid I have to say that (currently) it is not possible for an Android Wear device to broadcast as a beacon using native java Android.
EXPLANATION:
You can perform that test yourself. You mentioned you have a Moto 360. Just deploy a test app to it that gets the Bluetooth system service as BluetoothManager and test wether the adapters BluetoothLeAdvertiser property is not null.
((BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE))
.getAdapter().getBluetoothLeAdvertiser() == null
((BluetoothManager) this.getSystemService(Context.BLUETOOTH_SERVICE))
.getAdapter().isMultipleAdvertisementSupported() == null
You can use Android's native beacon broadcasting libraries or use a 3rd party library like AltBeacon to broadcast arbitrary beacon data.
I'm creating an app in which a key piece is transferring data when two people press a button on the app on their respective devices and then press their phones together (Yes, Bump on Android does this. That isn't the point). I know I could use NFC on Android to get this done. However, I wouldn't be able to do this on iOS because iOS doesn't support NFC. Earlier today I read about and discovered iBeacon, which is apparently some Bluetooth 4.0 implementation that works with both iPhones and Android devices. I've read about retail use-cases of iBeacon, where stores could set up beacons and when users walk by or are close enough, it'll trigger an action. Is the use-case of mimicking NFC for my purposes to be able to do reach iPhone users plausible? Should I be using another solution? Is this not the purpose of iBeacon and it wouldn't work?
From my experience with iBeacon on Android, you can indeed use it to replace NFC, as there are 3 'ranges' (immediate, near and far). iBeacon is based off BLE (Bluetooth Low Energy) and very light on power consumption as the name would suggest.
If you are trying to trigger actions on devices in a certain vicinity, i'd say using iBeacon is the most plausable method.
Android doesn't natively support 'iBeacon' as Apple created it, but it is based off Blueooth 4.0, a library has been created to mimick the iOS implementation of iBeacon
Android iBeacon Library
One thing to note, is that when using iBeacons, you cannot transmit data. Only two numbers (a major, and minor) and a UUID used solely for identification purposes.
The main problem with using iBeacons for this is that iBeacons are transmit only devices designed only to alert phones to their presence. The technology cannot exchange data.
You could do something like you describe with low-level programming with Bluetooth LE technologies, but iBeacons alone cannot do the job.
When I connect the dongle to the Android mini PC it's obviously not going to be able to function as an iBeacon(and by iBeacon here I mean the actual hub that enables nearby devices to communicate) right away. What do I have to do to turn it into an iBeacon? Is there some library I can easily install? Or do I have to do something crazy like reverse engineer the "iBeacon protocol"?
Unfortunately, Android devices cannot act as iBeacons without heavy low-level modifications. See here.
The answer above is for Android phones, but the same obstacles apply to a mini PC. Connecting an external Bluetooth dongle is just the first challenge. You would then need to overcome these hurdles:
Root the device
Write and install a driver for the Bluetooth dongle
Install AOSP custom ROM to enable Peripheral mode support.
Write code to make the device send out the standard BLE iBeacon advertisement.
This is probably way more than you want to bite off!
There isn't really an "iBeacon protocol" - iBeacon is just a standard BLE advertisement packet with a known UUID (identifying it as the iBeacon service). It also is not a communication channel - as in centrals do not exchange information with the peripheral doing the advertising. See this answer for a really good breakdown of the packet you need to send to mimic iBeacon.
To answer your question - there are BLE dongles (like the Bluegiga BLED 112) that allow you to flash the BLE service onto the dongle, so it may just requires power from the host to begin advertising the service. I haven't tried this, but this kind of flashable BLE dongle seems like your easiest route - though the host being Android is rather irrelevant at that stage.
I want to know how iBeacon works actually. I found the sample code of AirLocate, but couldn't figure out how it works. iBeacon is works on BLE, so it may be possible for do data communication with other BLE supported devices via bluetooth?
As it possible to make data transfer between iOS - android device via bluetooth using BLE or beacon?
iOS had already announced iBeacon technology, but didn't find out any technical specification document regarding this. I also want to know how it works on android?
Can some one please describe about this technology and is it possible to make data-communication via bluetooth between iOS-iOS device, and iOS-Android Device?
No, you cannot communicate between devices using iBeacons because an iBeacons are transmit only. Mobile devices, both iOS and Android can both hear iBeacons, but they cannot talk back.
iBeacons work by transmitting a 3-part identifier and a transmitter power reference value every second (or more often.) That's it. They do nothing more. SDKs in iOS and Android listen for these signals and report them to your app, but the rest is up to the app developer.
What you suggest may be possible with a custom Bluetooth LE beacon, but it would need to be significantly more complex than an iBeacon, and you would have to build your own.
Here are a couple of links to give you more info:
How iBeacons work on Android from Radius Networks
iBeacon overview by Dave Addey
Full disclosure: I work for Radius Networks.