Wat is het iBeacon Bluetooth-profiel

Ik wil graag mijn eigen iBeacon maken met enkele Bluetooth Low Energy-ontwikkelkits. Apple heeft nog geen specificatie voor iBeacons vrijgegeven, maar een paar hardwareontwikkelaars hebben de iBeacon reverse-engineered vanuit de AirLocate Sample-code en zijn begonnen met de verkoop van iBeacon-ontwikkelkits.

Dus wat is het iBeacon Bluetooth-profiel?

Bluetooth Low Energy gebruikt GATT voor detectie van LE-profielservices. Dus ik denk dat we de attribuuthandle, attribuuttype, attribuutwaarde en misschien de attribuutmachtigingen van het iBeacon-attribuut moeten weten. Dus voor een iBeacon met een UUID van E2C56DB5-DFFB-48D2-B060-D0F5A71096E0, een hoofdwaarde van 1 en een kleine waarde van 1 wat zou de Bluetooth GATT-profielservice zijn?

Hier zijn enkele veronderstellingen die ik heb gemaakt uit de discussie op de forums van Apple en via de documenten.

  1. U hoeft alleen de profielservice (GATT) van een Bluetooth-randapparaat te zien om te weten dat het een iBeacon is.

  2. De majeur- en mineurtoetsen zijn ergens in deze profielservice gecodeerd

Hier zijn enkele bedrijven met iBeacon Dev Kits die dit al lijken te weten:

Hopelijk zullen we mettertijd een profiel op Bluetooth.org plaatsen zoals dit: https://www.bluetooth.org/en-us/specification/adopted-specifications


Antwoord 1, autoriteit 100%

Voor een iBeacon met ProximityUUID E2C56DB5-DFFB-48D2-B060-D0F5A71096E0, major 0, minor 0en gekalibreerde Tx Power of -59RSSI, het verzonden BLE-advertentiepakket ziet er als volgt uit:

d6 be 89 8e 40 24 05 a2 17 6e 3d 71 02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 52 ab 8d 38 a5

Dit pakket kan als volgt worden onderverdeeld:

d6 be 89 8e # Access address for advertising data (this is always the same fixed value)
40 # Advertising Channel PDU Header byte 0.  Contains: (type = 0), (tx add = 1), (rx add = 0)
24 # Advertising Channel PDU Header byte 1.  Contains:  (length = total bytes of the advertising payload + 6 bytes for the BLE mac address.)
05 a2 17 6e 3d 71 # Bluetooth Mac address (note this is a spoofed address)
02 01 1a 1a ff 4c 00 02 15 e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 00 00 00 00 c5 # Bluetooth advertisement
52 ab 8d 38 a5 # checksum

Het belangrijkste onderdeel van dat pakket is de Bluetooth-advertentie, die als volgt kan worden onderverdeeld:

02 # Number of bytes that follow in first AD structure
01 # Flags AD type
1A # Flags value 0x1A = 000011010  
   bit 0 (OFF) LE Limited Discoverable Mode
   bit 1 (ON) LE General Discoverable Mode
   bit 2 (OFF) BR/EDR Not Supported
   bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller)
   bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host)
1A # Number of bytes that follow in second (and last) AD structure
FF # Manufacturer specific data AD type
4C 00 # Company identifier code (0x004C == Apple)
02 # Byte 0 of iBeacon advertisement indicator
15 # Byte 1 of iBeacon advertisement indicator
e2 c5 6d b5 df fb 48 d2 b0 60 d0 f5 a7 10 96 e0 # iBeacon proximity uuid
00 00 # major 
00 00 # minor 
c5 # The 2's complement of the calibrated Tx Power

Elk Bluetooth LE-apparaat dat kan worden geconfigureerd om een ​​specifieke advertentie te verzenden, kan het bovenstaande pakket genereren. Ik heb een Linux-computer geconfigureerd met Bluez om deze advertentie te verzenden, en iOS7-apparaten met Apple’s AirLocate-testcode pikken het op als een iBeacon met de hierboven gespecificeerde velden. Zie: BlueZ Stack gebruiken als randapparatuur (adverteerder)

Deze blogbevat alle details over het reverse engineering-proces.


Antwoord 2, autoriteit 20%

Het lijkt te zijn gebaseerd op advertentiegegevens, met name de gegevens van de fabrikant:

4C00 02 15 585CDE931B0142CC9A1325009BEDC65E 0000 0000 C5
<company identifier (2 bytes)> <type (1 byte)> <data length (1 byte)>
    <uuid (16 bytes)> <major (2 bytes)> <minor (2 bytes)> <RSSI @ 1m>
  • Apple Company Identifier (Little Endian), 0x004c
  • gegevenstype, 0x02 => iBeacon
  • gegevenslengte, 0x15 = 21
  • uuid: 585CDE931B0142CC9A1325009BEDC65E
  • groot: 0000
  • minderjarige: 0000
  • gemeten vermogen op 1 meter: 0xc5 = -59

Ik heb dit node.js-scriptwerkend op Linux met het voorbeeld van de AirLocate-app.


Antwoord 3, autoriteit 9%

Om het verschil tussen het antwoord van sandeepmistry en het antwoord van davidgyoung te verzoenen:

02 01 1a 1a ff 4C 00

Maakt deel uit van de indelingsspecificatie voor advertentiegegevens [1]

 02 # length of following AD structure
  01 # <<Flags>> AD Structure [2]
  1a # read as b00011010. 
     # In this case, LE General Discoverable,
     # and simultaneous BR/EDR but this may vary by device!
  1a # length of following AD structure
  FF # Manufacturer specific data [3]
4C00 # Apple Inc [4]
0215 # ?? some 2-byte header

Er ontbreekt een definitie van Service [5] in de AD. Ik denk dat het iBeacon-protocol zelf geen relatie heeft met de GATT en standaardservicedetectie. Als je het iBeacon-programma van RedBearLab downloadt, zul je zien dat ze de GATT gebruiken voor het configureren van de advertentieparameters, maar dit lijkt specifiek te zijn voor hun implementatie en maakt geen deel uit van de specificatie. Het AirLocate-programma lijkt de GATT bijvoorbeeld niet te gebruiken voor configuratie, volgens LightBlue en of andere soortgelijke programma’s die ik heb geprobeerd.

Referenties:

  1. Core Bluetooth-specificatie v4, deel 3, deel C, 11
  2. Vol 3, deel C, 18.1
  3. Vol 3, deel C, 18.11
  4. https://www.bluetooth.org/en- ons/specificatie/toegewezen-nummers/bedrijfs-ID’s
  5. Vol 3, deel C, 18,2

Antwoord 4, autoriteit 3%

Als de reden dat u deze vraag stelt, is omdat u Gebruik Core Bluetooth om te adverteren als een iBeaconin plaats van de standaard API te gebruiken, u kunt dit eenvoudig doen door een NSDictionary te adverteren, zoals:

{
    kCBAdvDataAppleBeaconKey = <a7c4c5fa a8dd4ba1 b9a8a240 584f02d3 00040fa0 c5>;
}

Zie dit antwoordvoor meer informatie.


Antwoord 5, autoriteit 2%

Het is heel eenvoudig, het adverteert gewoon met een tekenreeks die een paar tekens bevat die voldoen aan de iBeacon-standaard van Apple.
u kunt verwijzen naar de link
http://glimwormbeacons.com/learn/what-makes-an- ibeacon-an-ibeacon/


Antwoord 6

iBeacon-profiel bevat 31 bytes, waaronder het volgende

  1. Voorvoegsel – 9 bytes – inclusief s de adv-gegevens en fabrikantgegevens
  2. UUID – 16 bytes
  3. Hoofd – 2 bytes
  4. Minder – 2 bytes
  5. TxPower – 1 Byte

voer hier de afbeeldingsbeschrijving in

Other episodes