BLE Advertising Data — Guide de Référence 📡
Décodage byte-by-byte du payload d'advertisement Bluetooth Low Energy (GAP).
Votre code — décodage byte-by-byte 🔍
Voici un exemple minimal annoté :
adv_data = (
b'\x02\x01\x06' # ^^Longueur ^^Type ^^Données (flags)
b'\x03\x03\xAA\xFE' # ^^Longueur ^^Type ^^UUID 16-bit (little-endian)
)
Bloc 1 — Flags
- 0x02 = Longueur (2 octets suivent : type + donnée)
- 0x01 = Type AD « Flags »
- 0x06 = Données (flags) — à lire bit par bit
Bits de 0x06 (LSB à droite) : 0000 0110 → bit1 = LE General Discoverable, bit2 = BR/EDR Not Supported
Note : 0x06 est l'usage courant pour devices BLE-only visible indéfiniment.
Bloc 2 — Liste de services (UUID 16-bit)
- 0x03 = Longueur (3 octets suivent : type + 2 octets UUID)
- 0x03 = Type AD « Complete List of 16-bit Service UUIDs »
- 0xAA 0xFE = UUID little-endian → valeur réelle 0xFEAA (Google Eddystone)
Structure générale d'un bloc AD 📐
Chaque bloc suit le motif :
[Len][Type][Data (Len-1 octets)]
La somme des blocs forme le payload (max 31 octets pour advertising channels).
Table de référence — Types AD courants 📋
Quelques types fréquemment rencontrés :
0x01— Flags0x03— Complete 16-bit UUIDs0x09— Complete Local Name0x0A— TX Power Level0x20— Service Data — 16-bit UUID0xFF— Manufacturer Specific Data
(Se référer au Bluetooth SIG pour la liste complète.)
Table de référence — Bits des Flags (Type 0x01) 🚩
- bit0 (0x01) : LE Limited Discoverable
- bit1 (0x02) : LE General Discoverable
- bit2 (0x04) : BR/EDR Not Supported
- bit3 (0x08) : LE + BR/EDR (Controller)
- bit4 (0x10) : LE + BR/EDR (Host)
- bits5–7 : réservés
Exemples / Recette MicroPython 🐍
# Flags
flags = b'\x02\x01\x06'
# UUID 16-bit Eddystone
uuid16 = b'\x03\x03\xAA\xFE'
# Nom du périphérique
name = b"MyDevice"
name_block = bytes([len(name)+1, 0x09]) + name
adv_data = flags + uuid16 + name_block
assert len(adv_data) <= 31
Astuce : Toujours encoder les UUID multi-octets en little-endian dans l'advertising payload.
Références & outils
- Bluetooth Core Specification (AD Types)
- Outils d'analyse :
hcitool/bluetoothctl, Wireshark (décodage BLE) - Pour visualiser beacons : nRF Connect, Beacon Scanner