기본 콘텐츠로 건너뛰기

[BLE] TI CC2540 Mini DK 사용하기 - Advertising Data 형식

1. 들어가기

    USB 동글에서 KeyFob을 찾을 때 BTool의 로그창을 보면 아래와 같은 Rx 데이터를 발견할 수 있다.

        [3] : <Rx> - 09:58:23.157
        -Type : 0x04 (Event)
        -EventCode : 0xFF (HCI_LE_ExtEvent)
        -Data Length : 0x18 (24) bytes(s)
         Event : 0x060D (GAP_DeviceInformation)
         Status : 0x00 (Success)
         EventType : 0x00 (Connectable Undirect Advertisement)
         AddrType : 0x00 (Public)
         Addr : 78:C5:E5:A0:0D:4C
         Rssi : 0xDB (219)
         DataLength : 0x0B (11)
         Data : 02:01:05:07:02:03:18:02:18:04:18
        [4] : <Rx> - 09:58:23.183
        -Type : 0x04 (Event)
        -EventCode : 0xFF (HCI_LE_ExtEvent)
        -Data Length : 0x19 (25) bytes(s)
         Event : 0x060D (GAP_DeviceInformation)
         Status : 0x00 (Success)
         EventType : 0x04 (Scan Response)
         AddrType : 0x00 (Public)
         Addr : 78:C5:E5:A0:0D:4C
         Rssi : 0xDB (219)
         DataLength : 0x0C (12)
         Data : 0B:09:4B:65:79:66:6F:62:64:65:6D:6F

    로그를 살펴 보면 여러 항목들 중에서 Data 항목에 대해서만 해석을 달지 않고 있음을 알 수 있다. KeyFob은 KeyFobDemo 애플리케이션을 실행하고 있는 중이다. 이제 Data 항목의 각 octet이 어떤 의미를 가지고 있는지 파악해 보자.

2. USB 동글에서 KeyFob 찾기

    분석하고자 하는 로그를 얻기 위하여 순서대로 아래의 과정을 수행한다.

        1) USB 동글을 PC에 연결한다. 장치 관리자에서 USB 동글의 포트 번호를 확인한다.
        2) BTool을 실행한다. 직렬포트 설정 대화 상자에서 USB 동글의 포트 번호를 지정한다. 다른 항목은 기본으로 설정된 값을 사용한다.
        3) Keyfob의 오른쪽 버튼(B3)을 눌러 Discoverable 모드로 진입한다.
        4) BTool의 Discover/Connect 탭에서 'Discovery' 섹션의 'Scan' 버튼을 누른다. 잠시 후 "Devices Found"의 값이 1로 바뀌는 것을 확인한다.

    BTool의 로그창에 EventType이 Connectable Undirect Advertisement와 Scan Response인 Rx 데이터가 나타날 것이다.

3. Rx 데이터의 Data 항목 해석

    위에서 제시한 두 Rx 데이터의 Data 항목은 Bluetooth Core Specification 4.0의 Low Energy 부문에서 정의하고 있는 다음 두 가지 형식에 해당한다.
 
        EventType이 Connectable Undirect Advertisement인 Rx 데이터:
     
            PDU 유형이 ADV_IND인 패킷의 AdvData
     
        EventType이 Scan Response인 Rx 데이터:
         
            PDU 유형이 SCAN_RSP인 패킷의 ScanRspData

    AdvData와 ScanRspData의 형식에 대한 설명은 다음 단원에서 제시하였으며 그에 대한 이해를 바탕으로 하여 Data 항목을 해석한 결과는 아래와 같다.

    3번 Rx 데이터의 Data 항목 해석: AdvData


    4번 Rx 데이터의 Data 항목 해석: ScanRspData


    AD Type의 값이 0x02인 경우는 장치가 제공하는 서비스가 더 많이 있지만 여기서는 일부 목록만 보여 준다는 것을 의미한다. 이 경우에는 장치와 연결을 맺은 후 모든 서비스 찾기 기능을 실행하면 전체 목록을 알아낼 수 있다.

4. advertising 채널의 패킷 형식 이해

    4.1 물리 계층
 
        - 2.4 GHz ISM 밴드 (2400 ~ 2483.5 MHz)
        - 2MHz 넓이로 40개의 RF 채널 구성
            Center frequencies
            f = 2402 + k*2 MHz, k = 0, …, 39

    4.2 연결 계층
 
        - 3개의 advertising 채널
            장치 찾기, 연결 시작하기, 데이터 방송에 사용함.
        - 37개의 data 채널
            연결된 장치간 통신을 위해 사용함.
 
    4.3 패킷 형식
 
        - advertising 채널, data 채널 모두 아래 패킷 형식을 따른다.
            Preamble (1) + Access Address (4) + PDU (2 ~ 39) + CRC (3)
 
    4.4 advertising 채널의 PDU 형식
 
        - PDU size: 2 ~ 39 octets
            Header (2) + Payload (0 ~ 37)
        - Header 형식
            PDU Type (4 bits) + RFU (2 bits) + TxAdd (1 bit) + RxAdd (1 bit) + Length (6 bits) + RFU (2 bits)
        - PDU Type에 따른 Payload 형식
            ADV_IND         : AdvA (6 octets) + AdvData (0 ~ 31 octets)
            ADV_DIRECT_IND  : AdvA (6 octets) + InitA (6 octets)
            ADV_NONCONN_IND : AdvA (6 octets) + AdvData (0 ~ 31 octets)
            SCAN_REQ        : ScanA (6 octets) + AdvA (6 octets)
            SCAN_RSP        : AdvA (6 octets) + ScanRspData (0 ~ 31 octets)
            ADV_SCAN_IND    : AdvA (6 octets) + AdvData (0 ~ 31 octets)
     
    4.5 AdvData와 ScanRspData의 형식
 
        AdvData와 ScanRspData는 동일한 형식을 따르며 연속적으로 이어지는 AD structure들로 이루어진다. AD structure의 형식은 아래와 같다.

            Length (1 octet) + AD Type (1 octet) + AD Data (Length - 1)
         
    4.6 AD Type과 AD Data 형식
 
        0x01 : Flags                    - b0 LE Limited Discoverable Mode
                                        - b1 LE General Discoverable Mode
                                        - b2 BR/EDR Not Supported (i.e. bit 37 of LMP Extended Feature bits Page 0)
                                        - b3 Simultaneous LE and BR/EDR to Same Device Capable (Controller) (i.e. bit 49 of LMP Extended Feature bits Page 0)
                                        - b4 Simultaneous LE and BR/EDR to Same Device Capable (Host) (i.e. bit 66 of LMP Extended Feature bits Page 1)
        0x02 : 16-bit Service UUIDs     - More 16-bit UUIDs available
        0x03 : 16-bit Service UUIDs     - Complete list of 16-bit UUIDs available
        0x04 : 32-bit Service UUIDs     - More 32-bit UUIDs available
        0x05 : 32-bit Service UUIDs     - Complete list of 32-bit UUIDs available
        0x06 : 128-bit Service UUIDs    - More 128-bit UUIDs available
        0x07 : 128-bit Service UUIDs    - Complete list of 128-bit UUIDs available
        0x08 : Local Name               - Shortened local name
        0x09 : Local Name               - Complete local name
        0x0A : TX Power Level (1 byte)
        ....


부록. 참고 자료

    1. 문서

        가. Bluetooth Low Energy CC2540/41 Mini Development Kit User's Guide (http://www.ti.com/litv/pdf/swru270c)
            4. Using BTool
            Appendix
        나. CC2540/41 Bluetooth Low Energy Software Developer's Guide (http://www.ti.com/lit/pdf/swru271)
            4. Working with Projects using IAR Embedded Workbench 8.10.4
        다. CC2540 Bluetooth Low Energy Sample Applications Guide (http://www.ti.com/litv/pdf/swru297b)
            9. KeyFobDemo
        라. Bluetooth Core Specifications 4.0 (https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=229737)
        마. Assigned Numbers for Bluetooth GATT services (http://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspx)

    2. 소프트웨어

        가. Bluetooth low energy software stack and tools 1.3 (www.ti.com/blestack)
            - KeyFobDemo 애플리케이션과 BTool을 포함하고 있다.
        나. IAR Embedded Workbench for 8051 (http://supp.iar.com/Download/SW/?item=EW8051-EVAL)
            - 30일 평가판 다운로드.

댓글

이 블로그의 인기 게시물

Windows에 AMP와 MediaWiki 설치하기

1. 들어가기     AMP는 Apache + MySQL +  Perl/PHP/Python에 대한 줄임말이다. LAMP (Linux + AMP)라고 하여 Linux에 설치하는 것으로 많이 소개하고 있지만 Windows에서도 간편하게 설치하여 사용할 수 있다.       이 글은 Windows 7에 Apache + MySQL + PHP를 설치하고 그 기반에서 MediaWiki를 설치하여 실행하는 과정을 간략히 정리한 것이다. 2. MySQL     * 버전 5.6.12     1) 다운로드         http://dev.mysql.com/downloads/installer/         MySQL Installer 5.6.12         Windows (x86, 32-bit), MSI Installer         (mysql-installer-web-community-5.6.12.0.msi)     2) 다운로드한 MSI 파일을 더블클릭하여 설치를 진행한다.           설치 위치:                   C:\Program Files\MySQL               선택 사항:                       Install MySQL Products             Choosing a Se...

MATLAB Rutime 설치하기

MATLAB Rutime 설치하기 미설치시 에러 MATLAB Runtime 을 설치하지 않은 환경에서 MATLAB 응용프로그램이나 공유 라이브러리를 사용하려고 하면 아래와 같은 에러 메시지가 표시될 것입니다. 처리되지 않은 예외: System.TypeInitializationException: 'MathWorks.MATLAB.NET.Utility.MWMCR'의 형식 이니셜라이저에서 예 외를 Throw했습니다. ---> System.TypeInitializationException: 'MathWorks.MATLAB.NET.Arrays.MWArray'의 형식 이니셜라이저에서 예외를 Throw했습니다. ---> System.DllNotFoundException: DLL 'mclmcrrt9_3.dll'을(를) 로드할 수 없습니다. 지정된 모듈을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x8007007E) 위치: MathWorks.MATLAB.NET.Arrays.MWArray.mclmcrInitialize2(Int32 primaryMode) 위치: MathWorks.MATLAB.NET.Arrays.MWArray..cctor() --- 내부 예외 스택 추적의 끝 --- 위치: MathWorks.MATLAB.NET.Utility.MWMCR..cctor() --- 내부 예외 스택 추적의 끝 --- 위치: MathWorks.MATLAB.NET.Utility.MWMCR.processExiting(Exception exception) 해결 방법 이 문제를 해결하기 위해서는 MATLAB Runtime 을 설치해야 합니다. 여러 가지 방법으로 MATLAB Runtime 을 설치할 수 있습니다. MATLAB 이 설치되어 있는 경우에는 MATLAB 설치 폴더 아래에 있는 MATLAB Runtime 설치 프로그램을 실행하여 설치합니다. ...

Wi-Fi 카드 2.4GHz로만 동작시키기

Wi-Fi 카드 2.4GHz로만 동작시키기 별도의 Wi-Fi AP 장치를 두지 않고 아래와 같은 기기들로만 Wi-Fi 네트워크를 구성하고자 할 때 주변 기기들이 2.4GHz만 지원하기 때문에 PC에서 실행하는 AP가 항상 2.4GHz를 사용하도록 Wi-Fi 카드를 설정해 주어야 합니다. 기기 Wi-Fi 카드 주파수 대역 Wi-Fi Direct 지원 PC (Windows 10) 2.4GHz, 5GHz O 주변 기기들 2.4GHz X Wi-Fi 카드별 주파수 대역 선택 방법 Windows 시작 메뉴에서 설정 을 클릭합니다. Windows 설정 화면에서 네트워크 및 인터넷 을 클릭합니다. 설정 화면의 왼쪽 메뉴바에서 Wi-Fi 를 클릭합니다. 화면 오른쪽 관련 설정 구역에 있는 어댑터 옵션 변경 을 클릭합니다. 설정을 바꾸고자 하는 Wi-Fi 카드 항목을 선택하고 마우스 오른쪽을 누른 다음 속성 메뉴를 클릭합니다. 대화상자의 네트워킹 탭 화면에 있는 구성 버튼을 클릭합니다. 장치 속성 대화상자의 고급 탭 화면으로 이동합니다. 제시되는 속성 항목들은 제품별로 다르며 자세한 사항은 아래의 제품별 설명을 참고하여 값을 설정하시기 바랍니다. Intel Dual Band Wireless-AC 7265 기술 사양 주파수 대역: 2.4GHz, 5GHz 무선 표준: 802.11ac 주파수 대역 선택 장치 속성 대화상자에서 아래와 같이 선택합니다. Wireless Mode 1. 802.11a => 5GHz 4. 802.11b/g => 2.4GHz (이 항목 선택) 6. 802.11a/b/g => 2.4GHz, 5GHz Intel Dual Band Wireless-AC 8265 기술 사양 주파수 대역: 2.4GHz, 5GHz 무선 표준: 802.11ac 주파수 대역 선택 장치 속성 대화상자에서 아래와 같이 ...