0

I have Jaalee beacons. I tried to connect to them from various phones via various ways including both ibeacon and core bluetooth but all the time I get new identifiers. It means if I don't move and try iphone1 then I get set1 of beacon uuids, then I try iphone2 and get set2, then I try iphone1 and get set1 again. And there are no element which belongs to set1 and set2 simultaneously.

I tried other variables and properties but it seems all of them are common for beacons or different on various iOS devices. How to solve this issue?

user3798020
  • 75
  • 1
  • 10
  • You either need to contact the manufacturer or engage in reverse engineering using something other than an iOS device. If they are sending iBeacon messages, you will not be able to get their static unique identifiers with core bluetooth, and you won't be able to discover them with the iBeacon APIs until you know their region UUID - while if they are not iBeacon format, you first have to figure out what they are. Most other BLE-capable platforms (recent Android, desktops including OSX, etc) do not have that limitation and so are preferable for figuring out what is going on. – Chris Stratton Jul 22 '14 at 14:52

2 Answers2

1

Solved. For my case (Jaalee beacons) I should perform a lot of actions in the following order:

  1. scan for beacons
  2. store beacon I found into a dictionary and request its service list
  3. if I get service list then I request characteristic list
  4. if I get characteristic list then I request value for characteristics I need
  5. If all the previous steps are successful then I get beacon proximityUUID, major and minor which are all in common represent "unique identifier"

All these steps are called asynchronously. Additionally I should delete from dictionary of beacons I found on disconnecting from them. I should also check on some steps if a beacon is still connected.

UUID which is "too unique" I use for a key in a dictionary because the beacon objects are called asynchronously.

user3798020
  • 75
  • 1
  • 10
  • This seems only likely to work if your beacons are exposing the same information in both the iBeacon-formatted advertising packet and in BLE characteristics. – Chris Stratton Aug 11 '14 at 16:39
  • I haven't a possibility to try other beacons but it seems I should perform all these steps anyways. And only in the last step I could decide how many characteristics should I use for unique identifier: I could use proximityUUID only or up to all the 3 characteristics Apple recommends. – user3798020 Aug 12 '14 at 06:49
  • No. Most beacons have no characteristics providing unique identity. And you should not use the region UUID alone, as on iOS you can only search for a few unique know values at a time, while you can find 4+ billion unique major/minor combos per region. – Chris Stratton Aug 12 '14 at 08:21
  • I shouldn't but I can. Additionally beacons have "name" which allows to filter some extra results – user3798020 Aug 12 '14 at 08:26
  • No, most beacons don't have a name. The only thing you can depend on is region UUID, major, and minor. – Chris Stratton Aug 12 '14 at 08:33
0

I suspect the reason you are seeing a different UUID each time is because you are using CoreBluetooth, and CoreBluetooth does not give you the beacon's ProximityUUID -- it gives you the Bluetooth session UUID which is randomly generated in iOS. See here for details.

If you want a tool to figure out the ProximityUUIDs and you have a Mac, you might try ScanBeacon ($10) or the free Beacon CLI.

Full disclosure: I am Chief Engineer at Radius Networks which makes the above products.

Community
  • 1
  • 1
davidgyoung
  • 63,876
  • 14
  • 121
  • 204