BLE iBeacon Eddystone packet format 분석 기술 이야기 2018.03.31 12:30

지난번에 BLE Advertise Packet 내용 자세히 알아보기에서 BLE Avertise Packet이 어떻게 구성되는지 확인했다. 그 내용은 BLE Spec에 따른 원론적인 내용이었고, 그 Spec을 지키면서 새로운 기술을 정의한 것이 Apple에서 만든 iBeaconGoogle에서 만든 Eddystone이다. 두 기술 모두 BLE Advertise Packe의 최대 31Byte의 AdvData를 이용하여, 목적에 맞게 세부 데이터 구조를 정의한 것 뿐이다.


iBeacon

iBeacon은 2013년 애플에서 만들었고, 애플의 등록상표이다! 아래 그림과 같이 구성되며, 31Byte는 앞서 설명한대로 BLE Advertise Packet의 AdvData에 담겨지는 데이터이다. 별거 없다. 아주 단순하다.


UUID는 16Byte ID이지만 하나의 Beacon을 특정하는 고유 ID는 아니고, 특정 목적을 위해 생성된 ID라고 생각하면 좋을 것 같다. 각각 2Byte의 MajorMinor 필드를 두어서 비콘을 그룹단위로 구분할 때 사용할 수 있다. 예를 들자면, A라는 백화점이 비콘을 만들어서 매장 관리에 사용한다면, UUID는 A백화점의 비콘임을 구분하는 데 사용하고, Major는 지점명, Minor는 매장명을 구분하는 데 사용할 수 있다.

iBeacon Prefix에 들어가는 내용에 대해서는 그림에 나와있는 데이터를 가지고 설명을 해보겠다. 16진수 0x0201061AFF004C0215가 Prefix에 들어있는데, BLE Advertise Packet 내용 자세히 알아보기에서 처럼 분석해 보자.

데이터 내용
0x02 다음에 오는 2Byte는 하나의 GAP 정보임
0x01 GAP 중에 <<Flags>> 정보임
0x06 5개의 비트는 장치의 특성을 나타내는데 일반 발견 모드, BT/EDR 미지원함을 뜻한다.
0x1A 다음에 오는 26Byte는 하나의 GAP 정보임
0xFF GAP 중에 «Manufacturer Specific Data» 정보임
0x004C 회사 ID는 Apple임. 회사 ID는 등록된 고유 식별자다.
0x02 iBeacon을 의미함
0x15 남아있는 데이터는 21바이트라는 의미 (0x15 == 21)

<<Flags>>에 각각의 비트가 의미하는 내용은 다음과 같다.

  • 비트 0, LE 모드 중 제한된 발견 모드 (Limited Discoverable Mode) 를 나타낸다.
  • 비트 1, LE 모드 중 일반 발견 모드(General Discoverable Mode) 를 나타낸다.
  • 비트 2, 예전 1, 2 버전의 블루투스 전송속도 BR/EDR 을 지원하지 않음을 나타낸다.
  • 비트 3, 같은 장치(Controller)에서 LE 와 BR/EDR 이 동시에 가능함을 나타낸다.
  • 비트 4, 같은 장치(Host)에서 LE 와 BR/EDR 이 동시에 가능함을 나타낸다.

Eddystone

2015년 구글에서 발표했으며 오픈소스 프로젝트이다. 차이점은 에디스톤은 UID, URL, TLM 세가지 타입이 있다. 기존 규격을 지키면서도 유연한 구조로 iOS와 Android 모두에서 잘 동작하는 것이 목표라고 한다.

The design of Eddystone has been driven by several key goals:
- Works well with Android and iOS Bluetooth developer APIs
- Straightforward implementation on a wide range of existing BLE devices
- Flexible architecture permitting development of new frame types
- Fully compliant with the Bluetooth Core Specification


Eddystone-UID

고유한 식별자를 가지고 비콘을 구분하는 것이 iBeacon과 비슷하다. 10바이트의 Namespace와 6바이트의 Instance로 구분된다.

Eddystone-URL

앱이 아닌 브라우저와 연동되는 시나리오로 해당 URL로 브라우저가 접속한다. 아무곳이나 접속하면 안되므로, 알림 창에서 사용자의 확인을 받는 절차가 필요하다. 개인적으로 URL의 전송하는 컨셉은 신선했는데, 단순히 브라우저를 열어서 이동한다는 부분은 매우 식상했다. NFC나 QR코드로 URL 전송하는 것과 동일한 느낌이다.

Eddystone-TLM(Telemetry)

말그대로 원격측정 정보를 전달한다. 배터리 전압 (mV/bit 단위), 온도, 전송된 메시지 횟수, 시스템 시작 후 현재까지의 시간(0.1초 단위) 등의 정보를 전송한다. 패킷안에 고유 식별자가 없으므로 다른 패킷이 전달될 때 함께 전달하여 사용한다.

Eddystone-EID

Ephemeral ID를 뜻하는 EID 형식은 암호화된 데이터를 보내는 방식인데, 암호화 키가 임시적이고, 주기적으로 계속 변경되어서 Ephemeral이라고 한다. 간단하게 설명하자면, OTP 기기가 시간 기반으로 비밀번호를 생성하는 것처럼 그렇게 생성된 비밀번호를 이용해서 데이터를 암호화해서 전송하고, 그 값을 알고있는 자만이 복호화 할 수 있다는 컨셉이다. 개인적으로 매우 흥미로운 내용이다.

참조, 사진 출처

BLE 비콘
Understanding the different types of BLE Beacons
Getting Started with iBeacon
Eddystone
Eddystone-EID: 안전한 공개 비콘 형식
BLE_EddystoneBeacon_Service

티스토리 툴바