Advertising Data a BLE-ben: szerkezet és adattípusok

Szerző: IT Sectr Megjelenés: 2026-07-15 Olvasási idő: 10 perc

Advertising Data — strukturált adatok, amelyeket a BLE-eszköz reklámcsomagokban továbbít önmaga és szolgáltatásai azonosítására. A Bluetooth Core Specification 5.4 (2023) meghatározza az AD Structure formátumot: minden elem tartalmaz egy hosszt (1 bájt), típust (1 bájt) és értéket (legfeljebb 29 bájt). A specifikáció összesen több mint 30 AD-típust ír le — a Flags és Local Name típusoktól a Service UUID és Manufacturer Specific Data típusokig. Az advertising data helyes csomagolása kritikus fontosságú az eszköz iOS-szel, Android-dal és más platformokkal való kompatibilitása szempontjából, valamint meghatározza a felismerés sebességét és a reklám energiahatékonyságát.

Főbb pontok

  • AD Structure — az adatok formátuma a BLE reklámcsomagban: hossz (1 bájt), típus (1 bájt), érték (legfeljebb 29 bájt).
  • A reklámcsomag 31 bájtra korlátozódik, a scan response további 31 bájt a kiegészítő adatok számára.
  • Flags (0x01) — kötelező AD-típus, amely meghatározza az LE Limited Discoverable és BR/EDR Not Supported módokat.
  • A Service UUID rövidített (2 bájt) vagy teljes (16 bájt) formátumban kerül továbbításra.
  • Manufacturer Specific Data (0xFF) — rugalmas típus a gyártó bármilyen egyedi adatai számára.

Mi az Advertising Data?

Advertising Data — strukturált mezőkészlet, amelyet a BLE-eszköz reklámcsomagokban továbbít képességeinek azonosítására és leírására. A Central a csatorna szkennelésével beolvassa ezeket az adatokat és döntést hoz: csatlakozzon az eszközhöz, hagyja figyelmen kívül, vagy kérjen további információkat a Scan Response segítségével.

Az adatok a TLV (Type-Length-Value) elv szerint vannak szervezve: minden AD-elem három mezőből áll. Length (1 bájt) — a Value + Type hossza (azaz az elem teljes hossza mínusz 1 bájt a Length számára). Type (1 bájt) — az adattípus azonosítója a Bluetooth Assigned Numbers alapján. Value (N bájt) — a típustól függő tartalom.

A szabványos reklámcsomag legfeljebb 31 bájt AD-adatot tartalmazhat. Ha ez nem elegendő, a Scan Response (további 31 bájt) vagy az Extended Advertising (BLE 5.0, legfeljebb 251 bájt) használatos. A reklámcsomag első bájtjai a PDU fejléc és az eszköz címe számára vannak fenntartva — az AD hasznos teher egy eltolástól kezdődik.

Az AD Structure formátuma

Minden AD-elem a reklámcsomagban a Length (1 bájt) mezővel kezdődik. A Length értéke a Length után következő bájtok számát jelzi — azaz Type + Value. Például egy Length=3 értékű elem azt jelenti, hogy a Length után 1 bájt Type és 2 bájt Value következik. A csomag akkor ér véget, amikor az összes elem hosszának összege eléri a reklámadatok méretét.

MezőMéretLeírás
Length1 bájtA Type + Value hossza (Length nélkül)
Type (AD Type)1 bájtAz adattípus azonosítója a Bluetooth SIG szerint
Value0–29 bájtEgy adott típus adatai

A Central elemzője az AD-elemek sorozatát a fejléc utáni első bájttól kezdve olvassa. Ha Length=0, az elemet figyelmen kívül hagyja, és az elemző a következő bájtra lép. Ismétlődő AD-típusok — több azonos Type-ú elem egy csomagban — megengedettek, de a Central a stack implementációjától függően csak az elsőt vagy az utolsót dolgozhatja fel.

Fontos szabály: a csomagban lévő összes Length(+1) összege nem haladhatja meg a reklámadatok méretét (31 bájt a reklám PDU számára). Ha az adatok nem férnek el, prioritásokat kell felállítani — mely AD-típusok kritikusak az elsődleges felismeréshez, és melyek helyezhetők át a Scan Response-ba.

Flags (0x01): kötelező AD-típus

Flags (AD Type 0x01) — kötelező elem minden BLE-eszköz reklámcsomagjában. 3 bájtot foglal: Length (0x02), Type (0x01), Value (1 bájt bitjelző). A jelzők meghatározzák az eszköz felismerési módjait és képességeit. A Core Specification javasolja a Flags minden reklámcsomagba való felvételét.

Fő jelzők: LE Limited Discoverable Mode (0. bit) — az eszköz korlátozott ideig érhető el, LE General Discoverable Mode (1. bit) — az eszköz folyamatosan elérhető, BR/EDR Not Supported (2. bit) — az eszköz csak LE-t támogat, Simultaneous LE and BR/EDR (3. bit) — mindkét mód támogatása. Tisztán BLE-eszközök esetén kötelező kombináció: LE General Discoverable + BR/EDR Not Supported.

A Flags helytelen értéke az egyik gyakori oka annak, hogy az eszköz nem észlelhető iOS-ben vagy Android-ban. Például, ha a BR/EDR Not Supported jelző nincs beállítva, az iOS megpróbálhat klasszikus Bluetooth-on keresztül csatlakozni a BLE helyett. Ellenőrizze a Flags értékét a reklámcsomag hibakeresésekor Bluetooth-elemzővel (nRF Connect, Wireshark).

Local Name: az eszköz neve

Local Name (AD Type 0x08 vagy 0x09) — a BLE-eszköz megjelenített neve. 0x08 típus (Shortened Local Name) — rövidített név, akkor használatos, ha a teljes név nem fér el a reklámcsomagban. 0x09 típus (Complete Local Name) — az eszköz teljes neve. A név maximális hossza 248 bájt, de a szabványos reklámcsomagban legfeljebb 28 bájt áll rendelkezésre.

Ha az eszköz neve meghaladja a reklámcsomagban rendelkezésre álló helyet, javasolt: a rövidített nevet a reklám PDU-ba (0x08 típus), a teljes nevet pedig a Scan Response-ba (0x09 típus) helyezni. Az iOS a szkennelés során a reklámcsomagból származó nevet jeleníti meg, a teljes név a csatlakozás vagy a Scan Response után válik elérhetővé.

Az eszköznév kiválasztásakor vegye figyelembe: a túl hosszú név helyet foglal, amelyet Service UUID vagy más fontos adatok számára lehetne használni. Javasolt névhossz 8–16 karakter. Kerülje a nem szabványos karaktereket és szóközöket — egyes BLE-stackek helytelenül dolgozhatják fel azokat.

Service UUID: szolgáltatások azonosítása

Service UUID (AD Type 0x02–0x07) — az egyik legfontosabb AD-típus, amely lehetővé teszi a Central számára, hogy csatlakozás nélkül meghatározza, milyen szolgáltatásokat nyújt az eszköz. A Bluetooth SIG több UUID-továbbítási formátumot határoz meg a mérettől függően: 0x02 (Incomplete 16-bit), 0x03 (Complete 16-bit), 0x04 (Incomplete 32-bit), 0x05 (Complete 32-bit), 0x06 (Incomplete 128-bit), 0x07 (Complete 128-bit).

16 bites UUID (2 bájt) — szabványos Bluetooth SIG szolgáltatások, például 0x180F (Battery Service), 0x180A (Device Information). 128 bites UUID (16 bájt) — a fejlesztő által meghatározott egyedi szolgáltatások. A 16 bites UUID csak 4 bájtot foglal az AD-ben (Length + Type + 2 bájt UUID), a 128 bites pedig 18 bájtot. Ha egy csomagban több egyedi UUID-t kell továbbítani, előfordulhat, hogy nem férnek el 31 bájtban.

Javasolt az Incomplete (0x02/0x04/0x06) típus használata, ha nem az eszköz összes UUID-je kerül továbbításra, csak a szűrés szempontjából legfontosabbak. Az UUID-k teljes listája a Scan Response vagy a csatlakozást követő GATT Discovery segítségével kerül továbbításra. Ez helyet takarít meg a reklámcsomagban más AD-típusok számára.

Manufacturer Specific Data

Manufacturer Specific Data (AD Type 0xFF) — a legrugalmasabb AD-típus, amely a gyártó egyedi adatainak továbbítására szolgál. A Value első 2 bájtja a Company Identifier Code, amelyet a Bluetooth SIG oszt ki (például 0x004C az Apple, 0x0075 a Samsung számára). A fennmaradó bájtok tetszőleges adatok a gyártó által meghatározott formátumban.

Az Apple a Manufacturer Data-t használja az iBeacon számára: Company ID (0x004C), Beacon típus (0x0215), UUID (16 bájt), Major (2 bájt), Minor (2 bájt), TX Power (1 bájt). A Google hasonló formátumot használ az Eddystone számára. Az IoT-eszközök gyártói gyakran helyeznek el érzékelőleolvasásokat vagy eszközállapotot a Manufacturer Data-ban.

js
// Manufacturer Specific Data elemzése a Central-ban
function parseManufacturerData(data) {
    const view = new DataView(data.buffer);

    // Cégazonosító kód (első 2 bájt)
    const companyId = view.getUint16(0, true);

    // Apple iBeacon ellenőrzése
    if (companyId === 0x004C) {
        return parseIBeacon(view);
    }

    return null;
}

A Manufacturer Data használatakor fontos betartani a méretkorlátozást: 31 bájt a teljes reklámcsomagra, mínusz a kötelező AD-típusok. Az Apple iBeacon esetében a teljes csomag 30 bájtot foglal, csak a Flags (3 bájt) számára hagyva helyet. Az Eddystone esetében — legfeljebb 31 bájt. A kompakt egyedi formátumok 4–8 bájtban foglalhatják a hőmérsékletet, páratartalmat vagy nyomást.

Adatcsomagolási stratégia

Az advertising data helyes csomagolása — annak művészete, hogy a maximálisan hasznos információt a 31 bájt korlátozott helyére elhelyezzük. A stratégia az eszköz rendeltetésétől függ: a jeladónak azonosítóra, az IoT-érzékelőnek leolvasásokra, a fitneszkövetőnek névre és szolgáltatás UUID-kre van szüksége. Általános elv: minél gyorsabban kell a Central-nak döntést hoznia, annál kritikusabb adatoknak kell lenniük a reklám PDU-ban.

Javasolt stratégia: reklám PDU (első 31 bájt) — Flags (3 bájt) + egy 16 bites Service UUID (4 bájt) + rövidített név (legfeljebb 12 karakter = 14 bájt) + Manufacturer Data (legfeljebb 10 bájt). Scan Response (második 31 bájt) — teljes név (maradék) + további Service UUID + TX Power Level (3 bájt). Ez a felosztás lehetővé teszi a Central számára, hogy gyorsan szűrje az eszközöket UUID alapján.

PrioritásAD-típusMéretHelyezze el
1 (kötelező)Flags (0x01)3 bájtReklám PDU
2 (szűrés)Service UUID (0x02–0x03)4+ bájtReklám PDU
3 (azonosítás)Local Name (0x08–0x09)2+ bájtReklám PDU (rövidített)
4 (kiegészítő)TX Power Level (0x0A)3 bájtScan Response
5 (egyedi)Manufacturer Data (0xFF)4+ bájtReklám PDU / Scan Response
6 (teljes adatok)Többi UUIDMérettől függőenScan Response

Az advertising data hibakeresése kötelező szakasz a BLE-eszköz fejlesztésében. Használja a nRF Connect-et (Nordic Semiconductor) vagy a Wireshark-ot Bluetooth-elemzővel a csomag nyers adatainak megtekintéséhez. Ellenőrizze, hogy minden AD-típusnak helyes a Length-je, a hosszúságok összege nem haladja-e meg a 31 bájtot, és a Flags megfelelően van-e beállítva az Ön használati forgatókönyvéhez.

Gyakran ismételt kérdések

Mi történik, ha az AD-elemek összege meghaladja a 31 bájtot?

A Bluetooth Controller stack elutasítja a határt meghaladó adatokat, vagy nem küldi el a csomagot. Ellenőrizze az AD-elemek teljes hosszát a reklámcsomag összeállításakor. Ha az adatok nem férnek el — helyezzen át egy részt a Scan Response-ba, vagy használja az Extended Advertising (BLE 5.0) funkciót 251 bájtos korláttal.

Lehet-e érzékelőleolvasásokat továbbítani a reklámcsomagban?

Igen, a Manufacturer Specific Data (0xFF) segítségével. Csomagolja a leolvasásokat 4–8 bájtba: például hőmérséklet (2 bájt fixed-point formátumban), páratartalom (2 bájt), akkumulátorfeszültség (2 bájt). Ez a megközelítés lehetővé teszi a Central számára, hogy csatlakozás nélkül olvassa az adatokat, energiát takarítva meg.

Melyik AD-típust használjam egyedi szolgáltatásokhoz?

Egyedi szolgáltatásokhoz használja a 128 bites UUID-t (AD Type 0x06–0x07). Ha az UUID nem fér el a reklám PDU-ban (16 bájt egy UUID számára), helyezze át a Scan Response-ba, vagy használja a rövidített Incomplete (0x06) formátumot csak az első egy-két UUID jelzésére.

Mi a különbség a Complete és Incomplete Service UUID típusok között?

Complete — a csomagban az eszköz összes szolgáltatásának UUID-je fel van sorolva. Incomplete — csak az UUID-k egy része (általában a legfontosabbak). A Central nem támaszkodhat az Incomplete-re teljes listaként, de gyors szűrésre használja. A teljes lista a GATT Discovery után érhető el.

Miért nem látja az iOS a BLE-eszközömet?

Gyakori ok — helytelen Flags (0x01). Győződjön meg arról, hogy a BR/EDR Not Supported bit be van állítva. Második ok — a Service UUID hiánya a reklámcsomagban (az iOS UUID alapján szűr). Harmadik — az eszköz túl ritkán reklámoz (az iOS legfeljebb 1000 ms intervallumot vár).

Összefoglalás

  • Advertising Data — strukturált adatok AD Structure formátumban (Length-Type-Value), amelyek BLE reklámcsomagokban kerülnek továbbításra.
  • A szabványos reklámcsomag legfeljebb 31 bájt adatot tartalmaz, a Scan Response további 31 bájtot a kiegészítő információk számára.
  • Flags (0x01) — kötelező AD-típus, amely meghatározza a felismerési módokat. BLE-eszközök esetén a BR/EDR Not Supported kötelező.
  • A Service UUID 16 bites (2 bájt) vagy 128 bites (16 bájt) formátumban, Complete vagy Incomplete formában kerül továbbításra a rendelkezésre álló helytől függően.
  • Manufacturer Specific Data (0xFF) — rugalmas típus egyedi adatokhoz, amelyet iBeacon, Eddystone jeladókban és IoT-eszközökben használnak.
  • Csomagolási stratégia: kötelező AD-típusok (Flags, Service UUID, rövidített név) — a reklám PDU-ban, kiegészítők — a Scan Response-ban.
  • Az advertising data hibakeresése nRF Connect vagy Wireshark segítségével — kötelező fejlesztési szakasz az AD-szerkezet helyességének ellenőrzéséhez.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is