Pairing iBeacon silently - ios

I'd like to know if there's a way (with public or private API) to pair my device with an iBeacon silently (without having to input the pincode manually).
Or if you know if there's an iBeacon device out in the market that does not include a pincode to pair with.
Thanks.

Pairing is not at all a requirement for iBeacons. What are you using as an iBeacon? For the time being, either you are using an iOS device to broadcast as an iBeacon or you are using a 3rd party device that broadcasts the iBeacon profile.
This iBeacon demo on GitHub will be a good place to see iBeacons broadcaster/client (both iOS devices) connecting (without passcodes, of course).
If you are looking for 3rd party iBeacons, Estimotes are seem to be the best route.

Related

Custom BLE Advertisement on iOS

I'm hoping to create a BLE advertisement on iOS where I can control the advertisement on a byte level.
One use case would be to mimic an iBeacon advertisement. What is the iBeacon Bluetooth Profile (I want to advertise while my app is in the background which is why I'm not using CoreLocation)
I do not see a way to do this with the Core Bluetooth API. Is this correct? Are there alternatives using private API's or jailbreaking?
As the others already pointed out, there is no API on iOS that allows you to do this.
You can advertise as an iBeacon, but only when your app is in the foreground. When in background, the advertisement is removed and therefore cannot be discovered anymore (except for other iOS devices which explicitly scan for that service UUID). Also see the documentation here: Core Bluetooth Background Processing
If you would share your use case and what you want to achieve, maybe there are other ways to realise it.
My experience with iOS is that if it is something is not exposed in the API, there is no way around, except jailbreaking. For Bluetooth low energy the API is at GAP/GATT level, and very little at the lower levels (if anything) is exposed. Advertising is a LL (link layer) feature.
To illustrate how restricted the access is: When scanning for BLE devices you will not have access to the advertiser's MAC address iOS. In Android you have it.
I do not see a way to do this with the Core Bluetooth API. Is this
correct?
Since you have to set Manufacture Specific Data in order to achieve this, if nothing has changed you will experience exactly the same issue that I did. Explained here:
The advertisement key 'Manufacturer Data' is not allowed in CoreBluetooth
It is not possible.

Bluetooth “out of band” (OOB) pairing on iOS?

I need to securely paired a bluetooth device to an iOS device,
I know that in Bluetooth 4.0 and 4.1 there is three way to do the pairing : Just Works, Passkey Entry and Out Of Band (OOB).
We need to use the highest security paring protocol, which it found to be the Out Of Band (OOB) method.
I know that apple used the OOB method for pairing the apple watch to an iPhone, at least they say so in the iOS Security Guide (at the end of the page 22).
So I'm wondering is there any API from apple that I can use for pairing my device with the OBB method, or maybe you can suggest me any other secure method.
Thank you so much for your help, it's highly appreciated !
The only available bonding (pairing) method in Core Bluetooth is passkey entry.
The Apple Watch uses an OOB technique involving an image captured by the phone's camera with a fallback to passkey, but this is not available to other apps.
If your device has a display and can generate a random passkey then this technique is much the same as OOB in terms of security. If your device doesn't have a display then the security depends on how the passkey is shared (e.g. fixed passkey such as 0000 for all devices, not very secure. Random passkey for each device on a sticker is more secure)

HM-10 and iOS/iBeacon. Communicating between the two

I am trying to wrap my head around the possibilities of the HM-10 but am very new to a lot of how it works. I am only familiar with higher level things.
I originally thought I was going to use the hm-10 as an iBeacon but quickly found out it's limitations. Here was the original plan prior:
iBeacon(HM-10) broadcast in a particular room, when I walk in with my iPhone, it detects my iPhone and then does something, i.e Sets one of its Pins to High.
But based on my research now, this is not possible with iBeacon? I need to use iBeacon broadcasting in hand with regular bluetooth?
As in, upon my App/Phone detecting the iBeacon it then pairs with the HM-10 and sends an AT- command to set one of the pins HIGH.
Does all of this make sense? Could anyone provide some more input?
I am in the process of putting together an iPhone App but just wanted to know if I am on the right track.
Since the HM-10 is based on the CC2540, it should be possible to turn it into a Bluetooth LE beacon, including one that supports an iBeacon format.
A few thoughts to help your understanding:
Standard Bluetooth LE beacons (AltBeacon, iBeacon, URL beacon) are transmit only devices that don't detect phones -- phones detect them using a custom app. So when you say "it detects my iPhone and then does something" this is diverging from a standard Bluetooth LE beacon.
The concept of "pairing" with a Bluetooth device is typically related to Bluetooth classic (e.g. pre-4.0) technology. Bluetooth LE devices like the beacons mentioned above have the concept of connecting to read and write GATT characteristics.
If you do build a custom BLE device that out of a HM-10/CC2540, it would be possible to make it "detect" mobile phones, perhaps by advertising a GATT service, and then doing something upon connecting and/or writing to a characteristic. Since the CC2540 contains GPIO pins, it would be possible to make it "do something" by making a pin go high.
There are two big chunks of work to doing what you describe: (1) writing custom firmware for the CC2540 and (2) writing an iPhone app using CoreBluetooth and/or CoreLocation iBeacon APIs. Before starting on the iOS side, you need to figure out how the Bluetooth device is going to work.

How to check if my Qualcomm gimbal beacon is working or not?

I have currently bought a Qualcomm Gimbal Beacon device. But when I added my device at Gimbal's developer site it shows that the firmware and battery level is unknown.
I don't know whether my device has been added or not and I also don't know how to detect my gimbal beacon through my iOS app.
Any help will be great. Thanks in advance.
If the beacons listed under your Gimbal Developer Account show unknown values for the firmware and battery levels that means your phone isn't communicating with the beacons. I suspect it has to do with the way the application being built has been configured with the Gimbal SDK or the sample app wasn't setup to work with your Gimbal Developer Account.
Once everything is configured correctly then when your phone comes in proximity of a Gimbal beacon it will capture everything about that beacon and then send it to Gimbal's backend service. The end result will be the correct status of the firmware and battery levels on your Gimbal Developer Account.
I suggest using the various Gimbal surveying tools available for download on their website to detect beacon signals, measuring effective ranges, etc. You will likely use them quite a bit to do proper surveying. Granted, you could always bake this functionality into your own app if desired.

Gimbal beacon discovery

Is it possible to discover Gimbal beacons using the iOS SDK? I want to use simple ranging but I don't know the UUID of the transmitter.
YES, you can use Gimbals as iBeacons. You have to re-configure it using iBeacon configuration.
Login to Gimbal website, create an account if you don't have one.
https://proximity.gimbal.com/
Open Proximity tab. Click on Manage Configuration button at the top and create new configuration, select iBeacon as beacon type, assign UUID, major and minor. You can choose any UUID you'd like.
Now register your Gimbal beacon, and select your new configuration. You must open the beacon to get to the Factory ID that is required to register.
Download Gimbal manager app for iPhone, open it, select "Configure" option. Open Gimbal and remove battery, put the batter back in, and you should see your beacon in the Gimbal Manager app, click the Update button.
That's it, now you your Gimbal is in iBeacon mode.
If anyone interested, I found this useful post on http://beekn.net/2013/12/inside-gimbal-qualcomm-beacons-tackle-bluetooth-le-challenges/:
Actually, you can’t sniff the iBeacon UUID as Gimbal use their own implementation for their beacons. They use BLE to transmit encrypted IDs that change with each broadcast, so it needs to validate with the SDK / API to confirm which beacon ID this ties up to.
update: davidyoung is right. There is some info that I skipped in Gimbal's documentation:
If your application's use case requires you to use iBeacon technology, the Gimbal Series 20 beacon can be configured to broadcast iBeacon compatible BLE packets. To learn how to configure a beacon to be iBeacon compatible please read the Proximity Quickstart Guide. The Proximity framework makes it very easy to use both iBeacons and Gimbal beacons from the SDK and lets you manage them through the Gimbal Manager Portal.
Interesting - I recently received a reply from Radius Networks that said ScanBeacon cannot identify Gimbal beacons - at least that's how I read it..
"Scanbeacon should display any device that is transmitting an ibeacon advertisement.
We have had several reports that the little blue beacons that Qualcomm has been making available are not showing up with ScanBeacon.
Our own investigation into these units is that they are not advertising the iBeacon identifiers.
There may be some configuration or other steps that need to be taken that we are not aware of.
But the out-of-the-box state of the Qualcomm beacons appears to be no iBeacon advertisement."
To use iOS, you will need to know the UUID.
There are some other options that do not require knowledge of the UUID.
If you have an Android device w/ 4.3 or later and support for BT4.0, you can use the free Locate application at the following link. https://play.google.com/store/apps/details?id=com.radiusnetworks.locate
If you have a Mac w 10.9 or higher and support for BT4.0, you can use the ScanBeacon app ($9.99) available on the Mac App Store or at this link. http://www.radiusnetworks.com/scanbeacon-app.html
Good luck, and make sure you report back your findings to rest of the community!
David
Full Disclosure: My colleagues just firmly reminded me that I'm misbehaving by not noting that I work for Radius Networks, who provides the tools listed above, and am the developer of the second tool listed, ScanBeacon.

Resources