Advertising în BLE: ce este, formate de pachete și mecanisme de reclamă

Autor: IT Sectr Publicat: 2026-07-15 Timp de citire: 11 min

Advertising (reclamă) — este un mecanism in Bluetooth Low Energy prin care dispozitivul Peripheral isi anunta prezenta, trimițand pachete scurte de date pe trei canale dedicate (37, 38, 39). Bluetooth Core Specification 5.4 (2023) defineste doua tipuri de reclama: connectable — dispozitivul este gata de conectare, si non-connectable — folosit de balize (Beacon) care doar transmit date fara a stabili o conexiune bidirectionala. Parametrii reclamei — intervalul de la 20 ms la 10.24 s, puterea emițătorului de la -20 la +10 dBm si tipul pachetului — influenteaza direct viteza de detectare a dispozitivului si consumul sau de energie, ceea ce este critic in dezvoltarea dispozitivelor IoT alimentate cu baterii.

Puncte principale

  • Advertising — mecanismul principal de detectare a dispozitivelor BLE, care functioneaza pe trei canale dedicate 37, 38 si 39.
  • Pachetul standard de reclama este limitat la 31 de octeti de date, extended advertising (BLE 5.0) mareste limita la 251 de octeti.
  • Connectable advertising permite Central sa se conecteze la dispozitiv, non-connectable — doar transmisie unidirectionala (balize).
  • Intervalul de reclama influenteaza consumul de energie: la intervalul 1000 ms curentul mediu este de 10 ori mai mic decat la 100 ms.
  • Scan response permite transmiterea a inca 31 de octeti de date ca raspuns la cererea Central.

Ce este Advertising in BLE?

Advertising (reclama) — este procesul de transmitere periodica a pachetelor scurte de date prin care dispozitivul BLE isi anunta prezenta si disponibilitatea. Spre deosebire de Bluetooth clasic, unde cautarea dispozitivelor dureaza secunde, BLE advertising permite detectarea dispozitivului in milisecunde, consumand energie minima.

Arhitectura BLE imparte dispozitivele in doua roluri: Peripheral (face reclama) si Central (scaneaza). Peripheral trimite pachete de advertising, iar Central scaneaza canalul si decide conectarea. Acest model asimetric este avantajul cheie al BLE: dispozitivul care face reclama consuma energie doar pentru trimiterea pachetelor scurte, nu pentru ascultarea continua a canalului.

Procesul de advertising consta din trei etape: advertising event (trimiterea pachetului pe toate cele trei canale), scan request/response (schimb optional cu Central) si connection request (initierea conexiunii de catre Central). Fiecare etapa este gestionata de Bluetooth Controller la nivelul Link Layer.

Canalele de reclama si scopul lor

BLE utilizeaza 40 de canale in banda de 2.4 GHz, dintre care 37 (2402 MHz), 38 (2426 MHz) si 39 (2480 MHz) sunt dedicate exclusiv pentru advertising. Trei canale reprezinta un compromis intre fiabilitatea detectarii si latimea de banda: un canal poate fi ocupat de Wi-Fi sau alte interferente, dar dispozitivul va fi detectat pe celelalte doua.

Canalul 37 se afla langa canalul Wi-Fi 1, canalul 39 — langa canalul Wi-Fi 6, iar canalul 38 este situat intre ele, in zona de interferenta minima. Alegerea a trei canale garanteaza ca dispozitivul va fi detectat chiar si in conditii de trafic radio intens — de exemplu, intr-un centru comercial cu zeci de puncte de acces Wi-Fi.

Peripheral trimite pachetul de advertising secvential pe toate cele trei canale — aceasta se numeste advertising event. Dispozitivul central scaneaza cate un canal odata, comutand intre ele conform algoritmului implementat in Bluetooth Controller. Probabilitatea de detectare in timpul unui advertising event in absenta coliziunilor este aproape de 100%.

Tipuri de pachete de reclama

Bluetooth Core Specification defineste mai multe tipuri de advertising PDU (Protocol Data Unit), fiecare cu scopul sau. Tipurile principale: ADV_IND (connectable undirected advertising) — reclama standard cu posibilitate de conectare, ADV_NONCONN_IND (non-connectable undirected advertising) — doar reclama fara conectare, ADV_SCAN_IND (scannable undirected advertising) — accepta scan request, ADV_DIRECT_IND (directed advertising) — reclama pentru un Central specific.

ADV_IND — cel mai raspandit tip, folosit in majoritatea dispozitivelor BLE. Dupa primirea ADV_IND, Central poate trimite un connection request si stabili conexiunea. ADV_NONCONN_IND este folosit de balize (Beacon): dispozitivul face reclama dar nu accepta cereri de conectare — doar transmisie unidirectionala de date.

Tip PDUDescriereConectareScan response
ADV_INDReclama standardDaDa
ADV_DIRECT_INDReclama pentru un Central specificDaNu
ADV_NONCONN_INDFara conectare (balize)NuNu
ADV_SCAN_INDCu suport de scanareDaDa
ADV_EXT_INDExtended advertising (BLE 5.0)DaDa

ADV_DIRECT_IND contine adresa Central-tinta, permitand stabilirea rapida a conexiunii fara a astepta scanarea. Se foloseste cand dispozitivele se cunosc deja — de exemplu, dupa reconectarea la un smartphone asociat anterior. Acest tip reduce consumul de energie deoarece nu necesita reclama pe toate canalele.

Intervalul de reclama si consumul de energie

Advertising interval — este timpul dintre advertising event-uri consecutive. Specificatia permite un interval de la 20 ms la 10.24 s cu pas de 0.625 ms. Intervalul real se calculeaza ca suma dintre o valoare fixa si o intarziere aleatoare (0–10 ms), ceea ce reduce probabilitatea coliziunilor intre mai multe dispozitive care fac reclama.

Alegerea intervalului reprezinta un echilibru intre viteza de detectare si consumul de energie. La intervalul de 20 ms, dispozitivul va fi detectat in 20–30 ms, dar curentul mediu va fi de aproximativ 1–2 mA. La intervalul de 1000 ms — detectarea va dura pana la 1 secunda, dar curentul mediu va scadea la 50–100 µA. Pentru majoritatea dispozitivelor IoT, intervalul recomandat este 200–1000 ms.

Conform Texas Instruments Application Report SWRA478 (2024), cresterea advertising interval de la 100 ms la 1000 ms reduce consumul de energie cu 90%. Daca dispozitivul nu necesita detectare instantanee (de exemplu, un senzor de temperatura care transmite date o data pe minut), intervalul optim este 1000–2000 ms.

Un parametru suplimentar — advertising timeout — timpul maxim in care dispozitivul face reclama. In iOS, Peripheral opreste automat reclama dupa 180 de secunde in modul de fundal. In Android nu exista o astfel de limitare, dar producatorii pot adauga propriile limite.

Scan Response: date suplimentare

Scan Response — este un pachet de date suplimentar (pana la 31 de octeti) pe care Peripheral il trimite ca raspuns la un scan request de la Central. Scan request este trimis de Central dupa primirea pachetului de advertising, daca are nevoie de mai multe informatii inainte de conectare. Scan Response nu necesita reclama suplimentara — este trimis doar la cerere, economisind canalul.

Distributia tipica a datelor: in advertising PDU (31 de octeti) se plaseaza flag-urile (3 octeti), UUID-urile serviciilor (2–16 octeti) si datele producatorului (octetii ramasi). In scan response se transmite numele complet al dispozitivului (pana la 28 de octeti) si UUID-uri suplimentare sau TX Power Level. Aceasta impartire permite Central sa filtreze rapid dispozitivele dupa UUID fara a citi scan response.

La proiectarea pachetului de advertising, retineti: daca toti cei 31 de octeti sunt ocupati in advertising PDU, Central nu va putea determina daca dispozitivul suporta scan response. Se recomanda sa lasati cel putin 3–5 octeti liberi in advertising PDU pentru a indica capacitatea de scan response.

Extended Advertising in BLE 5.0

Extended Advertising (BLE 5.0) — este o extensie a mecanismului de reclama care mareste dimensiunea pachetului de advertising de la 31 la 251 de octeti si adauga noi tipuri de pachete. Extended Advertising suporta de asemenea coded PHY pentru cresterea razei de comunicare pana la 1 km in teren deschis si reclama periodica (Periodic Advertising) pentru sincronizarea mai multor Central-uri.

Principalele inovatii: ADV_EXT_IND — extended advertising PDU care poate transmite pana la 251 de octeti de date intr-un singur pachet. Extended Advertising utilizeaza canalele primare (37, 38, 39) doar pentru a indica pe ce canal secundar (0–36) sunt transmise datele complete. Aceasta reduce incarcarea canalelor de reclama si mareste latimea de banda totala a sistemului.

Periodic Advertising — un mecanism suplimentar prin care Peripheral trimite date pe canale secundare cu un interval fix, iar Central se poate sincroniza cu aceasta secventa. Folosit pentru servicii care necesita actualizari regulate de date — de exemplu, transmisia audio sau citirile senzorilor in timp real.

ParametruStandard BLEExtended BLE 5.0
Dim. maxima pachet31 de octeti251 de octeti
CanaleDoar 37, 38, 39+ secundare 0–36
RazaPana la 100 mPana la 1000 m (coded PHY)
Viteza1 Mbps125 kbps – 2 Mbps
PeriodicNuDa

Configurarea reclamei in iOS si Android

iOS (Core Bluetooth) ofera CBPeripheralManager pentru gestionarea reclamei. Parametrii de advertising se seteaza prin dictionarul advertisementData cu cheile CBAdvertisementDataLocalNameKey (numele dispozitivului), CBAdvertisementDataServiceUUIDsKey (UUID-urile serviciilor), CBAdvertisementDataTxPowerLevelKey (puterea). iOS gestioneaza automat advertising interval si nu permite setarea manuala a acestuia.

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) ofera un control mai detaliat. Disponibile: AdvertiseSettings — setarea modului (LOW_POWER, BALANCED, LOW_LATENCY), a puterii emițătorului si a intervalului; AdvertiseData — datele pachetului. Android suporta extended advertising (BLE 5.0) pe dispozitive compatibile, dar ponderea acestor dispozitive pe piata este de aproximativ 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
);

La dezvoltarea unei aplicatii BLE cross-platform, luati in considerare diferentele: iOS nu permite controlul direct al advertising interval, dar garanteaza functionarea stabila pe toate dispozitivele; Android ofera control complet, dar fragmentarea versiunilor si producatorilor poate duce la incompatibilitati. Se recomanda testarea advertising pe dispozitive reale ale ambelor platforme.

Intrebari frecvente

Care este diferenta dintre connectable si non-connectable advertising?

Connectable advertising (ADV_IND) permite Central sa stabileasca o conexiune bidirectionala cu dispozitivul. Non-connectable (ADV_NONCONN_IND) — doar transmisie unidirectionala de date, folosita de balize (Beacon) pentru a transmite un identificator fara posibilitatea de conectare.

Cati octeti se pot transmite intr-un pachet de reclama?

Pachetul standard de advertising — 31 de octeti, scan response — inca 31 de octeti. Extended Advertising (BLE 5.0+) mareste limita la 251 de octeti prin utilizarea canalelor secundare pentru transmiterea datelor.

Ce advertising interval sa aleg pentru un dispozitiv IoT?

Pentru majoritatea dispozitivelor IoT se recomanda 500–1000 ms. Daca este necesara detectarea rapida (de exemplu, pentru conectarea castilor) — 20–50 ms. Pentru senzori cu transmitere rara de date — 1000–2000 ms pentru economisirea energiei.

De ce BLE utilizeaza trei canale de reclama?

Trei canale (37, 38, 39) reprezinta un compromis intre fiabilitatea detectarii si latimea de banda. Un canal poate fi ocupat de Wi-Fi, dar dispozitivul va fi detectat pe celelalte doua. Canalul 38 se afla in zona de interferenta minima intre canalele Wi-Fi.

Cum influenteaza advertising durata de functionare pe baterie?

Advertising este principalul consumator de energie in BLE. La intervalul 1000 ms, curentul mediu este de 50–100 µA, ceea ce permite dispozitivului sa functioneze un an pe o baterie CR2032. La intervalul de 20 ms, curentul creste la 1–2 mA, reducand durata de functionare la cateva saptamani.

Concluzii

  • Advertising — mecanism de detectare a dispozitivelor BLE care functioneaza pe trei canale (37, 38, 39) cu dimensiunea pachetului de pana la 31 de octeti.
  • Exista cinci tipuri de advertising PDU: ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND si ADV_EXT_IND pentru BLE 5.0.
  • Intervalul de reclama variaza de la 20 ms la 10.24 s si influenteaza direct viteza de detectare si consumul de energie al dispozitivului.
  • Scan Response ofera inca 31 de octeti de date la cererea Central, fara a creste consumul de energie al Peripheral.
  • Extended Advertising (BLE 5.0) mareste pachetul la 251 de octeti si suporta o raza de pana la 1 km prin coded PHY.
  • In iOS, advertising este gestionat prin CBPeripheralManager, in Android — prin BluetoothLeAdvertiser cu setari detaliate.
  • Alegerea corecta a advertising interval si a tipului de pachet determina eficienta energetica si durata de functionare autonoma a dispozitivului BLE.

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și