Service UUID: Was es ist, Format und Anwendungsbereiche

Autor: IT Sectr Veröffentlicht: 2026-07-14 Lesezeit: 8 Min.

Service UUID ist ein eindeutiger 16- oder 128-Bit-Identifikator von Bluetooth Low Energy (BLE), der einen funktionalen Dienst auf einem Gerät eindeutig definiert. Bluetooth SIG hat standardmäßige 16-Bit-UUIDs für gängige Dienste wie Battery Service (0x180F), Device Information (0x180A) und Heart Rate (0x180D) vergeben, was die plattformübergreifende Kompatibilität vereinfacht. Gemäß der Bluetooth Core Specification 5.4 (2023) müssen benutzerdefinierte Dienste von Drittanbietern 128-Bit-UUIDs verwenden, deren Format globale Eindeutigkeit ohne zentrale Registrierung garantiert. Die korrekte Deklaration der Service UUID ist der erste Schritt zum korrekten Betrieb des GATT-Servers auf einem Peripheriegerät.

Wichtige Punkte

  • Service UUID ist ein BLE-Dienstidentifikator, der 16-Bit (Standard) oder 128-Bit (benutzerdefiniert) sein kann.
  • Bluetooth SIG hat mehr als 60 Standard-UUIDs für gängige Dienste vergeben — Battery, Heart Rate, Device Information und andere.
  • 128-Bit-UUIDs werden vom Entwickler generiert und garantieren die globale Eindeutigkeit des Dienstes ohne Registrierung bei einer zentralen Stelle.
  • Beim Scannen erkennt das Central die Dienste des Peripheral anhand ihrer Service UUID, was die Gerätekompatibilität bestimmt.
  • Ein einzelner GATT-Server kann mehrere Dienste mit unterschiedlichen UUIDs deklarieren — jeder Dienst enthält eigene Charakteristiken.

Was ist Service UUID in BLE?

Service UUID ist ein Identifikator, der einem Bluetooth Low Energy GATT-Dienst zur eindeutigen Erkennung durch andere Geräte zugewiesen wird. In der BLE-Architektur stellt jeder Dienst eine logische Gruppe von Charakteristiken dar, die durch eine gemeinsame Funktion verbunden sind. Beispielsweise enthält der Battery Service die Charakteristik Battery Level, die den aktuellen Batterieladezustand überträgt.

Bluetooth SIG (Special Interest Group) verwaltet das Register der standardmäßigen 16-Bit-UUIDs, die den häufigsten Diensten zugewiesen sind. Dies ermöglicht Geräten verschiedener Hersteller, die Dienste des jeweils anderen ohne vorherige Konfiguration zu erkennen. Ein Fitness-Tracker jeder Marke kann einen Heart Rate Service mit UUID 0x180D deklarieren, und jedes Smartphone wird verstehen, dass es sich um einen Herzfrequenzdienst handelt.

Gemäß Bluetooth Core Specification 5.4 (2023) ist der 16-Bit-UUID-Bereich (0x0000–0xFFFF) in zwei Teile unterteilt: 0x0001 bis 0xFFFE sind standardmäßige Bluetooth-SIG-Dienste, und 0xFFFF ist reserviert. Wenn ein Entwickler einen eindeutigen Dienst benötigt, der nicht im SIG-Register vorhanden ist, verwendet er eine 128-Bit-UUID.

Der Unterschied zwischen Standard- und benutzerdefinierten UUIDs liegt nicht nur in der Länge: 16-Bit-UUIDs sparen Ätherzeit im Advertising-Paket, da sie als 2 Bytes statt 16 Bytes übertragen werden. Für Geräte mit strengen Größenbeschränkungen des Advertising-Pakets (bis zu 31 Bytes) ist dies entscheidend.

Standard- und benutzerdefinierte UUIDs

Standardmäßige 16-Bit-UUIDs decken die Hauptkategorien von BLE-Geräten ab: medizinische Sensoren, Fitness-Tracker, Wearables und Zubehör. Wenn ein Gerät eine Standardfunktion implementiert, wird dem Entwickler empfohlen, die entsprechende UUID aus dem Bluetooth-SIG-Register für maximale Kompatibilität zu verwenden.

Hier sind einige Beispiele für standardmäßige Dienst-UUIDs:

UUID (hex)DienstnameZweck
0x1800Generic AccessZugriffskontrolle, Gerätename, Erscheinungsbild
0x180ADevice InformationHersteller, Modell, Seriennummer, Firmware-Version
0x180DHeart RatePulsmessung, Sensorposition, Batterieleistung
0x180FBattery ServiceBatterieladestand in Prozent
0x181AEnvironmental SensingTemperatur, Luftfeuchtigkeit, Druck, Beleuchtungsstärke
0x181CUser DataAlter, Gewicht, Größe, Geschlecht, Ruhepuls

Benutzerdefinierte 128-Bit-UUIDs sind erforderlich, wenn ein Gerät eine einzigartige Funktionalität bietet. Beispielsweise erstellt ein Hersteller von Smart Locks seinen eigenen Lock Control Dienst mit einer UUID im Format XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. Eine solche UUID gerät garantiert nicht mit anderen Diensten in Konflikt, da der 128-Bit-Wertebereich praktisch unerschöpflich ist.

Format der 128-Bit-UUID

Eine 128-Bit-UUID wird im Standardformat UUID RFC 4122 geschrieben: acht Hexadezimalzeichen, Bindestrich, vier, Bindestrich, vier, Bindestrich, vier, Bindestrich, zwölf Zeichen. Für BLE wird eine Version verwendet, bei der der Basisteil der Bluetooth-SIG-UUID feste Bits hat.

Bluetooth SIG definiert die Basis-UUID: 0000XXXX-0000-1000-8000-00805F9B34FB. Für standardmäßige 16-Bit-Dienste wird der UUID-Wert in diese Maske eingesetzt: beispielsweise wird 0x180F zu 0000180F-0000-1000-8000-00805F9B34FB. Benutzerdefinierte Dienste verwenden eine vollständig unabhängige, vom Entwickler generierte UUID.

Beim Erstellen einer benutzerdefinierten UUID können Sie jeden UUID-Generator (UUID v4) verwenden. Eine zufällige UUID v4 bietet 122 Bit Entropie, was Kollisionen praktisch unmöglich macht. Verwenden Sie keine modifizierte Version der Basis-Bluetooth-SIG-UUID für benutzerdefinierte Dienste — dies verstößt gegen die Spezifikation.

Wie man einen Dienst mit UUID im Code deklariert

Die Deklaration eines Dienstes mit einer UUID erfolgt auf der Peripheral-Seite beim Erstellen eines GATT-Servers. Unter iOS wird Core Bluetooth verwendet, unter Android android.bluetooth.le. Betrachten wir beide Ansätze.

iOS: Core Bluetooth

In Swift wird ein Dienst über CBMutableService unter Angabe der UUID erstellt, wonach ihm über CBMutableCharacteristic Charakteristiken hinzugefügt werden.

swift
import CoreBluetooth

// Standard 16-bit UUID
let batteryServiceUUID = CBUUID("180F")

// Custom 128-bit UUID
let customServiceUUID = CBUUID("E20A39F4-73F5-4BC4-A12F-17D1AD07A961")

let service = CBMutableService(
    type: customServiceUUID,
    primary: true
)

// Add characteristics
service.characteristics = [characteristic]

// Publish service via peripheralManager
peripheralManager.add(service)

Android: Bluetooth GATT Server

Unter Android wird der Dienst über BluetoothGattServer und BluetoothGattService registriert. Die UUID wird als Zeichenkette über java.util.UUID.fromString übergeben.

java
import android.bluetooth.*;

// Custom service UUID
private static final UUID CUSTOM_SERVICE_UUID =
    UUID.fromString("E20A39F4-73F5-4BC4-A12F-17D1AD07A961");

BluetoothGattService service = new BluetoothGattService(
    CUSTOM_SERVICE_UUID,
    BluetoothGattService.SERVICE_TYPE_PRIMARY
);

// Add characteristics
service.addCharacteristic(characteristic);

// Register on GATT server
gattServer.addService(service);

Scannen von Diensten nach UUID

Das Scannen nach Service UUID ermöglicht es dem Central, Geräte zu finden, die den benötigten Dienst bereitstellen, ohne sich mit allen entdeckten Peripherals zu verbinden. Ein BLE-Advertising-Paket kann eine Liste von Dienst-UUIDs enthalten, was dem Central ermöglicht, Geräte bereits in der Scan-Phase zu filtern.

In iOS scannt CBCentralManager Geräte mit einem Filter nach Dienst-UUID. Dies reduziert den Stromverbrauch und beschleunigt die Erkennung benötigter Geräte.

swift
import CoreBluetooth

let centralManager = CBCentralManager()

func scanForHeartRateMonitor() {
    let services: [CBUUID] = [
        CBUUID("180D") // Heart Rate Service
    ]
    centralManager.scanForPeripherals(
        withServices: services,
        options: nil
    )
}

// Delegate receives only Heart Rate Service devices
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // peripheral has only devices with UUID 0x180D
}

Unter Android wird die Filterung nach UUID ebenfalls über ScanFilter.Builder unterstützt. Dies ist eine effiziente Möglichkeit, die Suche einzuschränken, ohne sich mit jedem Gerät zu verbinden.

java
import android.bluetooth.le.*;

ScanFilter filter = new ScanFilter.Builder()
    .setServiceUuid(
        new ParcelUuid(
            UUID.fromString("0000180D-0000-1000-8000-00805F9B34FB")
        )
    )
    .build();

BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();
scanner.startScan(
    Collections.singletonList(filter),
    scanSettings,
    scanCallback
);

Mehrere Dienste auf einem Gerät

Ein einzelnes BLE-Gerät kann mehrere Dienste gleichzeitig deklarieren. Beispielsweise kann ein Fitnessarmband Battery Service (0x180F), Heart Rate Service (0x180D) und einen benutzerdefinierten Dienst zur Datensynchronisation mit der Cloud enthalten. Jeder Dienst hat seine eigene UUID und seinen eigenen Satz von Charakteristiken.

Bei mehreren Diensten ist es wichtig, die Advertising-Paket-Begrenzung zu berücksichtigen. Ein BLE-Advertising-Paket kann bis zu 31 Byte Daten enthalten. Wenn Dienst-UUIDs zu viel Platz beanspruchen, passen einige möglicherweise nicht in das Advertising-Paket. In diesem Fall wird die Scan Response verwendet — ein zweites Paket, das auf Anfrage des Central gesendet wird.

Gemäß Bluetooth Core Specification 5.4 (2023) ist die maximale Anzahl primärer Dienste auf einem einzelnen GATT-Server nicht durch die Spezifikation begrenzt, in der Praxis jedoch durch Gerätespeicher und Leistungsanforderungen. Für eingebettete Geräte mit 256 KB Flash-Speicher werden nicht mehr als 5–10 Dienste empfohlen.

Häufig gestellte Fragen

Was ist der Unterschied zwischen einer 16-Bit-UUID und einer 128-Bit-UUID?

16-Bit-UUIDs sind von Bluetooth SIG für Standarddienste reserviert und belegen 2 Bytes im Advertising-Paket. 128-Bit-UUIDs werden für benutzerdefinierte Dienste verwendet und belegen 16 Bytes. Die Wahl hängt vom Diensttyp ab: Standardfunktionalität verwendet eine 16-Bit-UUID, einzigartige Funktionalität eine 128-Bit-UUID.

Wie generiert man eine benutzerdefinierte 128-Bit-UUID für einen BLE-Dienst?

Verwenden Sie UUID v4 — eine zufällige UUID, die durch Online-Tools, den Terminalbefehl uuidgen oder die API Ihrer Programmiersprache generiert wird. Beispiel: UUID.fromString(UUID.randomUUID().toString()) in Java oder UUID() in Swift.

Muss eine benutzerdefinierte UUID bei Bluetooth SIG registriert werden?

Nein, eine Registrierung ist nicht erforderlich. Bluetooth SIG registriert nur 16-Bit-UUIDs. Benutzerdefinierte 128-Bit-UUIDs werden vom Entwickler unabhängig generiert und garantieren Eindeutigkeit durch den riesigen Adressraum (2^128 Kombinationen).

Kann ein einzelner Dienst mehrere Charakteristiken enthalten?

Ja, ein standardmäßiger GATT-Dienst kann eine unbegrenzte Anzahl von Charakteristiken enthalten. Beispielsweise kann Battery Service Battery Level (0x2A19) und Battery Power State (0x2A1A) enthalten. Jede Charakteristik hat ihre eigene UUID und ihren eigenen Satz von Eigenschaften.

Was passiert, wenn zwei Geräte dieselbe benutzerdefinierte UUID verwenden?

Wenn die UUIDs übereinstimmen, kann das Central einen Dienst ohne zusätzliche Informationen nicht von einem anderen unterscheiden. Die Kollisionswahrscheinlichkeit bei zufälliger UUID v4 ist vernachlässigbar gering — etwa 5,3 × 10^−37. Verwenden Sie einen Zufalls-UUID-Generator, kopieren Sie keine UUIDs aus Beispielen.

Zusammenfassung

  • Service UUID ist ein globaler BLE-Dienstidentifikator, der 16-Bit (Standard) oder 128-Bit (benutzerdefiniert) sein kann.
  • Bluetooth SIG hat mehr als 60 Standard-UUIDs vergeben — verwenden Sie sie für Kompatibilität mit Geräten anderer Hersteller.
  • 128-Bit-UUIDs werden vom Entwickler über UUID v4 erstellt und garantieren Eindeutigkeit ohne zentrale Registrierung.
  • Beim Scannen filtert das Central Geräte nach Service UUID, was den Stromverbrauch reduziert und die Suche beschleunigt.
  • Ein einzelnes Gerät kann mehrere Dienste mit unterschiedlichen UUIDs deklarieren — die Anzahl ist durch Speicher und Advertising-Paket begrenzt.
  • In iOS und Android werden Dienste über CBMutableService bzw. BluetoothGattService unter Angabe der UUID deklariert.
  • Die richtige UUID-Wahl beeinflusst die Kompatibilität, die Größe des Advertising-Pakets und den korrekten Betrieb des GATT-Profils.

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.

Projekt besprechen

Lesen Sie auch