비트를 전파에 싣기: GFSK와 PHY
무선 이어폰 광고에는 “블루투스 5.3”이, 분실물 태그 광고에는 “최대 4배 먼 거리”가 적혀 있다. 그런데 2장에서 본 것처럼 송신 전력은 법과 배터리가 정하는 한계가 있다. 같은 전력으로 더 멀리 가려면 무엇을 바꿔야 할까? 답은 비트를 전파에 싣는 방식, 즉 물리 계층(PHY)에 있다. 이 장에서는 블루투스가 주파수를 아주 조금 올리고 내리는 것만으로 0과 1을 보내는 방법(GFSK)부터, 같은 방식을 느리고 꼼꼼하게 바꿔 거리를 늘리는 LE Coded PHY까지 따라간다.
- 주파수 편이 변조(FSK)에 가우시안 필터를 더한 GFSK가 왜 쓰이는지, BT와 변조 지수 h가 무엇을 뜻하는지 안다.
- 잡음 때문에 비트가 뒤집히는 과정과, 사양이 수신 감도를 “비트 오류율 0.1%가 되는 세기”로 정의하는 방식을 이해한다.
- 클래식의 EDR이 위상 변조(π/4-DQPSK, 8DPSK)로 같은 심볼 속도에 2~3배의 비트를 싣는 원리와 대가를 안다.
- LE 1M, LE 2M, LE Coded(S=2, S=8) PHY의 속도·패킷 시간·감도를 비교하고, 컨볼루션 부호와 패턴 매퍼가 하는 일을 직접 돌려 본다.
- 속도·거리·전력·충돌 사이에서 PHY를 고르는 기준을 세운다.
- 다음 Core 사양에 들어갈 예정인 HDT(공개 초안)가 같은 원리로 LE를 7.5 Mb/s까지 올리려는 방식을 안다.
주파수를 살짝 흔들어 0과 1을 보내기
전파는 일정한 주파수로 진동하는 파동, 반송파(carrier)다. 여기에 정보를 실으려면 무언가를 바꿔야 한다. 세기를 바꾸면 AM, 위상을 바꾸면 PSK, 주파수를 바꾸면 FSK다. 블루투스는 주파수를 바꾼다. 1을 보낼 때는 채널 중심보다 조금 높은 주파수, 0을 보낼 때는 조금 낮은 주파수를 낸다. 이것이 주파수 편이 변조(FSK, Frequency Shift Keying)다.
FSK는 단순해서 좋다. 신호의 세기가 일정하므로 송신기의 전력 증폭기를 효율이 가장 좋은 포화 상태로 돌릴 수 있고, 수신기는 세기가 출렁여도 “지금 주파수가 높은가 낮은가”만 보면 된다. 작은 칩과 코인 전지에 딱 맞는 성질이다. 문제는 주파수를 0과 1 사이에서 갑자기 바꾸면 그 순간 넓은 주파수 범위로 에너지가 튀어 옆 채널을 방해한다는 것이다. 그래서 비트 열을 먼저 종 모양의 가우시안 필터(Gaussian filter)로 부드럽게 다듬은 뒤 주파수를 바꾼다. 이것이 블루투스 클래식과 LE가 모두 쓰는 GFSK(Gaussian FSK)다.
GFSK를 정하는 숫자는 두 개다.
- BT(대역폭·비트 시간 곱): 가우시안 필터가 얼마나 부드러운지. BT가 작을수록 더 부드럽고(옆 채널에 덜 새고) 대신 앞뒤 비트가 서로 번져 섞인다(심볼 간 간섭(ISI)). 블루투스는 클래식·LE 모두 BT = 0.5다.
- 변조 지수 h: 주파수를 얼마나 크게 흔드는지. 최대 편이 Δf = h × 심볼 속도 ÷ 2다. 클래식은 h = 0.28~0.35(1 Msym/s에서 약 ±140~175 kHz), LE는 h = 0.45~0.55(1 Msym/s에서 약 ±250 kHz)다. h가 크면 0과 1의 차이가 커서 잡음에 강하지만 신호가 차지하는 폭이 넓어진다.
LE GFSK BT = 0.5, h = 0.45~0.55, 1은 양의 편이: [Vol 6] Part A §3.1 · BR GFSK BT = 0.5, h = 0.28~0.35, 최소 편이 115 kHz: [Vol 2] Part A §3.1.1
GFSK 만들기: 비트 → 부드러운 주파수 곡선
잡음 속에서 0과 1 판정하기
수신기는 들어온 신호의 주파수를 재서(주파수 판별기) 중심보다 높으면 1, 낮으면 0으로 판정한다. 신호가 강하면 쉽다. 하지만 2장의 링크 버짓에서 마진이 줄어들수록 신호는 잡음에 묻히고, 잡음이 판정선을 넘기는 순간 비트가 뒤집힌다. 신호 대 잡음비(SNR)가 몇 dB 떨어지면 비트 오류율(BER, Bit Error Rate)은 몇 배가 아니라 몇 자릿수씩 뛴다.
블루투스 패킷에는 오류를 찾는 24비트 CRC가 붙어 있다(6장). 비트가 하나라도 틀리면 CRC 검사에 걸려 패킷 전체를 버리고 다시 보낸다. 그래서 중요한 것은 BER 자체보다 패킷 오류율이다. 패킷이 길수록 그 안에 틀린 비트가 하나라도 있을 확률이 커진다.
감도 측정 BER(Table 4.1: 페이로드 1~37바이트 0.1%, 38~63 0.064%, 64~127 0.034%, 128~255 0.017%): [Vol 6] Part A §4.1
잡음 속 판정: SNR → 비트 오류 → 패킷 오류
클래식의 가속 장치: EDR과 위상 변조
클래식 블루투스의 기본(Basic Rate)은 1 Msym/s의 GFSK로, 심볼 하나에 1비트, 공중 속도 1 Mb/s다. 2004년의 2.0+EDR은 심볼 속도는 그대로 두고 심볼 하나에 더 많은 비트를 싣는 방법으로 속도를 올렸다. 주파수 대신 반송파의 위상(파동이 어느 각도에 있는가)을 바꾸고, 그 변화량에 비트를 대응시킨다.
- π/4-DQPSK: 위상을 ±45°, ±135° 중 하나만큼 돌린다. 네 가지이므로 심볼당 2비트, 2 Mb/s.
- 8DPSK: 위상 변화가 여덟 가지(45° 간격). 심볼당 3비트, 3 Mb/s.
“D”(Differential)는 절대 위상이 아니라 직전 심볼과의 차이에 비트를 싣는다는 뜻이다. 수신기가 송신기의 위상을 정확히 맞출 필요가 없어 회로가 단순해진다. 대가는 잡음 내성이다. 성좌도에서 점들의 간격이 좁아질수록 같은 잡음에도 옆 점으로 잘못 읽히기 쉽다. 그래서 EDR 패킷은 앞부분(접근 코드와 헤더)을 여전히 튼튼한 GFSK로 보내고, 약 5 µs의 보호 시간과 11 µs의 동기 신호 뒤에 페이로드만 DPSK로 보낸다. 링크가 나빠지면 기기는 3 Mb/s → 2 Mb/s → 1 Mb/s 패킷으로 스스로 낮춘다.
성좌도: 한 심볼에 몇 비트를 실을 수 있나
표의 이름은 규칙대로 읽으면 된다. D는 데이터(ACL) 패킷, H는 오류 정정 부호 없이 꽉 채워 싣는 “High rate”(같은 자리에 2/3 FEC를 씌운 것은 M, Medium rate), 끝의 숫자는 패킷이 차지하는 슬롯 수(1·3·5, 한 슬롯 625 µs)다. 앞에 붙은 2-·3-는 페이로드를 EDR 2 Mb/s·3 Mb/s로 보낸다는 뜻이다. 그래서 3-DH5는 “3 Mb/s EDR로, FEC 없이, 5슬롯 동안 보내는 데이터 패킷”이다. 패킷 종류 전체와 처리량 계산은 심화편 12장 · 패킷 종류에 있다.
| 가장 긴 ACL 패킷 | 변조 | 페이로드 최대 | 최대 속도(한쪽 방향) | 대칭 속도 |
|---|---|---|---|---|
| DH5 | GFSK | 339바이트 | 723.2 kb/s | 433.9 kb/s |
| 2-DH5 | π/4-DQPSK | 679바이트 | 1,448.5 kb/s | 869.1 kb/s |
| 3-DH5 | 8DPSK | 1,021바이트 | 2,178.1 kb/s | 1,306.9 kb/s |
EDR 변조와 심볼 속도 1 Msym/s: [Vol 2] Part A §1·§3.2 · EDR 패킷 구성: [Vol 2] Part B §6.1.2 · 보호 시간 4.75~5.25 µs, 동기 신호 11 µs: [Vol 2] Part B §6.6.1 · ACL 패킷 표(Table 6.8): [Vol 2] Part B §6.7
공중 속도 3 Mb/s가 실제로는 2.18 Mb/s가 되는 이유는 5슬롯 패킷 뒤에 상대가 1슬롯 응답을 보내야 하고, 패킷마다 접근 코드·헤더·보호 시간이 붙기 때문이다. 6장의 LE에서도 같은 계산을 한다. 무선 이어폰의 음악(수백 kb/s)은 이 범위에 넉넉히 들어간다(10장).
LE의 PHY 넷: 1M, 2M, Coded S=2, Coded S=8
LE는 4.0에서 LE 1M 하나로 시작했다. 1 Msym/s GFSK, 1 Mb/s. 모든 LE 기기가 반드시 지원해야 하는 기본이다. 5.0에서 두 가지 선택 PHY가 더해졌다.
- LE 2M: 심볼 속도를 2 Msym/s로 두 배. 같은 데이터를 절반의 시간에 보낸다. 무선부가 켜져 있는 시간이 줄어 전력이 줄고, 다른 신호와 부딪힐 확률도 준다. 대신 신호가 차지하는 폭이 넓어지고 비트 하나에 쓰는 에너지가 절반이라 감도가 몇 dB 나빠진다.
- LE Coded: 심볼 속도는 1 Msym/s 그대로 두고, 비트 하나를 여러 심볼에 나눠 싣는다. 먼저 컨볼루션 부호(convolutional code)로 비트를 두 배로 늘리고(부호율 ½), 이어서 패턴 매퍼가 S=8이면 각 부호 비트를 4개의 심볼로 펼친다. 결과적으로 비트 하나에 심볼 2개(S=2, 500 kb/s) 또는 8개(S=8, 125 kb/s)를 쓴다. 수신기는 일부 심볼이 틀려도 부호의 규칙을 이용해 원래 비트를 되살린다.
사양이 요구하는 감도도 PHY마다 다르다. LE 1M·2M은 −70 dBm 이하, Coded S=2는 −75 dBm 이하, S=8은 −82 dBm 이하다. 실제 칩에서 S=8은 1M보다 대략 8~12 dB 좋은 감도를 낸다. 트인 곳(거리 2배당 6 dB)이라면 12 dB는 거리 4배다. “블루투스 5는 4배 멀리”라는 문구의 근거다. 실내에서는 경로 손실 지수가 커서 2~3배 정도로 줄어든다.
PHY 정의(LE 1M 필수, LE Coded 선택, LE 2M·LE 2M 2BT): [Vol 6] Part A §1 · 감도 Table 4.2: [Vol 6] Part A §4.1 · FEC 부호기(부호율 ½, K=4, G0 = 1+x+x²+x³, G1 = 1+x²+x³)와 패턴 매퍼(S=8: 0 → 0011, 1 → 1100): [Vol 6] Part B §3.3
LE Coded 부호기 들여다보기: 비트 하나가 심볼 8개가 되기까지
PHY 비교: 같은 데이터, 다른 시간과 거리
이어폰과 휴대폰이 30 cm 거리에서 LE로 많은 데이터를 주고받는다. 배터리를 가장 아끼려면 어떤 PHY가 좋을까?
PHY 비교 계산기에서 페이로드 251바이트의 패킷 시간을 보자. 가까운 거리에서는 감도 차이가 문제 되지 않는다.
곧 올 PHY: HDT (공개 초안)
HDT는 이 책의 기준인 Core 6.3에도 들어 있지 않다. Bluetooth SIG가 Core 6.2를 바탕으로 만든 공개 초안(Change Request)과 SIG의 소개 글(2026년 7월)을 근거로 쓴다. SIG는 다음 Core 사양에 넣을 예정이라고 밝혔다. 정식 사양이 나오면 수치와 이름이 바뀔 수 있다.
LE 2M의 2 Mb/s는 6장에서 계산해 보면 앱 처리량 약 1.4 Mb/s가 상한이다. 무손실 오디오나 수백 MB 펌웨어에는 모자란다. HDT(High Data Throughput)는 LE에 새 PHY를 더해 최대 7.5 Mb/s까지 올리려는 기능이다. 지금까지 이 장에서 본 생각들이 그대로 다시 쓰인다.
- 심볼 속도는 그대로, 심볼당 비트를 늘린다: 모든 HDT 속도는 LE 2M과 같은 2 Msym/s로 보낸다. 대신 GFSK가 아니라 QPSK·QAM 계열의 고차 변조를 쓴다. 클래식 EDR이 1 Msym/s에 위상 변조로 2~3 Mb/s를 실은 것과 같은 발상이다(위 성좌도 시뮬레이터). 7.5 Mb/s면 오류 정정 비트를 빼고도 심볼 하나에 평균 3.75비트를 싣는 셈이다.
- 모든 속도에 오류 정정: 성좌점이 촘촘할수록 잡음에 약하다. 그래서 LE Coded처럼 컨볼루션 부호 기반의 FEC를 모든 HDT 속도에 쓴다. 속도는 2, 3, 4, 6, 7.5 Mb/s 다섯 단계이고, 변조와 부호율의 조합으로 정해진다.
- 패킷마다 속도 바꾸기: 패킷 머리에 그 패킷의 속도가 적혀 있어, 링크가 나빠지면 다음 패킷부터 바로 낮은 속도로 내려간다. PHY를 한번 정하면 오래 유지하고 바꿀 때마다 갱신 절차(6장)를 거치는 지금 방식과 달리, 패킷 단위로 속도를 고르는 것이다(HDT를 쓰기로 처음 합의하는 방법은 정식 사양에서 확인할 부분이다). EDR이 3 → 2 → 1 Mb/s로 내려가던 것을 더 잘게 나눈 셈이다.
- 긴 패킷, 블록 단위 확인: 패킷 하나에 약 8,000바이트까지 싣고, 블록마다 오류 검사를 따로 붙여 깨진 블록만 다시 보낸다. 251바이트 페이로드마다 150 µs 틈과 응답이 붙던 오버헤드(6장)를 크게 줄이려는 설계다.
- 더 긴 MIC: 암호화된 패킷의 무결성 코드를 지금의 32비트에서 64비트·128비트로 키울 수 있다(8장).
HDT 미리 보기: 같은 파일을 보내는 공중 시간
HDT가 정식 사양이 되면, 지금 쓰는 블루투스 6.0 이어폰도 펌웨어 업데이트로 7.5 Mb/s를 쓸 수 있을까?
HDT가 바꾸는 것이 소프트웨어(호스트)인지 무선 회로(PHY)인지 생각해 보자(1장의 스택).
Core 6.3에도 없음 · Bluetooth SIG, “Introducing Bluetooth High Data Throughput (HDT)” (2026-07-28)과 공개 초안 HDT Change Request(Core 6.2 기반) · 채택 예정: 다음 Core 사양
PHY 고르기: 속도·거리·전력·충돌
PHY 선택은 결국 2장의 링크 버짓과 9장의 전력 예산 사이의 교환이다. 같은 마진을 확보하는 방법이 “전력을 올리기”, “더 민감한(느린) PHY 쓰기”, “가까이 두기” 셋뿐이기 때문이다.
| PHY | 데이터 속도 | 사양 최소 감도 | 좋은 곳 | 대가 |
|---|---|---|---|---|
| LE 1M | 1 Mb/s | ≤ −70 dBm | 광고·호환성(모든 기기가 지원) | — |
| LE 2M | 2 Mb/s | ≤ −70 dBm | 펌웨어 업데이트, 오디오, 가까운 대용량 | 감도 몇 dB 손해, 선택 기능 |
| LE Coded S=2 | 500 kb/s | ≤ −75 dBm | 집 전체를 덮는 센서 | 패킷 시간 약 2배 |
| LE Coded S=8 | 125 kb/s | ≤ −82 dBm | 마당·주차장·창고, 장거리 비콘 | 패킷 시간 약 8배, 전력·충돌 증가 |
시끄러운 카페에서 멀리 앉은 친구에게 말을 전하는 방법은 세 가지다. 더 크게 외치거나(송신 전력), 더 가까이 가거나(거리), 한 글자씩 천천히 여러 번 반복해서 말하는 것이다(Coded PHY). 마지막 방법은 목소리를 키우지 않아도 되지만 한 문장에 시간이 오래 걸리고, 그동안 다른 손님의 말과 겹칠 가능성도 커진다. 바로 옆자리 친구에게는 빠르게 말하는 편이 낫다(2M).
한 가지 더. LE 2M과 Coded는 선택 기능이고 상대도 지원해야 쓸 수 있다. 그래서 처음 만날 때는 모든 기기가 아는 LE 1M을 쓰고(광고 채널의 레거시 광고는 1M만 쓴다), 연결된 뒤 서로의 기능을 확인하고 바꾸는 것이 일반적이다. 처음부터 장거리로 찾게 하려면 5.0의 확장 광고로 광고 채널에서도 Coded PHY를 쓴다(5장).
핵심 정리
- 블루투스는 주파수를 살짝 올리고 내려 1과 0을 보내는 GFSK를 쓴다. 신호 세기가 일정해 증폭기 효율이 좋고 수신기가 단순하다. 가우시안 필터(BT = 0.5)가 급한 변화를 다듬어 옆 채널 간섭을 줄인다.
- 변조 지수는 클래식 h = 0.28~0.35, LE h = 0.45~0.55. 최대 편이 Δf = h × 심볼 속도 ÷ 2(LE 1M에서 약 ±250 kHz).
- SNR이 몇 dB만 떨어져도 BER은 자릿수로 뛴다. 패킷 오류율은 길이에 따라 커지며, 사양은 감도를 BER 0.1%(긴 패킷은 더 엄격)로 정의한다.
- 클래식 EDR은 1 Msym/s에 위상 변조로 2 Mb/s(π/4-DQPSK), 3 Mb/s(8DPSK)를 싣는다. 점 간격이 좁아 더 강한 신호가 필요하다. 3-DH5의 최대 처리량은 2,178.1 kb/s다.
- LE PHY는 넷: 1M(필수), 2M(시간 절반), Coded S=2(500 kb/s), S=8(125 kb/s). Coded는 부호율 ½·K=4 컨볼루션 부호와 패턴 매퍼로 비트를 퍼뜨려 감도를 높인다(사양 최소 −75/−82 dBm).
- 가까우면 2M이 가장 경제적이고, 멀면 Coded가 닿는다. 느린 PHY는 전력과 충돌 기회를 늘린다.
- HDT(공개 초안, Core 6.3에도 없음)는 2 Msym/s에 QPSK·QAM 계열 변조와 FEC를 더해 2~7.5 Mb/s를 패킷마다 골라 쓰는 새 LE PHY다. 새 무선 회로가 필요하다.
확인 퀴즈
블루투스가 진폭 변조 대신 FSK 계열을 쓰는 이유로 가장 적절한 것은?
LE 1M에서 변조 지수 h = 0.5일 때 최대 주파수 편이는?
가우시안 필터의 BT를 0.5에서 0.3으로 낮추면?
LE Coded S=8이 125 kb/s인 이유는?
EDR 3 Mb/s 패킷을 쓰던 링크가 거리가 멀어지자 2 Mb/s 패킷으로 바뀌었다. 이유는?
Core 6.3 사양이 LE Coded S=8 수신기에 요구하는 최소 감도는?