블루투스 (BLE)

이 페이지의 목적

블루투스에 대한 전반적인 지식을 정리해 나가려 합니다.

블루투스 스택

Physical Layer

  • 2.4 GHz ISM 대역에서 1 Mbps의 속도로 패킷 송수신 역할 (실제 Bluetooth Analog Signal 과 통신할 수 있는 회로가 구성되어 있음)

  • 총 40 개의 채널로 나누어 통신을 하며, 3개의 채널을 체외한 37개의 채널을 데이터 채널로 활용하며 주변 채널 간섭을 피하기 위해 주파수 호핑 방식을 사용한다.

  • 2.4 GHz 영역에서 ISM Band 사용하며, 2MHz 간격으로 총 40개의 채널을 사용

  • 3개 (37, 38, 39) Advertising (애드버타이징) 채널과 나머지 37개의 Data 채널 사용

  • 같은 ISM Band 를 사용하늘 wifi 와 간섭을 피하기 위해 주파수 호핑 방식 사용

Link Layer

  • 하드웨어와 소프트웨어 조합으로 구성

  • 하드웨어 단에서는 Preamble, Access Address, CRC, AES 등이 처리

  • 소프트웨어 단에서는 디바이스의 연결 상태를 관리한다.

  • 디바이스의 Role을 정의하고 이에 따라 변경되는 State 를 가지고 있다.

  • Connection 전의 역할 ( Advertiser, Scanner)과 Connection 후의 역할인 (Master, Slave)로 분류된다

Packet

  • Preamble : 1 Byte 로 구성되어 Receiver에서 비트 동기에 사용되며, Access Address 의 LSB 가 1이면 01010101b, Access address 의 LSB가 0 이면 10101010b 로 설정된다

  • 블루투스에서는 2 가지 모드에 따라 패킷의 구조가 다르다. 비콘 모드에서는 Advertising Packet 구로를 사용하며, 서로의 장비가 커넥션이 이루어진 상태에서 서로 데이터를 전달하는 상태에서 는 Data Packet 구조를 사용한다.

  • Access Address : 4 Bytes로 구성되어 Advertising Packet은 0x8E89BED6 으로 모두 동일하며 Data Packet 은 전체 4 Bytes에서 랜덤하게 생성 가능하다.

  • Protocal Data Unit (PDU) : Access Address 가 Advertising Packet 과 Data Packet으로 나뉜 것과 동일하게 PDU 또한 Advertising 과 Data 관점으로 패킷 구조가 나뉜다

  • Advertising Channel PDU : 그림과 같이 2 Bytes Header 를 포함한 총 39 Bytes의 길이를 가지며, 최대 37 Bytes 의 Payload format은 다시 Data Payload와 Advertising Address 로 나뉘게 된다. Advertising Address 부분에서 Mac Address 가 들어오게 된다. 또한 Data Payload는 length, AD Type, AD Data 로 구성된다

  • Data Channel PDU : 보통 데이터 채널의 경우 BLE 디바이스들끼리 커넥션이 이루어진 후 서로간의 데이터 전송 부분에서 사용되는 패킷 구조이며 헤더를 포함한 최대 길이는 257 Bytes 를 차지한다.

Role

  • Master : 연결을 시도하고, 연결 후에 전체 Connection 을 관리하는 역할

  • Slave : Master 의 연결 요청을 받고, Master의 timing 규약을 따르는 역할

  • Advertiser : Advertising Packet 을 보내는 역할

  • Scanner : Advertising Packet을 Scanning 하는 역할, Scanner는 2 가지 Scanning 모드가 있다

  • Passive Scanning : Scanner는 Advertising Packet을 받고 이에 대해 따로 응답을 보내지 않는다. 따라서 해당 Packet을 보낸 Advertiser는 Scanner가 Packet 을 수신했는지에 대해서 알지 못한다.

  • Active Scanning : Advertising Packet 을 받은 Scanner는 Advertiser에게 추가적인 데이터를 요구하기 위해 "Scan Request" 라는 것을 보낸다. 이를 받은 Advertiser는 "Scan Response" 로 응답한다.

State

  • Standby State : Signal Packet을 보내지도, 받지도 않는 상태

  • Advertising State : Advertising Packet을 보내고, 해당 Advertising Packet에 대한 상대 디바이스의 Response 를 받을 수 있고 이에 응답할 수 있는 상태

  • Scanning State : Advertising Channel에서 Scanning하고 있는 상태

  • Initiating State : Advertising Connectable Advertising Packet 을 받고 난 후 Connection Request를 보내는 상태

  • Connection State : Connection 이후의 상태

BLE Connection

블루투스 참조 사이트