Service UUID: apa itu, format dan di mana diterapkan

Penulis: IT Sectr Diterbitkan: 2026-07-14 Waktu membaca: 8 mnt

Service UUID — adalah pengenal unik 16 atau 128 bit Bluetooth Low Energy (BLE) yang secara jelas mendefinisikan layanan fungsional pada perangkat. Bluetooth SIG telah mengalokasikan UUID 16 bit standar untuk layanan umum seperti Battery Service (0x180F), Device Information (0x180A), dan Heart Rate (0x180D), yang menyederhanakan kompatibilitas lintas platform. Menurut Bluetooth Core Specification 5.4 (2023), layanan kustom pengembang pihak ketiga wajib menggunakan UUID 128 bit, yang formatnya menjamin keunikan global tanpa registri pusat. Deklarasi Service UUID yang benar adalah langkah pertama menuju pengoperasian server GATT yang benar pada perangkat periferal.

Poin utama

  • Service UUID — pengenal layanan BLE, yang bisa berupa 16 bit (standar) atau 128 bit (kustom).
  • Bluetooth SIG telah mengalokasikan lebih dari 60 UUID standar untuk layanan umum — Battery, Heart Rate, Device Information, dan lainnya.
  • UUID 128 bit dihasilkan oleh pengembang dan menjamin keunikan global layanan tanpa registrasi di badan pusat.
  • Saat memindai, Central mendeteksi layanan Peripheral berdasarkan Service UUID mereka, yang menentukan kompatibilitas perangkat.
  • Satu server GATT dapat mendeklarasikan beberapa layanan dengan UUID berbeda — setiap layanan berisi karakteristiknya sendiri.

Apa itu Service UUID di BLE?

Service UUID — adalah pengenal yang ditetapkan ke layanan GATT Bluetooth Low Energy untuk pengenalan unik oleh perangkat lain. Dalam arsitektur BLE, setiap layanan mewakili kelompok karakteristik logis yang disatukan oleh fungsi umum. Misalnya, layanan Battery Service berisi karakteristik Battery Level, yang mengirimkan tingkat pengisian baterai saat ini.

Bluetooth SIG (Special Interest Group) mengelola registri UUID 16 bit standar yang ditetapkan ke layanan yang paling umum. Ini memungkinkan perangkat dari berbagai produsen untuk mengenali layanan satu sama lain tanpa konfigurasi awal. Pelacak kebugaran merek apa pun dapat mendeklarasikan Heart Rate Service dengan UUID 0x180D, dan ponsel cerdas mana pun akan memahami bahwa itu adalah layanan detak jantung.

Menurut Bluetooth Core Specification 5.4 (2023), rentang UUID 16 bit (0x0000–0xFFFF) dibagi menjadi dua bagian: dari 0x0001 hingga 0xFFFE — layanan standar Bluetooth SIG, dan 0xFFFF dicadangkan. Jika pengembang membutuhkan layanan unik yang tidak ada di registri SIG, ia menggunakan UUID 128 bit.

Perbedaan antara UUID standar dan kustom tidak hanya dalam panjang: UUID 16 bit menghemat waktu transmisi paket iklan, karena ditransmisikan sebagai 2 byte, bukan 16 byte. Untuk perangkat dengan batasan ketat pada ukuran paket advertising (hingga 31 byte), ini sangat penting.

UUID standar dan kustom

UUID 16 bit standar mencakup kategori utama perangkat BLE: sensor medis, pelacak kebugaran, elektronik yang dapat dikenakan, dan aksesori. Jika perangkat mengimplementasikan fungsi standar — pengembang disarankan untuk menggunakan UUID yang sesuai dari registri Bluetooth SIG untuk kompatibilitas maksimum.

Berikut adalah beberapa contoh UUID layanan standar:

UUID (hex)Nama layananTujuan
0x1800Generic AccessManajemen akses, nama perangkat, tampilan luar
0x180ADevice InformationProdusen, model, nomor seri, versi perangkat lunak
0x180DHeart RatePengukuran denyut nadi, lokasi sensor, daya baterai
0x180FBattery ServiceTingkat pengisian baterai dalam persen
0x181AEnvironmental SensingSuhu, kelembaban, tekanan, pencahayaan
0x181CUser DataUsia, berat, tinggi, jenis kelamin, denyut nadi istirahat

UUID 128 bit kustom diperlukan ketika perangkat menyediakan fungsionalitas unik. Misalnya, produsen kunci pintar membuat layanan Lock Control sendiri dengan UUID berbentuk XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX. UUID semacam itu menjamin tidak akan bertentangan dengan layanan lain, karena ruang nilai 128 bit praktis tidak habis.

Format UUID 128 bit

UUID 128 bit ditulis dalam format UUID standar RFC 4122: delapan karakter heksadesimal, tanda hubung, empat, tanda hubung, empat, tanda hubung, empat, tanda hubung, dua belas karakter. Untuk BLE, digunakan versi di mana bagian dasar UUID Bluetooth SIG memiliki bit tetap.

Bluetooth SIG mendefinisikan UUID dasar: 0000XXXX-0000-1000-8000-00805F9B34FB. Untuk layanan 16 bit standar, nilai UUID dimasukkan ke dalam mask ini: misalnya, 0x180F menjadi 0000180F-0000-1000-8000-00805F9B34FB. Layanan kustom menggunakan UUID yang sepenuhnya independen, dihasilkan oleh pengembang.

Saat membuat UUID kustom, Anda dapat menggunakan generator UUID apa pun (UUID v4). UUID v4 acak menyediakan 122 bit entropi, yang membuat tabrakan praktis tidak mungkin. Jangan gunakan versi modifikasi dari UUID dasar Bluetooth SIG untuk layanan kustom — ini melanggar spesifikasi.

Cara mendeklarasikan layanan dengan UUID dalam kode

Deklarasi layanan dengan UUID dilakukan di sisi Peripheral saat membuat server GATT. Di iOS, Core Bluetooth digunakan untuk ini, di Android — android.bluetooth.le. Mari kita bahas kedua pendekatan.

iOS: Core Bluetooth

Di Swift, layanan dibuat melalui CBMutableService dengan menentukan UUID, setelah itu karakteristik ditambahkan melalui CBMutableCharacteristic.

swift
import CoreBluetooth

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

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

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

// Tambahkan karakteristik
service.characteristics = [characteristic]

// Publikasikan layanan melalui peripheralManager
peripheralManager.add(service)

Android: Bluetooth GATT Server

Di Android, layanan didaftarkan melalui BluetoothGattServer dan BluetoothGattService. UUID diteruskan sebagai string di java.util.UUID.fromString.

java
import android.bluetooth.*;

// UUID layanan kustom
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
);

// Tambahkan karakteristik
service.addCharacteristic(characteristic);

// Daftarkan di server GATT
gattServer.addService(service);

Memindai layanan berdasarkan UUID

Pemindaian berdasarkan Service UUID memungkinkan Central menemukan perangkat yang menyediakan layanan yang diperlukan tanpa terhubung ke semua Peripheral yang terdeteksi. Paket iklan BLE dapat berisi daftar UUID layanan, yang memungkinkan Central menyaring perangkat pada tahap pemindaian.

Di iOS, CBCentralManager memindai perangkat dengan filter berdasarkan UUID layanan. Ini mengurangi konsumsi daya dan mempercepat deteksi perangkat yang diperlukan.

swift
import CoreBluetooth

let centralManager = CBCentralManager()

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

// Delegate hanya menerima perangkat Heart Rate Service
func centralManager(
    _ central: CBCentralManager,
    didDiscover peripheral: CBPeripheral,
    advertisementData: [String: Any],
    rssi RSSI: NSNumber
) {
    // peripheral hanya memiliki perangkat dengan UUID 0x180D
}

Di Android, penyaringan berdasarkan UUID juga didukung melalui ScanFilter.Builder. Ini adalah cara efektif untuk mempersempit lingkaran pencarian tanpa terhubung ke setiap perangkat.

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
);

Beberapa layanan pada satu perangkat

Satu perangkat BLE dapat mendeklarasikan beberapa layanan secara bersamaan. Misalnya, gelang kebugaran dapat berisi Battery Service (0x180F), Heart Rate Service (0x180D), dan layanan kustom untuk sinkronisasi data dengan cloud. Setiap layanan memiliki UUID sendiri dan kumpulan karakteristiknya sendiri.

Dengan banyak layanan, penting untuk mempertimbangkan batasan paket iklan. Paket iklan BLE dapat berisi hingga 31 byte data. Jika UUID layanan memakan terlalu banyak ruang, beberapa di antaranya mungkin tidak muat dalam paket iklan. Dalam hal ini, scan response digunakan — paket kedua yang dikirim atas permintaan Central.

Menurut Bluetooth Core Specification 5.4 (2023), jumlah maksimum layanan primer pada satu server GATT tidak dibatasi oleh spesifikasi, tetapi dalam praktiknya dibatasi oleh memori perangkat dan persyaratan kinerja. Untuk perangkat tertanam dengan memori flash 256 KB, disarankan tidak lebih dari 5–10 layanan.

Pertanyaan yang sering diajukan

Apa perbedaan UUID 16 bit dengan UUID 128 bit?

UUID 16 bit dicadangkan oleh Bluetooth SIG untuk layanan standar dan memakan 2 byte dalam paket iklan. UUID 128 bit digunakan untuk layanan kustom dan memakan 16 byte. Pilihan tergantung pada jenis layanan: fungsionalitas standar menggunakan UUID 16 bit, yang unik menggunakan UUID 128 bit.

Bagaimana cara menghasilkan UUID 128 bit kustom untuk layanan BLE?

Gunakan UUID v4 — UUID acak yang dihasilkan oleh alat online, perintah terminal uuidgen, atau API bahasa pemrograman Anda. Contoh: UUID.fromString(UUID.randomUUID().toString()) di Java atau UUID() di Swift.

Apakah perlu mendaftarkan UUID kustom di Bluetooth SIG?

Tidak, pendaftaran tidak diperlukan. Bluetooth SIG hanya mendaftarkan UUID 16 bit. UUID 128 bit kustom dihasilkan secara mandiri oleh pengembang dan menjamin keunikan berkat ruang alamat yang sangat besar (2^128 kombinasi).

Dapatkah satu layanan berisi beberapa karakteristik?

Ya, layanan GATT standar dapat berisi jumlah karakteristik yang tidak terbatas. Misalnya, Battery Service dapat berisi Battery Level (0x2A19) dan Battery Power State (0x2A1A). Setiap karakteristik memiliki UUID dan kumpulan propertinya sendiri.

Apa yang terjadi jika dua perangkat menggunakan UUID kustom yang sama?

Jika UUID cocok, Central tidak akan dapat membedakan satu layanan dari yang lain tanpa informasi tambahan. Kemungkinan tabrakan UUID v4 acak sangat kecil — sekitar 5,3 × 10^−37. Gunakan generator UUID acak, jangan menyalin UUID dari contoh.

Ringkasan

  • Service UUID — pengenal global layanan BLE, yang bisa berupa 16 bit (standar) atau 128 bit (kustom).
  • Bluetooth SIG telah mengalokasikan lebih dari 60 UUID standar — gunakan untuk kompatibilitas dengan perangkat produsen lain.
  • UUID 128 bit dibuat oleh pengembang melalui UUID v4 dan menjamin keunikan tanpa registri pusat.
  • Saat memindai, Central menyaring perangkat berdasarkan Service UUID, yang mengurangi konsumsi daya dan mempercepat pencarian.
  • Satu perangkat dapat mendeklarasikan beberapa layanan dengan UUID berbeda — jumlahnya dibatasi oleh memori dan paket iklan.
  • Di iOS dan Android, layanan dideklarasikan melalui CBMutableService dan BluetoothGattService dengan menentukan UUID.
  • Pemilihan UUID yang tepat memengaruhi kompatibilitas, ukuran paket iklan, dan kebenaran pengoperasian profil GATT.

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga