Advertising (Werbung) ist ein Mechanismus in Bluetooth Low Energy, durch den ein Peripheral-Gerät seine Anwesenheit bekannt gibt, indem es kurze Datenpakete auf drei dedizierten Kanälen (37, 38, 39) sendet. Die Bluetooth Core Specification 5.4 (2023) definiert zwei Arten von Werbung: connectable — das Gerät ist bereit für eine Verbindung, und non-connectable — wird von Beacons verwendet, die nur Daten senden, ohne eine bidirektionale Kommunikation aufzubauen. Die Werbeparameter — Intervall von 20 ms bis 10,24 s, Sendeleistung von -20 bis +10 dBm und Pakettyp — beeinflussen direkt die Erkennungsgeschwindigkeit des Geräts und seinen Stromverbrauch, was bei der Entwicklung batteriebetriebener IoT-Geräte entscheidend ist.
Wichtige Erkenntnisse
Advertising (Werbung) ist der Prozess des periodischen Sendens kurzer Datenpakete, durch den ein BLE-Gerät seine Anwesenheit und Verfügbarkeit bekannt gibt. Im Gegensatz zu klassischem Bluetooth, bei dem die Geräteerkennung Sekunden dauert, ermöglicht BLE Advertising die Erkennung eines Geräts in Millisekunden bei minimalem Stromverbrauch.
Die BLE-Architektur teilt Geräte in zwei Rollen: Peripheral (wirbt) und Central (scannt). Das Peripheral sendet Werbepakete, während das Central die Luft scannt und entscheidet, ob es eine Verbindung herstellt. Dieses asymmetrische Modell ist ein Hauptvorteil von BLE: das werbende Gerät verbraucht Energie nur zum Senden kurzer Pakete, nicht zum ständigen Abhören der Luft.
Der Werbeprozess besteht aus drei Phasen: advertising event (Senden des Pakets auf allen drei Kanälen), scan request/response (optionaler Austausch mit Central) und connection request (Verbindungsaufbau durch Central). Jede Phase wird vom Bluetooth Controller auf Link Layer-Ebene verwaltet.
BLE verwendet 40 Kanäle im 2,4-GHz-Band, von denen 37 (2402 MHz), 38 (2426 MHz) und 39 (2480 MHz) ausschließlich für Werbung reserviert sind. Drei Kanäle sind ein Kompromiss zwischen Erkennungszuverlässigkeit und Durchsatz: ein Kanal kann durch Wi-Fi oder andere Störungen belegt sein, aber das Gerät wird auf den anderen beiden erkannt.
Kanal 37 befindet sich in der Nähe von Wi-Fi-Kanal 1, Kanal 39 in der Nähe von Wi-Fi-Kanal 6, und Kanal 38 liegt dazwischen in der Zone minimaler Störungen. Die Wahl von drei Kanälen stellt sicher, dass das Gerät auch in dichten Funkumgebungen erkannt wird — zum Beispiel in einem Einkaufszentrum mit Dutzenden von Wi-Fi-Zugangspunkten.
Das Peripheral sendet das Werbepaket nacheinander auf allen drei Kanälen — dies wird als advertising event bezeichnet. Das zentrale Gerät scannt jeweils einen Kanal und wechselt zwischen ihnen gemäß einem im Bluetooth Controller implementierten Algorithmus. Die Wahrscheinlichkeit der Erkennung innerhalb eines advertising events liegt bei Abwesenheit von Kollisionen bei nahezu 100%.
Bluetooth Core Specification definiert mehrere Arten von Advertising-PDUs (Protocol Data Unit), jede mit eigener Funktion. Die Haupttypen sind: ADV_IND (connectable undirected advertising) — Standardwerbung mit Verbindungsmöglichkeit, ADV_NONCONN_IND (non-connectable undirected advertising) — nur Werbung ohne Verbindung, ADV_SCAN_IND (scannable undirected advertising) — unterstützt Scan-Anfrage, ADV_DIRECT_IND (directed advertising) — Werbung für ein bestimmtes Central.
ADV_IND ist der häufigste Typ, der in den meisten BLE-Geräten verwendet wird. Beim Empfang von ADV_IND kann das Central eine Verbindungsanfrage senden und eine Verbindung herstellen. ADV_NONCONN_IND wird in Beacons verwendet: das Gerät wirbt, akzeptiert aber keine Verbindungsanfragen — nur Einweg-Datenübertragung.
| PDU-Typ | Beschreibung | Verbindung | Scan response |
|---|---|---|---|
| ADV_IND | Standardwerbung | Ja | Ja |
| ADV_DIRECT_IND | Werbung an bestimmtes Central | Ja | Nein |
| ADV_NONCONN_IND | Ohne Verbindung (Beacons) | Nein | Nein |
| ADV_SCAN_IND | Mit Scan-Unterstützung | Ja | Ja |
| ADV_EXT_IND | Erweiterte Werbung (BLE 5.0) | Ja | Ja |
ADV_DIRECT_IND enthält die Adresse des Ziel-Centrals, was einen schnellen Verbindungsaufbau ohne Warten auf Scannen ermöglicht. Es wird verwendet, wenn Geräte sich bereits „kennen“ — zum Beispiel nach dem Wiederherstellen der Verbindung zu einem zuvor gekoppelten Smartphone. Dieser Typ reduziert den Stromverbrauch, da keine Werbung auf allen Kanälen erforderlich ist.
Advertising-Intervall ist die Zeit zwischen aufeinanderfolgenden advertising events. Die Spezifikation erlaubt ein Intervall von 20 ms bis 10,24 s mit einer Schrittweite von 0,625 ms. Das tatsächliche Intervall wird als Summe eines festen Werts und einer zufälligen Verzögerung (0–10 ms) berechnet, was die Wahrscheinlichkeit von Kollisionen zwischen mehreren werbenden Geräten verringert.
Die Wahl des Intervalls ist ein Gleichgewicht zwischen Erkennungsgeschwindigkeit und Stromverbrauch. Bei einem Intervall von 20 ms wird das Gerät innerhalb von 20–30 ms erkannt, aber der Durchschnittsstrom beträgt etwa 1–2 mA. Bei einem Intervall von 1000 ms dauert die Erkennung bis zu 1 Sekunde, aber der Durchschnittsstrom sinkt auf 50–100 µA. Für die meisten IoT-Geräte wird ein Intervall von 200–1000 ms empfohlen.
Laut Texas Instruments Application Report SWRA478 (2024) reduziert die Erhöhung des Werbeintervalls von 100 ms auf 1000 ms den Stromverbrauch um 90%. Wenn das Gerät keine sofortige Erkennung erfordert (z. B. ein Temperatursensor, der einmal pro Minute Daten sendet), beträgt das optimale Intervall 1000–2000 ms.
Ein zusätzlicher Parameter ist Advertising-Timeout — die maximale Zeit, während der das Gerät wirbt. Unter iOS deaktiviert das Peripheral automatisch die Werbung nach 180 Sekunden im Hintergrund. Unter Android gibt es keine solche Einschränkung, aber Hersteller können eigene Grenzen hinzufügen.
Scan Response ist ein zusätzliches Datenpaket (bis zu 31 Byte), das das Peripheral als Antwort auf eine Scan-Anfrage des Centrals sendet. Die Scan-Anfrage wird vom Central nach Erhalt des Werbepakets gesendet, wenn es vor dem Verbinden weitere Informationen benötigt. Scan Response erfordert keine zusätzliche Werbung — es wird nur auf Anfrage gesendet, was Sendezeit spart.
Typische Datenverteilung: die Advertising-PDU (31 Byte) enthält Flags (3 Byte), Dienst-UUIDs (2–16 Byte) und Herstellerdaten (restliche Byte). Die Scan Response überträgt den vollständigen Gerätenamen (bis zu 28 Byte) und zusätzliche UUIDs oder TX Power Level. Diese Trennung ermöglicht es dem Central, Geräte schnell nach UUID zu filtern, ohne die Scan Response zu lesen.
Beim Entwurf des Werbepakets beachten: wenn alle 31 Byte in der Advertising-PDU belegt sind, kann das Central nicht feststellen, ob das Gerät Scan Response unterstützt. Es wird empfohlen, mindestens 3–5 Byte in der Advertising-PDU freizulassen, um die Scan-Response-Fähigkeit anzuzeigen.
Erweiterte Werbung (Extended Advertising BLE 5.0) ist eine Erweiterung des Werbemechanismus, die die Größe des Werbepakets von 31 auf 251 Byte erhöht und neue Pakettypen hinzufügt. Extended Advertising unterstützt auch coded PHY zur Erweiterung der Kommunikationsreichweite auf bis zu 1 km in offenen Gebieten und periodische Werbung (Periodic Advertising) zur Synchronisierung mehrerer Centrals.
Wichtigste Neuerungen: ADV_EXT_IND — erweiterte Advertising-PDU, die bis zu 251 Byte Daten in einem einzigen Paket übertragen kann. Extended Advertising verwendet die primären Kanäle (37, 38, 39) nur, um anzuzeigen, auf welchem sekundären Kanal (0–36) die vollständigen Daten übertragen werden. Dies reduziert die Last auf den Werbekanälen und erhöht den Gesamtdurchsatz des Systems.
Periodic Advertising ist ein zusätzlicher Mechanismus, bei dem das Peripheral Daten in festen Intervallen auf sekundären Kanälen sendet und das Central mit dieser Sequenz synchronisieren kann. Es wird für Dienste verwendet, die regelmäßige Datenaktualisierungen erfordern — zum Beispiel Audio-Streaming oder Echtzeit-Sensorwerte.
| Parameter | Standard BLE | Erweitert BLE 5.0 |
|---|---|---|
| Max. Paketgröße | 31 Byte | 251 Byte |
| Kanäle | Nur 37, 38, 39 | + sekundäre 0–36 |
| Reichweite | Bis zu 100 m | Bis zu 1000 m (coded PHY) |
| Geschwindigkeit | 1 Mbps | 125 kbps – 2 Mbps |
| Periodisch | Nein | Ja |
iOS (Core Bluetooth) stellt CBPeripheralManager zur Verwaltung der Werbung bereit. Die Werbeparameter werden über das advertisementData-Wörterbuch mit den Schlüsseln CBAdvertisementDataLocalNameKey (Gerätename), CBAdvertisementDataServiceUUIDsKey (Dienst-UUIDs), CBAdvertisementDataTxPowerLevelKey (Leistungspegel) festgelegt. iOS verwaltet das Werbeintervall automatisch und erlaubt keine manuelle Einstellung.
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) bietet eine detailliertere Kontrolle. Verfügbar: AdvertiseSettings — Moduskonfiguration (LOW_POWER, BALANCED, LOW_LATENCY), Sendeleistung und Intervall; AdvertiseData — Paketdaten. Android unterstützt erweiterte Werbung (BLE 5.0) auf kompatiblen Geräten, aber der Anteil solcher Geräte am Markt beträgt etwa 30–40%.
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
);
Bei der Entwicklung einer plattformübergreifenden BLE-Anwendung sind die Unterschiede zu beachten: iOS erlaubt keine direkte Kontrolle des Werbeintervalls, garantiert aber einen stabilen Betrieb auf allen Geräten; Android bietet volle Kontrolle, aber Fragmentierung von Versionen und Herstellern kann zu Inkompatibilitäten führen. Es wird empfohlen, die Werbung auf echten Geräten beider Plattformen zu testen.
Häufig gestellte Fragen
Connectable Werbung (ADV_IND) ermöglicht es dem Central, eine bidirektionale Verbindung mit dem Gerät herzustellen. Non-connectable (ADV_NONCONN_IND) ist nur eine Einweg-Datenübertragung, die von Beacons verwendet wird, um eine Kennung ohne Verbindungsmöglichkeit zu senden.
Das Standard-Werbepaket hat 31 Byte, Scan Response weitere 31 Byte. Erweiterte Werbung (BLE 5.0+) erhöht das Limit durch Verwendung sekundärer Kanäle für die Datenübertragung auf 251 Byte.
Für die meisten IoT-Geräte wird 500–1000 ms empfohlen. Wenn eine schnelle Erkennung erforderlich ist (z. B. zum Verbinden von Kopfhörern), verwenden Sie 20–50 ms. Für Sensoren mit seltener Datenübertragung verwenden Sie 1000–2000 ms zur Energieeinsparung.
Drei Kanäle (37, 38, 39) sind ein Kompromiss zwischen Erkennungszuverlässigkeit und Durchsatz. Ein Kanal kann durch Wi-Fi belegt sein, aber das Gerät wird auf den anderen beiden erkannt. Kanal 38 befindet sich in der Zone minimaler Störungen zwischen den Wi-Fi-Kanälen.
Werbung ist der Hauptstromverbraucher in BLE. Bei einem Intervall von 1000 ms beträgt der Durchschnittsstrom 50–100 µA, was es dem Gerät ermöglicht, ein Jahr lang mit einer CR2032-Batterie zu laufen. Bei einem Intervall von 20 ms steigt der Strom auf 1–2 mA, wodurch sich die Betriebszeit auf mehrere Wochen reduziert.
Zusammenfassung
Wir entwickeln eine mobile Applikation schlüsselfertig
IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.
Lesen Sie auch