itsource

iBeacon Bluetooth 프로필이란?

mycopycode 2023. 6. 26. 21:20
반응형

iBeacon Bluetooth 프로필이란?

저는 블루투스 저에너지 개발 키트로 제 아이비콘을 만들고 싶습니다.Apple은 아직 iBeacon 사양을 출시하지 않았지만, 일부 하드웨어 개발자들은 AirLocate 샘플 코드에서 iBeacon을 역설계하고 iBeacon 개발 키트를 판매하기 시작했습니다.

그렇다면 iBeacon Bluetooth 프로필은 무엇입니까?

Bluetooth Low Energy는 LE 프로필 서비스 검색에 GATT를 사용합니다.그래서 저는 우리가 속성 핸들, 속성 유형, 속성 값, 그리고 아마도 iBeacon 속성의 속성 권한을 알아야 한다고 생각합니다.그렇다면 UUID가 E2C56DB5-DFFB-48D2-B060-D0F5A71096E0이고 주 값이 1인 iBeacon의 경우 Bluetooth GATT 프로필 서비스는 무엇입니까?

다음은 Apple 포럼과 문서를 통해 논의한 몇 가지 가정 사항입니다.

  1. 블루투스 주변기기의 프로필 서비스(GATT)만 보면 iBeacon임을 알 수 있습니다.

  2. 주 키와 보조 키가 이 프로필 서비스의 어딘가에 인코딩되어 있습니다.

iBeacon Dev Kit를 보유하고 있는 일부 회사는 이미 이를 파악하고 있는 것으로 보입니다.

조만간 Bluetooth.org 에 다음과 같은 프로필을 게시할 수 있기를 바랍니다: https://www.bluetooth.org/en-us/specification/adopted-specifications

경우 iBeaconUUID는 다음과 같습니다.E2C56DB5-DFFB-48D2-B060-D0F5A71096E0, 요한주한0인, 부차적인0및 보 된 Tx 전 (의)의 Tx -59RSSI, 전송된 BLE 광고 패킷은 다음과 같습니다.

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

이 패킷은 다음과 같이 분류할 수 있습니다.

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

이 패킷의 핵심 부분은 Bluetooth 광고로, 다음과 같이 구분할 수 있습니다.

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

특정 광고를 전송하도록 구성할 수 있는 모든 Bluetooth LE 장치는 상기 패킷을 생성할 수 있습니다.나는 이 광고를 보내기 위해 Bluez를 사용하여 Linux 컴퓨터를 구성했고, Apple의 AirLocate 테스트 코드를 실행하는 iOS7 장치는 위에 지정된 필드를 가진 iBeacon으로 선택합니다.참조: BlueZ Stack을 주변 장치로 사용(광고주)

블로그에는 리버스 엔지니어링 프로세스에 대한 자세한 내용이 나와 있습니다.

광고 데이터, 특히 제조업체 데이터에 기반을 둔 것으로 보입니다.

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 회사 식별자(Little Endian), 0x004c
  • 데이터 유형, 0x02 => iBeacon
  • 데이터 길이, 0x15 = 21
  • uuid : 585CDE931B0142CC9A1325009BEDC65E
  • 전공: 0000
  • 마이너: 0000
  • 1m에서 측정된 전력: 0xc5 = -59

샘플 AirLocate 앱 예제와 함께 Linux에서 작동하는 node.js 스크립트가 있습니다.

산디프미스트리의 대답과 다비드경의 대답의 차이를 조정하기 위해서입니다.

02 01 1a 1a ff 4C 00

광고 데이터 형식 사양의 일부임 [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

AD에 서비스 [5] 정의가 없습니다.iBeacon 프로토콜 자체는 GATT 및 표준 서비스 검색과 관련이 없다고 생각합니다.RedBearLab의 iBeacon 프로그램을 다운로드하면 광고 매개 변수를 구성하기 위해 GATT를 사용하는 것을 볼 수 있지만, 이는 사양의 일부가 아닌 구현에만 국한된 것으로 보입니다.예를 들어, 내가 시도한 LightBlue 및 기타 유사한 프로그램에 따르면 AirLocate 프로그램은 구성에 GATT를 사용하지 않는 것 같습니다.

참조:

  1. 코어 블루투스 사양 v4, 3권, C부, 11
  2. 제3권, C부, 18.1절
  3. 제3권, C부, 18.11절
  4. https://www.bluetooth.org/en-us/specification/assigned-numbers/company-identifiers
  5. 3권 C부 18.2

이 질문을 하는 이유가 표준 API를 사용하는 대신 Core Bluetooth를 사용하여 iBeacon으로 광고하려는 경우 다음과 같은 NS Dictionary를 사용하여 쉽게 광고할 수 있습니다.

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

자세한 내용은 이 답변을 참조하십시오.

이것은 매우 간단하며, 애플의 iBeacon 표준에 부합하는 몇 개의 문자가 포함된 문자열을 광고할 뿐입니다.

iBeacon 프로필에는 다음을 포함하는 31바이트가 포함되어 있습니다.

  1. Prefix - 9바이트 - 상세 데이터 및 제조업체 데이터 포함
  2. UUID - 16바이트
  3. 주 - 2바이트
  4. 보조 - 2바이트
  5. TxPower - 1바이트

enter image description here

언급URL : https://stackoverflow.com/questions/18906988/what-is-the-ibeacon-bluetooth-profile

반응형