BLE Advertisement Format¶
Bluetooth Low Energy (BLE) verwendet Advertising Packets, um Geräte auffindbar zu machen, ohne eine aktive Verbindung aufzubauen. Dieses Verfahren ist die Grundlage für Beacon-Systeme wie Measure2Go und BEACON-LINE Advertisement in CSV Format.
1. Paketstruktur auf Physical Layer¶
Jedes BLE-Advertising-Paket besteht aus folgenden Feldern:
┌───────────┬──────────────────┬─────────────────────────────┬─────────┐
│ Preamble │ Access Address │ PDU │ CRC │
│ 1 Byte │ 4 Bytes │ 2–39 Bytes │ 3 Bytes │
└───────────┴──────────────────┴─────────────────────────────┴─────────┘
| Feld | Größe | Beschreibung |
|---|---|---|
| Preamble | 1 Byte | Synchronisationssequenz 0xAA |
| Access Address | 4 Bytes | Feste Adresse für Advertising: 0x8E89BED6 |
| PDU | 2–39 Bytes | Protocol Data Unit (Header + Payload) |
| CRC | 3 Bytes | Cyclic Redundancy Check zur Fehlerprüfung |
2. PDU – Protocol Data Unit¶
2.1 PDU Header (2 Bytes)¶
Bit: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
───────────────────────────────────────────────────────────────
RFU TxAdd RxAdd RFU ←── Length (6 Bit) ───→ ←── PDU Type ──→
| Feld | Bits | Beschreibung |
|---|---|---|
| PDU Type | 4 | Art des Advertising-Pakets |
| Length | 6 | Länge des Payloads (0–37 Bytes) |
| TxAdd | 1 | Adresstyp des Senders (0 = public, 1 = random) |
| RxAdd | 1 | Adresstyp des Empfängers |
2.2 PDU-Typen¶
| Typ | Wert | Name | Beschreibung |
|---|---|---|---|
ADV_IND |
0x00 |
Connectable Undirected | Generelles Advertising, verbindbar |
ADV_DIRECT_IND |
0x01 |
Connectable Directed | Gerichtetes Advertising an ein Gerät |
ADV_NONCONN_IND |
0x02 |
Non-Connectable Undirected | Nur Broadcast, keine Verbindung |
ADV_SCAN_IND |
0x06 |
Scannable Undirected | Broadcast + Scan Response möglich |
SCAN_REQ |
0x03 |
Scan Request | Anfrage nach zusätzlichen Daten |
SCAN_RSP |
0x04 |
Scan Response | Antwort auf Scan Request |
CONNECT_IND |
0x05 |
Connect Request | Verbindungsaufbau |
💡 Für Beacon-Systeme wird typischerweise
ADV_NONCONN_INDverwendet – keine Verbindung, nur Broadcast.
3. Advertising Data (AD) Struktur¶
Der Payload besteht aus einer oder mehreren AD Structures, die hintereinander angeordnet sind:
┌────────┬─────────┬──────────────────┐
│ Length │ AD Type │ AD Data │
│ 1 Byte │ 1 Byte │ Length-1 Bytes │
└────────┴─────────┴──────────────────┘
Mehrere AD Structures werden direkt aneinandergereiht (max. 31 Bytes gesamt):
[Len][Type][Data...][Len][Type][Data...][Len][Type][Data...]
Wichtige AD Types (GAP Types)¶
| AD Type | Name | Beschreibung |
|---|---|---|
0x01 |
Flags | Advertising-Modus (General Discoverable, BR/EDR nicht unterstützt etc.) |
0x02 |
Incomplete 16-bit UUIDs | Unvollständige UUID-Liste |
0x03 |
Complete 16-bit UUIDs | Vollständige Liste der 16-bit Service-UUIDs |
0x06 |
Incomplete 128-bit UUIDs | Unvollständige 128-bit UUID-Liste |
0x07 |
Complete 128-bit UUIDs | Vollständige 128-bit UUID-Liste |
0x08 |
Shortened Local Name | Verkürzter Gerätename |
0x09 |
Complete Local Name | Vollständiger Gerätename |
0x0A |
TX Power Level | Sendeleistung in dBm (für Distanzschätzung) |
0x16 |
Service Data (16-bit UUID) | Dienstdaten mit 16-bit UUID |
0xFF |
Manufacturer Specific Data | Herstellerspezifische Nutzdaten |
Flags (0x01) – Aufschlüsselung¶
Bit 0: LE Limited Discoverable Mode
Bit 1: LE General Discoverable Mode ← typisch für Beacons
Bit 2: BR/EDR Not Supported ← immer gesetzt bei reinem BLE
Bit 3: Simultaneous LE and BR/EDR (Controller)
Bit 4: Simultaneous LE and BR/EDR (Host)
4. Manufacturer Specific Data (0xFF)¶
Das flexibelste AD-Feld – die ersten 2 Bytes sind immer die Company ID (vergeben von der Bluetooth SIG):
┌────────┬───────────┬──────────────────────────────────┐
│ 0xFF │ Company ID│ Custom Payload │
│ │ 2 Bytes │ variable │
└────────┴───────────┴──────────────────────────────────┘
Bekannte Company IDs¶
| Company ID | Hersteller |
|---|---|
0x004C |
Apple Inc. |
0x0059 |
Nordic Semiconductor |
0x017B |
taskit GmbH |
0x0499 |
Ruuvi Innovations |
0x02E5 |
Espressif Inc. |
5. Bekannte Beacon-Formate¶
5.1 iBeacon (Apple)¶
Nutzt Manufacturer Specific Data mit Apple Company ID:
┌────────┬─────────────┬──────┬────────┬──────────┬───────┬───────┬──────────┐
│AD Type │ Company ID │Type │Length │ UUID │ Major │ Minor │TX Power │
│ 0xFF │ 0x4C 0x00 │ 0x02 │ 0x15 │ 16 B │ 2 B │ 2 B │ 1 B │
│ 1 B │ (Apple) 2 B │ 1 B │ 1 B │ │ │ │ (signed) │
└────────┴─────────────┴──────┴────────┴──────────┴───────┴───────┴──────────┘
| Feld | Wert / Größe | Beschreibung |
|---|---|---|
| AD Type | 0xFF – 1 Byte |
Kennzeichnet Manufacturer Specific Data |
| Company ID | 0x004C (Apple) – 2 Bytes |
Little Endian: 0x4C 0x00 |
| iBeacon Type | 0x02 – 1 Byte |
Kennzeichnet das iBeacon-Format |
| iBeacon Length | 0x15 (= 21) – 1 Byte |
Länge der folgenden Nutzdaten |
| UUID | 16 Bytes | Identifiziert die Beacon-Gruppe/Anwendung |
| Major | 2 Bytes | Grobe Unterteilung (z.B. Gebäude, Etage) |
| Minor | 2 Bytes | Feine Unterteilung (z.B. Raum, Position) |
| TX Power | 1 Byte (signed) | Kalibrierte RSSI bei 1 m (für Distanzschätzung) |
5.2 Eddystone (Google)¶
Nutzt Service Data mit Eddystone UUID 0xFEAA:
Eddystone-UID¶
[0x16][0xAA 0xFE][0x00][TX Power][Namespace 10B][Instance 6B]
Eddystone-URL¶
[0x16][0xAA 0xFE][0x10][TX Power][URL Scheme][Encoded URL]
URL Schemes: 0x00 = http://www. | 0x01 = https://www. | 0x02 = http:// | 0x03 = https://
Eddystone-TLM (Telemetry)¶
[0x16][0xAA 0xFE][0x20][Version][Battery mV][Temp][Adv Count][Uptime]
6. Advertising Channels¶
BLE nutzt 3 dedizierte Advertising-Kanäle (so gewählt, dass WLAN-Kanäle 1, 6, 11 vermieden werden):
| Kanal | Frequenz | Position im 2,4-GHz-Band |
|---|---|---|
| 37 | 2402 MHz | Unterhalb WLAN-Kanal 1 |
| 38 | 2426 MHz | Zwischen WLAN-Kanal 1 und 6 |
| 39 | 2480 MHz | Oberhalb WLAN-Kanal 11 |
Geräte senden typischerweise auf allen drei Kanälen nacheinander.
7. Advertising Interval & Stromverbrauch¶
| Interval | Erreichbarkeit | Stromverbrauch | Typischer Einsatz |
|---|---|---|---|
| 20 ms | Sehr schnell | Hoch | Kurzzeitiges Tracking |
| 100 ms | Schnell | Mittel | Allgemeines Advertising |
| 1.000 ms | Normal | Gering | Beacons, IoT-Sensoren |
| 10.240 ms | Langsam | Sehr gering | Batterie-optimierte Beacons |
💡 Measure2Go-Sensoren: Batterielebensdauer bis zu 2 Jahre durch optimiertes Advertising-Interval.
8. Beispiel: Vollständiges Advertising-Paket¶
Preamble: AA
Access Addr: D6 BE 89 8E
PDU Header: 02 04 (ADV_NONCONN_IND, Length=4+Payload)
AdvA (MAC): XX XX XX XX XX XX
Advertising Data:
[02][01][06] → Flags: General Discoverable, BLE only
[1A][FF][4C 00] → Manufacturer Specific, Apple
[02][15] → iBeacon Type + Length
[UUID 16 Bytes] → z.B. F7826DA6-4FA2-4E98-8024-BC5B71E0893E
[00 01] → Major = 1
[00 2A] → Minor = 42
[C5] → TX Power = -59 dBm
CRC: XX XX XX