위치 찾기: RSSI에서 채널 사운딩까지
소파 틈에 빠진 이어폰을 찾으려고 휴대폰의 “찾기” 화면을 켜면 “가까워지는 중… 30 cm”라고 알려 준다. 자동차는 운전자가 다가오면 문을 열고, 차 안인지 밖인지까지 구분한다. 대형 마트의 앱은 지금 내가 어느 진열대 앞인지 안다. 블루투스는 원래 데이터를 나르는 기술이지만, 전파 자체가 거리와 방향의 단서를 품고 있다. 이 장에서는 그 단서를 쓰는 세 단계, 즉 세기(RSSI), 방향(AoA·AoD), 그리고 6.0의 위상과 시간(채널 사운딩)을 차례로 다룬다. 단계가 올라갈수록 정확해지고, 그만큼 하드웨어와 계산이 필요해진다.
- RSSI와 경로 손실 모델로 거리를 추정할 때 오차가 거리에 비례해 커지는 이유를 안다.
- 비콘이 광고에 기준 세기를 실어 보내는 방식과 근접(가까움/멂) 판단의 한계를 이해한다.
- 두 안테나의 위상 차이로 방향을 재는 AoA·AoD의 식과, 안테나 간격이 반 파장을 넘으면 생기는 모호성을 계산한다.
- 채널 사운딩이 여러 주파수의 위상 기울기로 거리를 구하는 원리(d = −(dφ/df)·c/4π)와 150 m마다 반복되는 모호성, 왕복 시간(RTT)과의 조합을 시뮬레이터로 확인한다.
- 거리 측정을 속이려는 중계·위조 공격과 6.0·6.2의 대응을 안다.
세기로 짐작하기: RSSI 거리 추정
가장 간단한 방법은 2장의 링크 버짓을 거꾸로 푸는 것이다. 1 m에서의 수신 세기 P1m을 알고 경로 손실 지수 n을 가정하면, 받은 RSSI에서 거리를 계산할 수 있다.
문제는 오차다. 2장에서 본 대로 RSSI 자체의 정확도 권장이 ±6 dB이고, 다중 경로 페이딩과 몸이 가리는 정도가 패킷마다 수~수십 dB를 흔든다. 식의 지수 때문에 dB 오차는 거리의 배율 오차가 된다. 6 dB 오차는 n = 2에서 거리 2배, n = 3에서 1.6배다. 1 m에서 2배 오차는 50 cm지만 10 m에서는 10 m다. 그래서 RSSI는 “1 m 안이다 / 근처다 / 멀다” 같은 구역 판단에 쓰고, 여러 번 평균하거나 여러 수신기의 값을 합쳐 쓴다.
카페에서 목소리가 크게 들리면 가까이 있다고 짐작한다. 하지만 원래 목소리가 큰 사람일 수도 있고, 기둥 뒤에 있어서 작게 들릴 수도 있다. 가까울 때는 조금만 다가가도 크게 바뀌어 짐작이 쉽지만, 멀어질수록 몇 걸음 차이가 거의 구별되지 않는다. RSSI 거리 추정의 한계가 이것이다.
RSSI로 거리 재기: 왜 멀수록 엉망이 될까
비콘: 광고에 기준 세기 싣기
비콘(beacon)은 연결 없이 짧은 신원 정보를 광고로 계속 내보내는 기기다(5장의 브로드캐스터). 대표적인 형식은 회사들이 정한 것으로, 예를 들어 Apple의 iBeacon은 제조사 데이터에 16바이트 UUID와 두 개의 2바이트 번호(major, minor), 그리고 1 m에서의 기준 세기(1바이트)를 담는다. 받는 앱은 이 기준 세기와 RSSI를 위 식에 넣어 가깝다/멀다를 판단한다. 매장 진열대, 박물관 전시물, 실내 위치 표시에 쓰였다. 분실물 태그 네트워크는 반대로, 태그가 비콘처럼 광고하면 지나가는 수많은 휴대폰이 그것을 듣고 자기 GPS 위치를 붙여 주인에게 (암호화해서) 알려 주는 방식이다. 이 형식들은 Core 밖이며, 5장의 AD 구조(제조사 데이터 0xFF) 안에 들어간다.
RSSI 정확도 ±6 dB: [Vol 6] Part A §4.8 · 광고 데이터 형식: [Vol 3] Part C §11 · 송신 전력 AD 구조와 확장 광고의 TxPower 필드: [Vol 6] Part B §2.3.4.7
방향 재기: 도래각(AoA)과 발사각(AoD)
5.1은 세기 대신 위상을 쓰는 방향 찾기를 추가했다. 전파가 비스듬히 들어오면, 나란히 놓인 두 안테나 중 먼 쪽에 조금 늦게 도착한다. 그 늦음은 위상 차이로 나타난다.
위상을 재려면 신호가 변조 없이 일정해야 한다. GFSK 데이터는 주파수가 계속 바뀌므로 위상을 비교하기 어렵다. 그래서 5.1은 패킷 끝에 일정 톤 확장(CTE, Constant Tone Extension)을 붙인다. 화이트닝하지 않은 1만 계속 보내, 일정한 주파수(+250 kHz 편이)의 순수한 톤이 된다. CTE는 16~160 µs이고, 처음 4 µs는 보호 구간, 다음 8 µs는 기준 구간, 그 뒤로 1 µs 또는 2 µs의 전환 슬롯과 표본 슬롯이 번갈아 온다. 수신기는 표본 슬롯마다 다른 안테나로 바꿔 가며 IQ 표본(위상과 세기)을 찍는다.
- AoA(Angle of Arrival): 받는 쪽이 안테나 배열을 갖고 바꿔 가며 받는다. 천장의 위치 수신기가 태그들의 방향을 잰다. 태그는 안테나 하나면 된다.
- AoD(Angle of Departure): 보내는 쪽이 배열을 갖고 바꿔 가며 보낸다. 받는 휴대폰은 안테나 하나로 각 안테나에서 온 위상을 비교해 자기가 어느 방향에 있는지 계산한다. 실내 내비게이션처럼 수신자가 많을 때 쓴다.
CTE 16~160 µs, 보호 4 µs, 기준 8 µs, 1 µs·2 µs 슬롯, 화이트닝 없음: [Vol 6] Part B §2.5.1 · AoA/AoD 안테나 전환: [Vol 6] Part A §5.1 · CTE 요청 절차: [Vol 6] Part B §5.1.12
두 안테나의 위상 차이로 방향 재기
6.0의 채널 사운딩: 위상 기울기와 왕복 시간
채널 사운딩(Channel Sounding, CS)은 연결된 두 기기가 거리를 재기 위해 만든 전용 절차다. 한쪽(개시자)과 다른 쪽(반사자)이 짧은 시간 안에 여러 주파수에서 신호를 주고받으며 두 가지를 잰다.
- 위상 기반 거리 측정(PBR, Phase-Based Ranging): 순수한 톤을 주고받으면 왕복 거리 2x 만큼 위상이 돈다. 위상은 φ = −2π·(2x)·f / c다. 주파수를 바꿔 가며 재면 위상이 주파수에 따라 직선으로 줄어들고, 그 기울기가 거리에 비례한다.
- 왕복 시간(RTT, Round-Trip Time): 패킷(CS_SYNC)을 보내고 답이 돌아오기까지의 시간에서 상대의 처리 시간을 빼면 빛이 왕복한 시간이 남는다. 1 ns에 약 30 cm이므로 정밀도는 위상보다 거칠지만, 위상의 모호성을 풀어 준다.
CS는 광고 채널을 제외한 1 MHz 간격 72개 채널(2402 + k MHz, k = 2~22, 26~76)을 쓴다. 한 절차는 이벤트 → 서브이벤트 → 스텝으로 나뉘고, 스텝은 네 모드가 있다. 모드 0은 두 기기의 주파수·시간을 맞추는 보정, 모드 1은 RTT, 모드 2는 PBR 톤, 모드 3은 둘 다다. 사양은 거리 계산 알고리즘 자체는 정하지 않고, 정확한 측정값(IQ, 도착·출발 시각)을 만드는 규칙을 정한다.
CS 개요와 모드 0~3, PBR 거리 식과 dwrap = 150 m: [Vol 1] Part A §9.1~§9.3 · 72개 CS 채널: [Vol 6] Part A §2 · CS 패킷·RTT·공격 탐지: [Vol 6] Part H · 6.0 새 기능: [Vol 1] Part C §14.1
위상 기울기로 거리 재기 (PBR + RTT)
자동차 디지털 키를 노린 “중계 공격”은 집 안의 키(휴대폰)와 차 옆 공격자 사이에서 신호를 그대로 받아 넘긴다. RSSI만 보는 차와 채널 사운딩의 RTT를 보는 차 중 어느 쪽이 속을까?
중계기는 신호를 증폭해 세기를 마음대로 만들 수 있지만, 빛보다 빨리 전달할 수는 없다.
CS 공격 탐지 요구(위상 기반, 진폭 기반 DFT 탐지): [Vol 6] Part H §3.5 · 6.2의 Channel Sounding Amplitude-based Attack Resilience: [Vol 1] Part C §16.1
6.3에서 더해진 것
이 책의 기준 판인 6.3은 채널 사운딩에 두 가지를 더했다. 첫째는 위상 보정값 인라인 전송(Inline PCT Transfer, IPT)이다. 위상 방식에서는 시작기(initiator)와 반사기(reflector)가 각자 받은 톤의 위상을 재서 I·Q 값(PCT)으로 남긴다. IPT를 켜면 반사기는 자기가 되돌려 보내는 톤의 위상을 미리 맞춰서, 자기가 보고하는 PCT의 허수부(Q)가 0이 되고 실수부(I)에는 신호 크기만 남게 한다. 반사기가 잰 위상을 따로 넘기는 대신 되돌려 보내는 톤에 실어(인라인으로) 넘기는 셈이다. 이때 안테나 전환 시간은 반사기가 알려 준 IPT용 값(T_SW_IPT)까지 고려해 정한다.
둘째는 PHY별 RTT 정확도다. 왕복 시간(RTT)용 패킷은 필수인 LE 1M 말고도 선택 기능인 LE 2M·LE 2M 2BT로 보낼 수 있는데, 6.3부터는 2M 계열 PHY의 RTT 정확도 요구를 1M과 따로 정해 능력 교환 때 알릴 수 있다. 두 기능 모두 양쪽 칩이 지원해야 쓰는 선택 기능이다.
IPT: [Vol 6] Part A §6.5 · 반사기의 톤 위상과 PCT: [Vol 6] Part H §4.6 · IPT의 안테나 전환 시간: Part H §4.3.3 · 능력 교환(IPT 비트, RTT_PHY 비트, 2M용 RTT 필드): [Vol 6] Part B §2.4.2.44 · 6.3 새 기능 목록: [Vol 1] Part C §17.1
세 방법 비교
| 방법 | 재는 것 | 정확도 감각 | 필요한 것 | 쓰임 |
|---|---|---|---|---|
| RSSI | 세기 → 거리 | 구역 수준 (수 m, 거리에 비례해 나빠짐) | 모든 칩 | 근접 알림, 비콘, 분실물 네트워크 |
| AoA / AoD (5.1) | 위상 차이 → 방향 | 각도 수 도 (여러 수신기로 위치 계산) | 안테나 배열, CTE 지원 | 창고·병원 자산 추적, 실내 길 찾기 |
| 채널 사운딩 (6.0) | 위상 기울기·왕복 시간 → 거리 | 수십 cm 이하를 노림 | CS 지원 칩 양쪽, 보정 | 디지털 키, 정밀 분실물 찾기 |
| (참고) UWB | ns 펄스 왕복 시간 | 수~10 cm | 별도 UWB 칩 | 디지털 키, 태그 |
채널 사운딩은 이미 휴대폰과 액세서리에 있는 블루투스 무선부로 UWB에 가까운 일을 하려는 시도다. 정확도는 아직 UWB보다 낮은 편이지만, 추가 칩 없이 쓸 수 있다는 점이 크다. 1장에서 강조했듯이 6.0 이상이라고 모두 CS를 지원하는 것은 아니며, 두 기기 모두 지원해야 한다.
핵심 정리
- RSSI 거리: d ≈ 10^((P1m − RSSI)/(10n)). dB 오차가 거리의 배율 오차가 되어 멀수록 엉망이다. 평균과 구역 판단에 쓴다. 비콘은 광고에 1 m 기준 세기를 싣는다.
- AoA·AoD(5.1): 두 안테나의 위상 차 Δφ = 2π·d·sinθ/λ로 방향을 잰다. 간격이 λ/2(약 6 cm)를 넘으면 모호해진다. 패킷 끝의 CTE(16~160 µs, 순수한 톤) 동안 안테나를 바꿔 가며 IQ 표본을 찍는다.
- 채널 사운딩(6.0): 72개 1 MHz 채널에서 왕복 위상을 재 기울기로 거리를 구한다(x = −(dφ/df)·c/4π). 1 MHz 간격이면 150 m마다 모호하고, RTT로 푼다. 모드 0 보정, 1 RTT, 2 PBR, 3 둘 다.
- 세기는 증폭기로 꾸밀 수 있지만 시간은 줄일 수 없다. CS는 위상·진폭 공격 탐지를 갖추고, 6.2에서 진폭 기반 공격 대응이 강화되었다.
확인 퀴즈
P1m = −59 dBm, n = 2일 때 RSSI −79 dBm이면 추정 거리는?
AoA 안테나 배열의 간격을 반 파장(약 6 cm) 이하로 두는 이유는?
CTE에 화이트닝을 적용하지 않고 1만 계속 보내는 이유는?
채널 사운딩에서 1 MHz 간격 위상만으로 잰 거리가 0.4 m로 나왔다. 실제 거리가 될 수 없는 것은?
채널 사운딩 스텝 모드와 하는 일의 짝이 틀린 것은?