블루투스 (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 이후의 상태