Bluetooth
Analysez les périphériques Bluetooth Low Energy à proximité, inspectez la puissance du signal et les données d’annonce, parcourez les services et caractéristiques GATT, et visualisez les données en temps réel des périphériques connectés.
Vue d'ensemble
L’outil Bluetooth utilise le framework CoreBluetooth d’Apple pour agir en tant que central BLE (Bluetooth Low Energy) et scanner les périphériques à proximité. Il affiche chaque périphérique découvert, avec la puissance du signal en temps réel (RSSI), les données d’annonce et le statut de connexion. Vous pouvez vous connecter aux périphériques connectables pour parcourir leurs services et caractéristiques GATT, lire les valeurs, vous abonner aux notifications et inspecter les données constructeur.
Table des matières
- Écran de vue d'ensemble
- Écran de détails du périphérique
- Permissions et exigences
- Détails techniques
- Notes et limitations
- Dépannage
Écran de vue d'ensemble
L’écran de vue d’ensemble est la vue principale de l’outil Bluetooth. Il contient une barre de recherche, une carte d’état avec les contrôles de scan, et une liste défilante des périphériques découverts.
Barre de recherche
Un champ texte en haut de l’écran filtre la liste des périphériques par nom. La saisie d’une requête réduit instantanément la liste aux périphériques dont le nom annoncé ou le nom du périphérique contient le texte recherché (insensible à la casse). Un bouton de suppression apparaît lorsque le champ n’est pas vide.
Carte d’état Bluetooth
La carte d’état affiche :
- L’étiquette Statut Bluetooth avec l’état actuel de la radio, codé par couleur :
- Activé (vert) — Bluetooth est actif et prêt à scanner.
- Désactivé (rouge) — la radio Bluetooth est éteinte.
- Non autorisé (orange) — l’utilisateur a refusé la permission Bluetooth pour l’application.
- Non supporté (rouge) — le matériel de l’appareil ne supporte pas Bluetooth.
- Inconnu / Réinitialisation (gris) — le système détermine encore l’état Bluetooth.
- Un bouton de contrôle de scan (visible uniquement lorsque Bluetooth est activé) :
- Arrêter le scan (rouge) — arrête le scan actif.
- Démarrer le scan (vert) — lance le scan des périphériques à proximité.
Le scan démarre automatiquement à l’ouverture de l’outil si Bluetooth est activé.
Liste des périphériques
Les périphériques découverts apparaissent dans une liste défilante, triée par RSSI (signal le plus fort en premier). La liste se met à jour en temps réel au fur et à mesure que de nouveaux p ériphériques sont trouvés ou que les données d’annonce des périphériques existants évoluent.
Ligne de périphérique
Chaque périphérique est affiché sous forme de carte contenant :
- Une icône Bluetooth dans un badge circulaire. Un arc blanc recouvre le cercle, se remplissant proportionnellement à la puissance du signal du périphérique (0–100%).
- Nom du périphérique — le nom local annoncé ou le nom du périphérique. Les périphériques ne diffusant pas de nom apparaissent comme
[No Name]. - RSSI — la puissance du signal reçue en dB (ex.
RSSI : -43 dB). - Un indicateur de statut en bas à gauche, affichant l’un des états suivants :
- Connecté (vert) — le périphérique est actuellement connecté.
- Connectable (bleu) — le périphérique annonce qu’il accepte les connexions.
- Services : N — le nombre de services GATT annoncés par le périphérique (affiché lorsque des services sont présents mais que le périphérique n’est pas encore connecté).
- (aucune étiquette) — le périphérique n’est pas connectable et n’annonce pas de services.
- Un indicateur à droite :
- Une icône verte de coche si le périphérique est connecté.
- Un chevron (
>) si le périphérique est connectable (tapez pour ouvrir les détails). - Le texte Non connectable si le périphérique n’accepte pas les connexions.
Touchez une ligne de périphérique pour accéder à l’Écran de détails du périphérique.
États vides
La vue d’ensemble affiche des états vides contextuels :
- Scan en cours — une icône de loupe avec une animation de chargement pendant que le scan initial est en cours et qu’aucun périphérique n’a encore été trouvé.
- Bluetooth désactivé / Non supporté — une icône Bluetooth barrée avec l’état actuel et une invite à activer Bluetooth.
- Scan arrêté — une icône Bluetooth avec un bouton Démarrer le scan lorsque Bluetooth est activé mais que le scan a été arrêté manuellement et qu’aucun périphérique n’est dans la liste.
Écran de détails du périphérique
Toucher une ligne de périphérique ouvre un écran de détails dédié. L’écran est divisé en une zone d’en-tête, une jauge de puissance du signal, et trois onglets de contenu.
En-tête et connexion
L’en-tête contient :
- Un bouton retour (
< Devices) pour revenir à l’écran de vue d’ensemble. - Le nom du périphérique affiché en évidence.
- Un indicateur d’état de connexion — un point coloré à côté d’une étiquette :
- Connecté (vert)
- Connexion en cours (orange)
- Déconnecté (rouge)
- Déconnexion en cours (orange)
- Un bouton Connecter / Déconnecter (affiché uniquement pour les périphériques connectables) :
- Connecter (bleu) — initie une connexion BLE. Un spinner de chargement s’affiche pendant l’établissement de la connexion.
- Connexion en cours... (bleu, désactivé) — affiché pendant la tentative de connexion.
- Déconnecter (rouge) — termine la connexion active.
Lorsqu’une connexion est établie, l’outil découvre automatiquement tous les services GATT et leurs caractéristiques. Les caractéristiques lisibles sont lues immédiatement, et celles supportant les notifications sont automatiquement souscrites.
Jauge de puissance du signal
La section de puissance du signal fournit une vue détaillée et en temps réel du signal radio du périphérique :
-
Jauge circulaire — un arc qui se remplit de 0% à 100% avec un dégradé angulaire (rouge à orange à jaune à vert). La valeur RSSI actuelle en dBm est affichée au centre.
-
Distance approximative — une estimation lisible dérivée de la valeur RSSI :
Plage RSSI Étiquette -30 à -50 dBm Très proche -51 à -65 dBm Proche -66 à -80 dBm Moyenne -81 à -90 dBm Lointaine En dessous de -90 dBm Très lointaine -
Barres de signal — un indicateur à 5 barres qui se remplit selon le pourcentage de puissance du signal.
-
Qualité du signal — une étiquette textuelle : Excellent (>80%), Bon (>60%), Moyen (>40%), Faible (>20%), ou Très faible (<=20%).
-
RSSI — la valeur brute en dBm.
-
Puissance TX — le niveau de puissance d’émission en dBm, si le périphérique l’annonce. Cette valeur représente la puissance du signal à 1 mètre de l’émetteur et peut être utilisée pour estimer la distance.
-
Historique du signal — un graphique à barres déroulant des 20 dernières mesures RSSI, codé par couleur (vert >= -60, jaune >= -75, rouge < -75). Cela aide à visualiser la stabilité du signal dans le temps.
Onglet Infos
L’onglet Infos affiche des informations générales sur le périphérique, organisées en lignes clé-valeur :
| Champ | Description |
|---|---|
| Nom | Le nom annoncé ou le nom du périphérique (ou [No Name]). |
| Identifiant | L’UUID du périphérique assigné par CoreBluetooth. Il s’agit d’un identifiant local et non de l’adresse MAC réelle du périphérique. |
| RSSI | Puissance du signal reçue actuelle en dB. |
| Puissance TX | Puissance d’émission en dBm (affichée uniquement si annoncée par le périphérique). |
| Connectable | Indique si le périphérique accepte les connexions BLE (Oui / Non). |
| État | État actuel de la connexion (Connecté, Connexion en cours, Déconnecté, Déconnexion en cours). |
| Découvert | Horodatage de la première détection du périphérique durant cette session de scan. |
| Dernière mise à jour | Horodatage de la dernière annonce ou mise à jour RSSI. |
Sous les lignes clé-valeur, deux sections supplémentaires apparaissent lorsque le périphérique fournit les données correspondantes :
- Services annoncés — une liste des UUID des services GATT que le périphérique inclut dans ses paquets d’annonce. Les services standards connus sont affichés avec leur nom lisible à côté de l’UUID (ex.
180F (Battery Service),180A (Device Information)). Voir Services reconnus pour la liste complète. - Données constructeur — les données brutes spécifiques au fabricant extraites de l’annonce, affichées sous forme de chaîne hexadécimale. Les deux premiers octets codent l’identifiant de la société Bluetooth SIG (little-endian).
Onglet Services
L’onglet Services est disponible uniquement lorsque le périphérique est connecté. Il affiche l’arborescence complète des services et caractéristiques GATT découverts lors de la connexion.
Chaque service est affiché sous forme de ligne extensible :
- Une icône colorée indiquant la catégorie du service :
- Bleu — Services génériques (Generic Access
1800, Generic Attribute1801) - Vert — Battery Service (
180F) - Orange — Device Information (
180A) - Violet — Services spécifiques au fournisseur (UUID commençant par
FE) - Gris — Autres / services inconnus
- Bleu — Services génériques (Generic Access
- Le nom du service (résolu depuis l’UUID pour les services connus) et la chaîne UUID brute.
- Un badge indiquant le nombre de caractéristiques appartenant à ce service.
- Un chevron qui pivote lorsque le service est étendu.
Services reconnus
| UUID | Nom du service |
|---|---|
1800 | Generic Access |
1801 | Generic Attribute |
180A | Device Information |
180F | Battery Service |
1812 | HID (Human Interface Device) |
1813 | Scan Parameters |
1819 | Location and Navigation |
181C | User Data |
FE59 | Apple Notification Center |
L’extension d’un service révèle ses caractéristiques. Chaque ligne de caractéristique affiche :
- Une icône colorée basée sur la propriété principale (violet pour lecture+écriture, bleu pour lecture seule, vert pour écriture seule, orange pour notification seule, gris sinon).
- Le nom de la caractéristique (résolu depuis l’UUID pour les caractéristiques GATT connues) et la chaîne UUID brute.
- Des pastilles de propriété — petites étiquettes colorées pour chaque propriété supportée :
- Read (bleu) — la valeur peut être lue à la demande.
- Write (vert) — la valeur peut être écrite avec accusé de réception.
- Write No Response (vert clair) — la valeur peut être écrite sans accusé de réception.
- Notify (orange) — la caractéristique peut envoyer des mises à jour au central.
- Indicate (orange clair) — comme Notify mais avec accusé de réception.
- Auth (violet) — la caractéristique requiert des écritures signées authentifiées.
- Un bouton œil (affiché lorsque la caractéristique a une valeur). Le toucher révèle la valeur actuelle de la caractéristique, affichée en plusieurs formats :
- Hex — la séquence brute d’octets.
- Chaîne — une interprétation UTF-8, si les octets forment un texte valide.
- Numérique — interprétation automatique selon la longueur des octets :
- 1 octet : valeur UInt8
- 2 octets : valeur UInt16
- 4 octets : valeur UInt32 et valeur Float
Caractéristiques reconnues
| UUID | Nom de la caractéristique |
|---|---|
2A00 | Device Name |
2A01 | Appearance |
2A04 | Peripheral Preferred Connection Parameters |
2A05 | Service Changed |
2A19 | Battery Level |
2A23 | System ID |
2A24 | Model Number String |
2A25 | Serial Number String |
2A26 | Firmware Revision String |
2A27 | Hardware Revision String |
2A28 | Software Revision String |
2A29 | Manufacturer Name String |
2A2A | IEEE 11073-20601 Regulatory Certification Data List |
2A50 | PnP ID |
Onglet Données
L’onglet Données affiche les données interprétées en temps réel du périphérique connecté. Si le périphérique n’est pas connecté, un message invite à se connecter avec un bouton Connecter (pour les périphériques connectables) ou affiche un message d’information.
Une fois connecté, l’onglet affiche jusqu’à trois cartes :
-
Données constructeur — la charge utile spécifique au fabricant dans l’annonce :
- ID constructeur — résolu à partir des deux premiers octets (little-endian) des données constructeur. Les IDs connus incluent Apple (
0x004C), Microsoft (0x0006), Samsung (0x0075), Xiaomi (0x038F), et Bosch (0x01D7). Les IDs inconnus sont affichés en hexadécimal (ex.ID : 0x1234). - Données brutes — le dump hexadécimal complet des octets des données constructeur.
- Visualisation des octets — un graphique à barres horizontal où chaque barre représente un octet. La hauteur de la barre est proportionnelle à la valeur de l’octet (0–255), fournissant une empreinte visuelle rapide des données.
- ID constructeur — résolu à partir des deux premiers octets (little-endian) des données constructeur. Les IDs connus incluent Apple (
-
Valeurs des caractéristiques — une liste de toutes les caractéristiques ayant une valeur lisible. Chaque entrée affiche :
- Le nom de la caractéristique (ou l’UUID si inconnu).
- La valeur interprétée (en octet, UInt16, UInt32/Float, chaîne UTF-8, ou hex selon la longueur des données).
- Un petit graphique à barres d’octets pour les valeurs jusqu’à 8 octets, avec des barres colorées selon la magnitude (bleu < 30%, vert < 60%, jaune < 80%, rouge >= 80%).
- Les valeurs se mettent à jour automatiquement pour les caractéristiques supportant les notifications.
-
Infos de connexion — métadonnées de timing et de signal :
- Découvert — l’heure de la première détection du périphérique, avec le temps écoulé depuis la découverte.
- Dernière mise à jour — l’heure de la dernière mise à jour des données, avec la puissance TX si disponible.
Permissions et exigences
- Permission Bluetooth — CoreBluetooth requiert que l’utilisateur accorde l’accès Bluetooth. Si la permission est refusée, Lirum affiche un écran de permissions avec un bouton pour ouvrir les Réglages iOS afin que l’utilisateur puisse réactiver l’accès.
- Radio Bluetooth — si Bluetooth est désactivé, l’outil reste accessible mais les contrôles de scan sont désactivés et un état vide invite l’utilisateur à activer Bluetooth. Aucun écran de permission n’est affiché dans ce cas.
- La permission Bluetooth est gérée par le système ; il n’y a pas de bouton explicite « demander la permission ». L’invite système apparaît automatiquement la première fois que CoreBluetooth s’initialise.
Détails techniques
- L’outil agit en tant que Central BLE utilisant
CBCentralManager. Il scanne tous les périphériques à proximité (scanForPeripherals(withServices: nil)), ce qui signifie qu’il découvre les périphériques indépendamment des services qu’ils annoncent. - Les valeurs RSSI (Received Signal Strength Indicator) varient typiquement de -30 dBm (très fort, périphérique très proche) à -100 dBm (très faible, périphérique éloigné ou obstrué). L’outil normalise cette plage sur une échelle de 0 à 100 % avec la formule :
(RSSI + 100) / 70. - Pour les périphériques connectés, le RSSI est relevé toutes les 2 secondes via
readRSSI(). Un filtre de bruit supprime les mises à jour inférieures à 2 dB pour réduire les fluctuations visuelles. - Lors de la connexion, l’outil appelle
discoverServices(nil)pour énumérer tous les services GATT, puisdiscoverCharacteristics(nil, for:)pour chaque service. Les caractéristiques lisibles sont lues automatiquement viareadValue(for:), et les caractéristiques supportant les notifications sont souscrites viasetNotifyValue(true, for:). - La puissance TX (
CBAdvertisementDataTxPowerLevelKey) représente la puissance du signal à 1 mètre de l’émetteur. Lorsque la puissance TX et le RSSI sont connus, leur différence peut être utilisée pour estimer la perte de chemin et la distance approximative. - Les données constructeur (
CBAdvertisementDataManufacturerDataKey) suivent le format Bluetooth SIG : les deux premiers octets sont l’identifiant de la société en little-endian, suivis des octets spécifiques au fournisseur. - L’identifiant du périphérique affiché dans l’onglet Infos est un UUID assigné par CoreBluetooth sur l’appareil local. Il est stable entre les lancements de l’application pour le même périphérique mais n’est pas l’adresse MAC Bluetooth réelle (que iOS ne divulgue pas).
Notes et limitations
- Ce que vous pouvez voir dépend des données annoncées par chaque périphérique et de ce que iOS expose via CoreBluetooth. Certains périphériques annoncent des données minimales.
- Beaucoup de périphériques apparaissent comme
[No Name]car ils n’incluent pas de nom local dans leurs paquets d’annonce. - Les estimations de distance approximative sont des indications grossières basées sur des seuils RSSI. Les distances réelles varient significativement selon l’environnement, les obstacles, l’orientation de l’antenne et la puissance d’émission.
- Tous les périphériques connectables ne se connectent pas forcément avec succès. Certains nécessitent un appairage préalable via les Réglages iOS, et certains peuvent refuser les connexions provenant de centrals inconnus.
- Les périphériques Bluetooth classiques (non BLE) ne sont pas visibles via CoreBluetooth et n’apparaîtront pas dans les résultats de scan.
- Les valeurs RSSI peuvent fluctuer rapidement à cause des interférences multi-trajets, de l’absorption corporelle et d’autres facteurs environnementaux. Le graphique d’historique du signal aide à lisser visuellement ces variations.
Dépannage
- Aucun périphérique trouvé — assurez-vous que Bluetooth est activé, restez sur l’écran Bluetooth quelques secondes, et appuyez sur Démarrer le scan si le scan a été arrêté.
- Permission refusée — appuyez sur le bouton Ouvrir les Réglages sur l’écran de permission et réactivez l’accès Bluetooth pour Lirum dans les réglages de confidentialité iOS.
- Échec de connexion — le périphérique peut nécessiter un appairage préalable dans les Réglages iOS, peut ne pas supporter les connexions d’applications tierces, ou peut être hors de portée.
- L’onglet Services est vide — certains périphériques n’exposent aucun service ou retardent la découverte des services. Patientez quelques secondes après la connexion. Si aucun service n’apparaît, le périphérique peut ne pas supporter les profils GATT standards.
- Les valeurs des caractéristiques affichent uniquement de l’hexadécimal — l’outil tente d’interpréter les valeurs en texte UTF-8 et en types numériques courants. Si aucune de ces interprétations ne s’applique, le dump hexadécimal brut est affiché.