BLE의 Advertising: 개념, 패킷 형식 및 광고 메커니즘

저자: IT Sectr 게시일: 2026-07-15 읽는 시간: 11 분

Advertising(광고)은 Bluetooth Low Energy에서 Peripheral 장치가 세 개의 전용 채널(37, 38, 39)을 통해 짧은 데이터 패킷을 전송하여 자신의 존재를 알리는 메커니즘입니다. Bluetooth Core Specification 5.4(2023)는 두 가지 유형의 광고를 정의합니다: connectable — 장치가 연결 준비가 됨, non-connectable — 양방향 통신 없이 데이터만 전송하는 비콘(Beacon)에서 사용됩니다. 광고 매개변수 — 간격 20 ms ~ 10.24 s, 송신 전력 -20 ~ +10 dBm 및 패킷 유형 — 은 장치 감지 속도와 전력 소비에 직접적인 영향을 미치며, 배터리로 작동하는 IoT 장치 개발에 중요합니다.

핵심 요점

  • Advertising은 세 개의 전용 채널 37, 38, 39에서 작동하는 BLE 장치 감지의 기본 메커니즘입니다.
  • 표준 광고 패킷은 31바이트 데이터로 제한됩니다. 확장 광고(BLE 5.0)는 한도를 251바이트로 늘립니다.
  • Connectable 광고는 Central이 장치에 연결할 수 있게 하고, non-connectable은 단방향 전송(비콘)만 가능합니다.
  • 광고 간격은 전력 소비에 영향을 미칩니다: 1000ms 간격에서 평균 전류는 100ms일 때보다 10배 낮습니다.
  • Scan response를 사용하면 Central 요청에 응답하여 추가 31바이트 데이터를 전송할 수 있습니다.

BLE에서 Advertising이란?

Advertising(광고)은 BLE 장치가 짧은 데이터 패킷을 주기적으로 전송하여 자신의 존재와 가용성을 알리는 프로세스입니다. 장치 감지에 몇 초가 걸리는 클래식 Bluetooth와 달리, BLE 광고는 최소한의 전력을 소비하면서 밀리초 단위로 장치를 감지할 수 있습니다.

BLE 아키텍처는 장치를 두 가지 역할로 나눕니다: Peripheral(광고 전송) 및 Central(스캔). Peripheral이 광고 패킷을 보내고 Central이 공기를 스캔하여 연결 여부를 결정합니다. 이 비대칭 모델은 BLE의 주요 이점입니다: 광고 장치는 지속적으로 공기를 청취하는 대신 짧은 패킷 전송에만 에너지를 소비합니다.

광고 프로세스는 세 단계로 구성됩니다: advertising event(세 채널 모두에 패킷 전송), scan request/response(Central과의 선택적 교환), connection request(Central의 연결 시작). 각 단계는 Link Layer 수준에서 Bluetooth Controller에 의해 관리됩니다.

광고 채널 및 그 목적

BLE는 2.4GHz 대역에서 40개 채널을 사용하며, 그중 37(2402MHz), 38(2426MHz), 39(2480MHz)는 광고 전용으로 할당됩니다. 세 개의 채널은 감지 신뢰성과 처리량 간의 절충안입니다: 하나의 채널이 Wi-Fi나 다른 간섭으로 사용 중이어도 다른 두 채널에서 장치가 감지됩니다.

채널 37은 Wi-Fi 채널 1 근처, 채널 39는 Wi-Fi 채널 6 근처, 채널 38은 그 사이의 최소 간섭 영역에 위치합니다. 세 채널의 선택은 수십 개의 Wi-Fi 액세스 포인트가 있는 쇼핑센터와 같은 혼잡한 무선 환경에서도 장치가 감지되도록 보장합니다.

Peripheral은 세 채널 모두에 순차적으로 광고 패킷을 전송합니다 — 이를 advertising event라고 합니다. 중앙 장치는 한 번에 하나의 채널을 스캔하며 Bluetooth Controller에 구현된 알고리즘에 따라 채널을 전환합니다. 충돌이 없는 경우 단일 advertising event 내 감지 확률은 100%에 가깝습니다.

광고 패킷의 유형

Bluetooth Core Specification은 각각 고유한 목적을 가진 여러 유형의 광고 PDU(Protocol Data Unit)를 정의합니다. 주요 유형은: ADV_IND(connectable undirected advertising) — 연결 가능한 표준 광고, ADV_NONCONN_IND(non-connectable undirected advertising) — 연결 없는 광고만, ADV_SCAN_IND(scannable undirected advertising) — 스캔 요청 지원, ADV_DIRECT_IND(directed advertising) — 특정 Central을 위한 광고입니다.

ADV_IND는 대부분의 BLE 장치에서 사용되는 가장 일반적인 유형입니다. ADV_IND를 수신하면 Central이 연결 요청을 보내고 연결을 설정할 수 있습니다. ADV_NONCONN_IND는 비콘(Beacon)에서 사용됩니다: 장치가 광고는 하지만 연결 요청을 수락하지 않습니다 — 단방향 데이터 전송만 가능합니다.

PDU 유형설명연결Scan response
ADV_IND표준 광고
ADV_DIRECT_IND특정 Central에 광고아니요
ADV_NONCONN_IND연결 없음(비콘)아니요아니요
ADV_SCAN_IND스캔 지원
ADV_EXT_IND확장 광고(BLE 5.0)

ADV_DIRECT_IND는 대상 Central의 주소를 포함하여 스캔을 기다리지 않고 빠르게 연결을 설정할 수 있습니다. 장치가 서로를 “인식”하는 경우에 사용됩니다 — 예를 들어, 이전에 페어링된 스마트폰에 다시 연결할 때. 이 유형은 모든 채널에서 광고할 필요가 없으므로 전력 소비를 줄입니다.

광고 간격 및 전력 소비

Advertising interval은 연속적인 advertising event 간의 시간입니다. 사양은 0.625ms 단계로 20ms ~ 10.24s의 간격을 허용합니다. 실제 간격은 고정값과 무작위 지연(0–10ms)의 합으로 계산되어 여러 광고 장치 간의 충돌 확률을 줄입니다.

간격 선택은 감지 속도전력 소비 간의 균형입니다. 20ms 간격에서는 장치가 20–30ms 내에 감지되지만 평균 전류는 약 1–2mA입니다. 1000ms 간격에서는 감지에 최대 1초가 걸리지만 평균 전류는 50–100µA로 떨어집니다. 대부분의 IoT 장치에서는 200–1000ms 간격이 권장됩니다.

Texas Instruments Application Report SWRA478(2024)에 따르면 광고 간격을 100ms에서 1000ms로 늘리면 전력 소비가 90% 감소합니다. 장치가 즉각적인 감지를 필요로 하지 않는 경우(예: 분당 한 번 데이터를 전송하는 온도 센서) 최적의 간격은 1000–2000ms입니다.

추가 매개변수는 advertising timeout입니다 — 장치가 광고하는 최대 시간입니다. iOS에서 Peripheral은 백그라운드에서 180초 후에 자동으로 광고를 중지합니다. Android에는 그러한 제한이 없지만 제조업체가 자체 제한을 추가할 수 있습니다.

Scan Response: 추가 데이터

Scan Response는 Peripheral이 Central의 스캔 요청에 응답하여 보내는 추가 데이터 패킷(최대 31바이트)입니다. 스캔 요청은 Central이 광고 패킷을 수신한 후 연결 전에 더 많은 정보가 필요할 때 보냅니다. Scan Response는 추가 광고가 필요하지 않으며 요청 시에만 전송되어 에어타임을 절약합니다.

일반적인 데이터 분포: advertising PDU(31바이트)에는 플래그(3바이트), 서비스 UUID(2–16바이트), 제조업체 데이터(나머지 바이트)가 포함됩니다. scan response에는 전체 장치 이름(최대 28바이트)과 추가 UUID 또는 TX Power Level이 포함됩니다. 이 분리를 통해 Central은 scan response를 읽지 않고 UUID로 장치를 빠르게 필터링할 수 있습니다.

광고 패킷을 설계할 때 고려사항: advertising PDU에서 31바이트 모두가 사용 중이면 Central이 장치가 scan response를 지원하는지 확인할 수 없습니다. scan response 기능을 표시하려면 advertising PDU에 최소 3–5바이트를 비워두는 것이 좋습니다.

BLE 5.0의 확장 광고

확장 광고(Extended Advertising BLE 5.0)는 광고 메커니즘의 확장으로 광고 패킷 크기를 31바이트에서 251바이트로 늘리고 새로운 패킷 유형을 추가합니다. Extended Advertising은 또한 개방된 지역에서 통신 범위를 최대 1km까지 확장하는 coded PHY와 여러 Central을 동기화하는 주기적 광고(Periodic Advertising)를 지원합니다.

주요 혁신: ADV_EXT_IND — 단일 패킷으로 최대 251바이트 데이터를 전송할 수 있는 확장 광고 PDU입니다. Extended Advertising은 기본 채널(37, 38, 39)을 전체 데이터가 전송되는 보조 채널(0–36)을 표시하는 데만 사용합니다. 이는 광고 채널의 부하를 줄이고 시스템 전체 처리량을 증가시킵니다.

주기적 광고(Periodic Advertising)는 Peripheral이 고정 간격으로 보조 채널에 데이터를 전송하고 Central이 이 시퀀스와 동기화할 수 있는 추가 메커니즘입니다. 정기적인 데이터 업데이트가 필요한 서비스(예: 오디오 스트리밍 또는 실시간 센서 판독값)에 사용됩니다.

매개변수표준 BLE확장 BLE 5.0
최대 패킷 크기31바이트251바이트
채널37, 38, 39만+ 보조 0–36
범위최대 100m최대 1000m(coded PHY)
속도1Mbps125kbps ~ 2Mbps
주기적아니요

iOS 및 Android에서 광고 구성

iOS(Core Bluetooth)는 광고 관리를 위해 CBPeripheralManager를 제공합니다. 광고 매개변수는 advertisementData 사전에서 CBAdvertisementDataLocalNameKey(장치 이름), CBAdvertisementDataServiceUUIDsKey(서비스 UUID), CBAdvertisementDataTxPowerLevelKey(전력 수준) 키로 설정됩니다. iOS는 광고 간격을 자동으로 관리하며 수동 설정을 허용하지 않습니다.

swift
import CoreBluetooth

class AdvertiserManager: NSObject, CBPeripheralManagerDelegate {

    private var peripheralManager: CBPeripheralManager!

    func startBLEAdvertising() {
        let data: [String: Any] = [
            CBAdvertisementDataLocalNameKey: "BLE Beacon",
            CBAdvertisementDataServiceUUIDsKey: [
                CBUUID("180F")
            ],
            CBAdvertisementDataIsConnectable: true
        ]
        peripheralManager.startAdvertising(data)
    }
}

Android(BluetoothLeAdvertiser)는 더 세부적인 제어를 제공합니다. 사용 가능: AdvertiseSettings — 모드 구성(LOW_POWER, BALANCED, LOW_LATENCY), 송신 전력 및 간격; AdvertiseData — 패킷 데이터. Android는 호환 장치에서 확장 광고(BLE 5.0)를 지원하지만 시장에서 이러한 장치의 비율은 약 30–40%입니다.

java
BluetoothLeAdvertiser advertiser =
    BluetoothAdapter.getDefaultAdapter()
    .getBluetoothLeAdvertiser();

AdvertiseSettings settings = new AdvertiseSettings.Builder()
    .setAdvertiseMode(
        AdvertiseSettings.ADVERTISE_MODE_LOW_POWER
    )
    .setTxPowerLevel(
        AdvertiseSettings.ADVERTISE_TX_POWER_MEDIUM
    )
    .build();

AdvertiseData data = new AdvertiseData.Builder()
    .setIncludeDeviceName(true)
    .addServiceUuid(new ParcelUuid(
        UUID.fromString(
            "0000180F-0000-1000-8000-00805F9B34FB"
        )
    ))
    .build();

advertiser.startAdvertising(
    settings, data, advertiseCallback
);

크로스 플랫폼 BLE 애플리케이션을 개발할 때 차이점을 고려하십시오: iOS는 광고 간격을 직접 제어할 수 없지만 모든 장치에서 안정적인 작동을 보장합니다; Android는 완전한 제어를 제공하지만 버전 및 제조업체의 파편화로 인해 비호환성이 발생할 수 있습니다. 두 플랫폼의 실제 장치에서 광고를 테스트하는 것이 좋습니다.

자주 묻는 질문

Connectable과 non-connectable 광고의 차이점은 무엇인가요?

Connectable 광고(ADV_IND)는 Central이 장치와 양방향 연결을 설정할 수 있게 합니다. Non-connectable(ADV_NONCONN_IND)은 단방향 데이터 전송만 가능하며, 연결 기능 없이 식별자를 브로드캐스트하는 비콘(Beacon)에서 사용됩니다.

광고 패킷으로 몇 바이트를 전송할 수 있나요?

표준 광고 패킷은 31바이트, scan response는 추가로 31바이트입니다. 확장 광고(BLE 5.0+)는 데이터 전송에 보조 채널을 사용하여 한도를 251바이트로 늘립니다.

IoT 장치에는 어떤 광고 간격을 선택해야 하나요?

대부분의 IoT 장치에는 500–1000ms가 권장됩니다. 빠른 감지가 필요한 경우(예: 헤드폰 연결) 20–50ms를 사용하세요. 데이터 전송이 드문 센서의 경우 전력 절약을 위해 1000–2000ms를 사용하세요.

BLE는 왜 세 개의 광고 채널을 사용하나요?

세 채널(37, 38, 39)은 감지 신뢰성과 처리량 간의 절충안입니다. 하나의 채널이 Wi-Fi로 사용 중이어도 다른 두 채널에서 장치가 감지됩니다. 채널 38은 Wi-Fi 채널 사이의 최소 간섭 영역에 위치합니다.

광고는 배터리 수명에 어떤 영향을 미치나요?

광고는 BLE의 주요 전력 소비원입니다. 1000ms 간격에서 평균 전류는 50–100µA로 CR2032 배터리로 1년 동안 작동할 수 있습니다. 20ms 간격에서는 전류가 1–2mA로 증가하여 작동 시간이 몇 주로 줄어듭니다.

요약

  • Advertising은 세 채널(37, 38, 39)에서 최대 31바이트 패킷 크기로 작동하는 BLE 장치 감지 메커니즘입니다.
  • 다섯 가지 광고 PDU 유형이 있습니다: ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND 및 BLE 5.0용 ADV_EXT_IND.
  • 광고 간격은 20ms ~ 10.24s 범위이며 감지 속도와 장치 전력 소비에 직접적인 영향을 미칩니다.
  • Scan Response는 Central 요청 시 Peripheral의 전력 소비를 증가시키지 않고 추가 31바이트 데이터를 제공합니다.
  • 확장 광고(BLE 5.0)는 패킷을 251바이트로 늘리고 coded PHY를 통해 최대 1km 범위를 지원합니다.
  • iOS에서는 CBPeripheralManager를 통해 광고가 관리되고 Android에서는 BluetoothLeAdvertiser를 통해 세부 설정이 가능합니다.
  • 광고 간격과 패킷 유형의 올바른 선택이 BLE 장치의 에너지 효율과 배터리 수명을 결정합니다.

턴키 방식의 모바일 애플리케이션을 개발해 드립니다

IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.

프로젝트 논의

더 읽어보기