Passa al contenuto principale

Bluetooth

Esegui la scansione dei dispositivi Bluetooth Low Energy nelle vicinanze, ispeziona la potenza del segnale e i dati di advertising, esplora i servizi e le caratteristiche GATT e visualizza i dati in tempo reale dai dispositivi periferici connessi.

Schermata panoramica con controlli di scansione e dispositivi vicini ordinati per RSSI.
Ogni riga dispositivo mostra il nome, l'RSSI e se è connettibile.

Panoramica

Lo strumento Bluetooth utilizza il framework CoreBluetooth di Apple per agire come centrale BLE (Bluetooth Low Energy) ed eseguire la scansione delle periferiche nelle vicinanze. Visualizza ogni dispositivo rilevato, insieme alla potenza del segnale in tempo reale (RSSI), ai dati di advertising e allo stato di connessione. È possibile connettersi alle periferiche connettibili per esplorare i loro servizi e caratteristiche GATT, leggere valori, iscriversi alle notifiche e ispezionare i dati del produttore.

Indice


Schermata Panoramica

La schermata panoramica è la vista principale dello strumento Bluetooth. Contiene una barra di ricerca, una scheda di stato con i controlli di scansione e un elenco scorrevole dei dispositivi rilevati.

Un campo di testo nella parte superiore della schermata filtra l'elenco dei dispositivi per nome. Digitando una query, l'elenco si restringe istantaneamente ai dispositivi il cui nome pubblicizzato o nome periferica contiene il testo cercato (senza distinzione tra maiuscole e minuscole). Un pulsante di cancellazione appare quando il campo non è vuoto.

Scheda Stato Bluetooth

La scheda di stato mostra:

  • Etichetta Stato Bluetooth con lo stato attuale della radio, codificato a colori:
    • Acceso (verde) — Bluetooth attivo e pronto per la scansione.
    • Spento (rosso) — la radio Bluetooth è spenta.
    • Non autorizzato (arancione) — l’utente ha negato il permesso Bluetooth all’app.
    • Non supportato (rosso) — l’hardware del dispositivo non supporta il Bluetooth.
    • Sconosciuto / Ripristino (grigio) — il sistema sta ancora determinando lo stato Bluetooth.
  • Un pulsante di controllo scansione (visibile solo quando il Bluetooth è acceso):
    • Ferma scansione (rosso) — interrompe la scansione attiva.
    • Avvia scansione (verde) — avvia la scansione delle periferiche vicine.

La scansione parte automaticamente all’apertura dello strumento se il Bluetooth è acceso.

Elenco Dispositivi

I dispositivi rilevati appaiono in un elenco scorrevole, ordinato per RSSI (segnale più forte in alto). L’elenco si aggiorna in tempo reale man mano che vengono trovati nuovi dispositivi o che i dispositivi esistenti aggiornano i dati di advertising.

Riga Dispositivo

Ogni dispositivo viene visualizzato come una scheda contenente:

  • Un’icona Bluetooth racchiusa in un badge circolare. Un arco bianco sovrapposto riempie il cerchio proporzionalmente alla potenza del segnale del dispositivo (0–100%).
  • Nome dispositivo — il nome locale pubblicizzato o il nome periferica. I dispositivi che non trasmettono un nome appaiono come [No Name].
  • RSSI — la potenza del segnale ricevuto in dB (es. RSSI: -43 dB).
  • Un indicatore di stato in basso a sinistra, che mostra uno dei seguenti:
    • Connesso (verde) — il dispositivo è attualmente connesso.
    • Connettibile (blu) — il dispositivo pubblicizza che accetta connessioni.
    • Servizi: N — il numero di servizi GATT pubblicizzati dal dispositivo (mostrato quando sono presenti servizi ma il dispositivo non è ancora connesso).
    • (nessuna etichetta) — il dispositivo non è connettibile e non pubblicizza servizi.
  • Un indicatore finale a destra:
    • Un’icona spunta verde se il dispositivo è connesso.
    • Un chevron (>) se il dispositivo è connettibile (tocca per aprire i dettagli).
    • Testo Non connettibile se il dispositivo non accetta connessioni.

Tocca una riga dispositivo per accedere alla Schermata Dettagli Dispositivo.

Stati Vuoti

La panoramica mostra stati vuoti contestuali:

  • Scansione in corso — un’icona lente d’ingrandimento con animazione di caricamento mentre la scansione iniziale è in corso e non sono ancora stati trovati dispositivi.
  • Bluetooth spento / non supportato — un’icona Bluetooth barrata con lo stato attuale e un invito ad attivare il Bluetooth.
  • Scansione interrotta — un’icona Bluetooth con un pulsante Avvia scansione quando il Bluetooth è acceso ma la scansione è stata interrotta manualmente e l’elenco è vuoto.

Schermata Dettagli Dispositivo

Toccando una riga dispositivo si apre una schermata dedicata ai dettagli. La schermata è suddivisa in un’area di intestazione, un indicatore di potenza segnale e tre schede di contenuto.

Intestazione e Connessione

L’intestazione contiene:

  • Un pulsante indietro (< Dispositivi) per tornare alla schermata panoramica.
  • Il nome del dispositivo in evidenza.
  • Un indicatore stato connessione — un punto colorato accanto a un’etichetta:
    • Connesso (verde)
    • Connessione in corso (arancione)
    • Disconnesso (rosso)
    • Disconnessione in corso (arancione)
  • Un pulsante Connetti / Disconnetti (mostrato solo per dispositivi connettibili):
    • Connetti (blu) — avvia una connessione BLE. Un indicatore di caricamento viene mostrato durante la connessione.
    • Connessione in corso... (blu, disabilitato) — visualizzato durante il tentativo di connessione.
    • Disconnetti (rosso) — termina la connessione attiva.

Quando la connessione viene stabilita, lo strumento scopre automaticamente tutti i servizi GATT e le relative caratteristiche. Le caratteristiche leggibili vengono lette immediatamente e quelle che supportano le notifiche vengono sottoscritte automaticamente.

Indicatore Potenza Segnale

La sezione della potenza del segnale fornisce una visualizzazione dettagliata e in tempo reale del segnale radio del dispositivo:

  • Indicatore circolare — un arco che si riempie da 0% a 100% con un gradiente angolare (rosso, arancione, giallo, verde). Il valore RSSI attuale in dBm è mostrato al centro.

  • Distanza approssimativa — una stima leggibile derivata dal valore RSSI:

    Intervallo RSSIEtichetta
    -30 a -50 dBmMolto vicino
    -51 a -65 dBmVicino
    -66 a -80 dBmMedio
    -81 a -90 dBmLontano
    Sotto -90 dBmMolto lontano
  • Barre segnale — un indicatore a 5 barre che si riempie in base alla percentuale di potenza del segnale.

  • Qualità segnale — un’etichetta testuale: Eccellente (>80%), Buona (>60%), Discreta (>40%), Scarsa (>20%), o Molto scarsa (<=20%).

  • RSSI — il valore grezzo in dBm.

  • TX Power — il livello di potenza di trasmissione in dBm, se pubblicizzato dal dispositivo. Questo valore rappresenta la potenza del segnale a 1 metro dal trasmettitore e può essere usato per stimare la distanza.

  • Storico segnale — un grafico a barre degli ultimi 20 valori RSSI, codificato a colori (verde >= -60, giallo >= -75, rosso < -75). Aiuta a visualizzare la stabilità del segnale nel tempo.

Scheda Info

La scheda Info mostra informazioni generali sul dispositivo, organizzate in righe chiave-valore:

CampoDescrizione
NomeIl nome pubblicizzato o nome periferica (o [No Name]).
IdentificatoreUUID della periferica assegnato da CoreBluetooth. È un identificatore locale e non corrisponde al vero indirizzo MAC del dispositivo.
RSSIPotenza del segnale ricevuto attuale in dB.
TX PowerPotenza di trasmissione in dBm (mostrato solo se pubblicizzato dal dispositivo).
ConnettibileSe il dispositivo accetta connessioni BLE (Sì / No).
StatoStato attuale della connessione (Connesso, Connessione in corso, Disconnesso, Disconnessione in corso).
RilevatoTimestamp della prima rilevazione durante questa sessione di scansione.
Ultimo aggiornamentoTimestamp dell’ultimo advertising o aggiornamento RSSI.

Sotto le righe chiave-valore, compaiono due sezioni aggiuntive se il dispositivo fornisce i relativi dati:

  • Servizi pubblicizzati — elenco degli UUID dei servizi GATT inclusi nei pacchetti di advertising. I servizi standard noti sono mostrati con il nome leggibile accanto all’UUID (es. 180F (Battery Service), 180A (Device Information)). Vedi Servizi riconosciuti per l’elenco completo.
  • Dati produttore — i dati grezzi specifici del produttore dall’advertising, visualizzati come stringa esadecimale. I primi due byte codificano l’identificatore aziendale Bluetooth SIG (little-endian).

Scheda Servizi

La scheda Servizi è disponibile solo quando il dispositivo è connesso. Mostra l’intera struttura di servizi e caratteristiche GATT scoperta durante la connessione.

Ogni servizio è visualizzato come una riga espandibile:

  • Un’icona colorata che indica la categoria del servizio:
    • Blu — Servizi generici (Generic Access 1800, Generic Attribute 1801)
    • Verde — Battery Service (180F)
    • Arancione — Device Information (180A)
    • Viola — Servizi specifici del produttore (UUID che iniziano con FE)
    • Grigio — Altri servizi / sconosciuti
  • Il nome del servizio (risolto dall’UUID per i servizi noti) e la stringa UUID grezza.
  • Un badge che mostra il numero di caratteristiche appartenenti a quel servizio.
  • Un chevron che ruota quando il servizio viene espanso.

Servizi riconosciuti

UUIDNome Servizio
1800Generic Access
1801Generic Attribute
180ADevice Information
180FBattery Service
1812HID (Human Interface Device)
1813Scan Parameters
1819Location and Navigation
181CUser Data
FE59Apple Notification Center

Espandendo un servizio si visualizzano le sue caratteristiche. Ogni riga caratteristica mostra:

  • Un’icona colorata in base alla proprietà principale (viola per lettura+scrittura, blu per sola lettura, verde per sola scrittura, arancione per sola notifica, grigio altrimenti).
  • Il nome della caratteristica (risolto dall’UUID per le caratteristiche GATT note) e la stringa UUID grezza.
  • Etichette proprietà — piccole etichette colorate per ogni proprietà supportata:
    • Read (blu) — il valore può essere letto su richiesta.
    • Write (verde) — il valore può essere scritto con conferma.
    • Write No Response (verde chiaro) — il valore può essere scritto senza conferma.
    • Notify (arancione) — la caratteristica può inviare aggiornamenti alla centrale.
    • Indicate (arancione chiaro) — come Notify ma con conferma.
    • Auth (viola) — la caratteristica richiede scritture firmate autenticate.
  • Un pulsante occhio (mostrato quando la caratteristica ha un valore). Toccandolo si rivela il valore attuale della caratteristica, visualizzato in più formati:
    • Hex — la sequenza di byte grezza.
    • Stringa — interpretazione UTF-8, se i byte formano testo valido.
    • Numerico — interpretazione automatica in base alla lunghezza dei byte:
      • 1 byte: valore UInt8
      • 2 byte: valore UInt16
      • 4 byte: valore UInt32 e valore Float

Caratteristiche riconosciute

UUIDNome Caratteristica
2A00Device Name
2A01Appearance
2A04Peripheral Preferred Connection Parameters
2A05Service Changed
2A19Battery Level
2A23System ID
2A24Model Number String
2A25Serial Number String
2A26Firmware Revision String
2A27Hardware Revision String
2A28Software Revision String
2A29Manufacturer Name String
2A2AIEEE 11073-20601 Regulatory Certification Data List
2A50PnP ID

Scheda Dati

La scheda Dati mostra dati in tempo reale e interpretati dal dispositivo connesso. Se il dispositivo non è connesso, viene visualizzato un invito con un pulsante Connetti (per dispositivi connettibili) o un messaggio informativo.

Quando connesso, la scheda mostra fino a tre schede:

  • Dati produttore — il payload di advertising specifico del produttore:

    • ID produttore — risolto dai primi due byte (little-endian) dei dati produttore. ID noti includono Apple (0x004C), Microsoft (0x0006), Samsung (0x0075), Xiaomi (0x038F) e Bosch (0x01D7). ID sconosciuti sono mostrati in esadecimale (es. ID: 0x1234).
    • Dati grezzi — dump esadecimale completo dei byte dei dati produttore.
    • Visualizzazione byte — un grafico a barre orizzontali dove ogni barra rappresenta un byte. L’altezza della barra è proporzionale al valore del byte (0–255), fornendo un’impronta visiva rapida dei dati.
  • Valori caratteristiche — elenco di tutte le caratteristiche che hanno un valore leggibile. Ogni voce mostra:

    • Il nome della caratteristica (o UUID se sconosciuto).
    • Il valore interpretato (come byte, UInt16, UInt32/Float, stringa UTF-8 o hex a seconda della lunghezza dei dati).
    • Un piccolo grafico a barre dei byte per valori fino a 8 byte, con barre colorate in base all’intensità (blu < 30%, verde < 60%, giallo < 80%, rosso >= 80%).
    • I valori si aggiornano automaticamente per le caratteristiche che supportano le notifiche.
  • Info connessione — metadati su tempi e segnale:

    • Rilevato — ora della prima rilevazione del dispositivo, con tempo trascorso dalla scoperta.
    • Ultimo aggiornamento — ora dell’ultimo aggiornamento dati, con TX Power se disponibile.

Permessi e Requisiti

  • Permesso Bluetooth — CoreBluetooth richiede che l’utente conceda l’accesso al Bluetooth. Se il permesso viene negato, Lirum mostra una schermata di permessi con un pulsante per aprire le Impostazioni iOS e riabilitare l’accesso.
  • Radio Bluetooth — se il Bluetooth è spento, lo strumento rimane accessibile ma i controlli di scansione sono disabilitati e uno stato vuoto invita l’utente ad attivare il Bluetooth. In questo caso non viene mostrato alcun blocco permessi.
  • Il permesso Bluetooth è gestito dal sistema; non esiste un pulsante esplicito "richiedi permesso". Il prompt di sistema appare automaticamente al primo avvio di CoreBluetooth.

Dettagli Tecnici

  • Lo strumento agisce come BLE Central utilizzando CBCentralManager. Esegue la scansione di tutte le periferiche vicine (scanForPeripherals(withServices: nil)), quindi rileva i dispositivi indipendentemente dai servizi pubblicizzati.
  • I valori RSSI (Received Signal Strength Indicator) tipicamente variano da -30 dBm (molto forte, dispositivo molto vicino) a -100 dBm (molto debole, dispositivo lontano o ostruito). Lo strumento normalizza questo intervallo su una scala 0–100% usando la formula: (RSSI + 100) / 70.
  • Per i dispositivi connessi, l’RSSI viene letto ogni 2 secondi tramite readRSSI(). Un filtro riduce gli aggiornamenti inferiori a 2 dB per limitare le fluttuazioni visive.
  • Alla connessione, lo strumento chiama discoverServices(nil) per elencare tutti i servizi GATT, poi discoverCharacteristics(nil, for:) su ciascun servizio. Le caratteristiche leggibili vengono lette automaticamente tramite readValue(for:), e quelle notificabili vengono sottoscritte tramite setNotifyValue(true, for:).
  • TX Power (CBAdvertisementDataTxPowerLevelKey) rappresenta la potenza del segnale a 1 metro dal trasmettitore. Quando sono noti sia TX Power che RSSI, la differenza può essere usata per stimare la perdita di percorso e la distanza approssimativa.
  • Dati produttore (CBAdvertisementDataManufacturerDataKey) seguono il formato Bluetooth SIG: i primi due byte sono l’identificatore aziendale in ordine little-endian, seguiti dai byte payload specifici del produttore.
  • L’identificatore periferica mostrato nella scheda Info è un UUID assegnato da CoreBluetooth sul dispositivo locale. È stabile tra i lanci dell’app per lo stesso dispositivo ma non corrisponde all’indirizzo MAC Bluetooth reale (che iOS non espone).

Note e Limitazioni

  • Ciò che viene visualizzato dipende da ciò che ogni periferica pubblicizza e da ciò che iOS espone tramite CoreBluetooth. Alcuni dispositivi pubblicizzano dati minimi.
  • Molti dispositivi appaiono come [No Name] perché non includono un nome locale nei pacchetti di advertising.
  • Le stime di distanza approssimativa sono solo linee guida basate su soglie RSSI. Le distanze reali possono variare notevolmente in base ad ambiente, ostacoli, orientamento dell’antenna e potenza di trasmissione.
  • Non tutti i dispositivi connettibili si connetteranno con successo. Alcuni richiedono l’abbinamento preventivo tramite Impostazioni iOS, altri possono rifiutare connessioni da centrali sconosciute.
  • I dispositivi Bluetooth classici (non BLE) non sono visibili tramite CoreBluetooth e non appariranno nei risultati di scansione.
  • I valori RSSI possono fluttuare rapidamente a causa di interferenze multipath, assorbimento corporeo e altri fattori ambientali. Il grafico storico del segnale aiuta a smussare visivamente queste variazioni.

Risoluzione dei Problemi

  • Nessun dispositivo trovato — assicurati che il Bluetooth sia attivo, rimani sulla schermata Bluetooth per alcuni secondi e tocca Avvia scansione se la scansione è stata interrotta.
  • Permesso negato — tocca il pulsante Apri Impostazioni nella schermata dei permessi e riabilita l’accesso Bluetooth per Lirum nelle impostazioni Privacy di iOS.
  • Connessione fallita — il dispositivo potrebbe richiedere l’abbinamento tramite Impostazioni iOS, potrebbe non supportare connessioni da app di terze parti o potrebbe essere fuori portata.
  • Scheda Servizi vuota — alcuni dispositivi non espongono servizi o ritardano la scoperta dei servizi. Attendi alcuni secondi dopo la connessione. Se non compaiono servizi, il dispositivo potrebbe non supportare profili GATT standard.
  • Valori caratteristiche solo in hex — lo strumento tenta di interpretare i valori come testo UTF-8 e tipi numerici comuni. Se nessuna interpretazione è applicabile, viene mostrato il dump esadecimale grezzo.