L'Adaptive Frequency Hopping è la tecnica di spettro diffuso che permette a Bluetooth e Bluetooth Low Energy di evitare le interferenze cambiando canale e mappando quelli affidabili. Ecco come funziona, quali sono i parametri e cosa cambia nello sviluppo reale.

Che cos'è l'Adaptive Frequency Hopping e perché è così importante?

L'Adaptive Frequency Hopping, o più semplicemente AFH, è una tecnica di spettro diffuso che rende le trasmissioni radio più resistenti alle interferenze: invece di restare su una frequenza fissa, il sistema la cambia di continuo ed esclude i canali più congestionati. Nei sistemi Bluetooth i dispositivi connessi tengono d'occhio l'ambiente circostante e aggiornano una mappa dei canali, in modo che le frequenze rumorose vengano scartate e si trasmetta soltanto su quelle considerate affidabili. Da chi analizza prodotti wireless per mestiere, posso dire che è proprio questa mappa dinamica a fare la differenza tra un link che regge in ufficio e uno che crolla appena ci si avvicina a un router Wi-Fi.

Tutto parte dalla banda ISM a 2,4 GHz, un ambiente affollato che il Bluetooth deve condividere con Wi-Fi, Zigbee, forni a microonde e chissà quanti altri dispositivi. Per gestire questa convivenza, il Bluetooth suddivide la banda in 40 canali: nel Bluetooth Low Energy, 37 di questi sono canali generici che si possono usare per comunicare una volta che la connessione è stabilita. Prima che esistesse l'AFH, il Bluetooth classico utilizzava 79 degli 83,5 canali disponibili, con un salto di frequenza 1600 volte al secondo. Oggi però l'AFH non è più una semplice opzione: è un requisito obbligatorio per trasmettere con una potenza TX superiore a +10 dBm. In pratica, per molti moduli ad alte prestazioni è la condizione stessa che ne permette il funzionamento.

Come funziona AFH: mappa dei canali, hopping e rilevamento delle interferenze

L'AFH è una tecnica di allocazione pseudo-casuale delle frequenze: trasmettitore e ricevitore restano sincronizzati e seguono la stessa sequenza di salto. In Bluetooth, a ogni connection event il canale viene selezionato in modo deterministico tramite un channel selection algorithm; i dispositivi si spostano su quel canale e comunicano lungo una serie di frequenze che cambia di continuo attraverso la banda a 2,4 GHz. Il dispositivo primario, poi, tiene aggiornata una channel map in cui ogni canale è classificato come usato o non usato, e la condivide con il secondo dispositivo attraverso una procedura del link layer.

Il monitoraggio della qualità dei canali si basa su tecniche che variano da implementazione a implementazione. Il concetto di fondo è semplice: se un canale che prima funzionava bene inizia a peggiorare, la mappa viene aggiornata di conseguenza; se invece un canale problematico torna a dare segnali positivi, il suo stato viene ripristinato. Tra i metodi di valutazione più diffusi ci sono l'RSSI (Received Signal Strength Indication) e il PER (Packet Error Rate). Vale la pena citare anche la ricerca eAFH, presentata su arXiv nel dicembre 2021 da Valentin Poirot e Olaf Landsiedel, rispettivamente della Kiel University e della Chalmers University of Technology: il loro approccio introduce un'esplorazione informata per l'esclusione e la reinclusione dei canali, sfruttando le misure passate per capire quali frequenze hanno più probabilità di beneficiare di una reinclusione.

Vale la pena soffermarsi un attimo sul meccanismo di base dello spettro diffuso FHSS: in pratica la comunicazione viene suddivisa in tante parti e trasmessa seguendo una sequenza ripetuta di frequenze. Trasmettitore e ricevitore condividono questa sequenza di salto, che di solito nasce da un piano pseudo-casuale. AFH, però, non si limita a ripetere lo schema: aggiunge la capacità di adattare dinamicamente la sequenza all'ambiente circostante.

AFH in Bluetooth e Bluetooth Low Energy: canali e specifiche a confronto

Tra Bluetooth classico e Bluetooth Low Energy le differenze non sono di poco conto, e una tabella riassuntiva aiuta parecchio a districarsi tra specifiche e parametri. I numeri da tenere d'occhio riguardano soprattutto il numero di canali, la frequenza di salto e i requisiti minimi stabiliti dalla specifica Bluetooth.

ParametroBluetooth classico pre-AFHBluetooth Low Energy
Canali totali79 su 83,5 disponibili40
Canali dati7937 canali generici
Salti al secondo1600Basato su connection event
Canali minimi con AFHAlmeno 20Almeno 20
Potenza TX oltre +10 dBmAFH richiestoAFH richiesto

Nel Bluetooth Low Energy, il Channel Selection Algorithm #2 viene impiegato per i PDU BIS, come indicato nel Vol. 6 Part B della core specification. La procedura di aggiornamento della channel map, invece, risale alla specifica Bluetooth 4.0 e può essere avviata soltanto dal dispositivo centrale, ovvero il master. Quando si utilizza AFH, la specifica impone un insieme minimo di almeno venti canali. E per rendere l'idea delle dimensioni di cui parliamo: nel 2020 sono stati prodotti oltre 4 miliardi di dispositivi Bluetooth e BLE, mentre il solo traffico audio su Bluetooth arriva a generare 300 kbit/s, con trasmissione dati ogni 15 ms.

Implementare AFH: intervalli di scansione, blocco dei canali e API per sviluppatori

Passando alla pratica, Silicon Labs mette a disposizione un'implementazione AFH piuttosto ben documentata, che personalmente prendo come riferimento quando voglio capire come funzionano davvero i parametri sul campo. Il meccanismo di base è questo: un task in background scansiona periodicamente tutti i canali e ne misura la potenza ricevuta; se questa supera i -71 dBm, il canale viene bloccato. Al termine di ogni scansione viene generata una nuova channel map, che il dispositivo centrale provvede poi a inviare agli slave. Per completare la scansione dei 40 canali servono all'incirca 10 ms, con un consumo energetico aggiuntivo di circa 240 µW. Una volta bloccato, un canale rimane tale per almeno 8 afh_scan_intervals, e per sbloccarlo servono 8 misurazioni consecutive senza interferenze.

L'unità di misura di afh_scan_interval è 10 ms, mentre il valore predefinito è di 1 secondo. Se volete cambiarlo, dovete definire AFH_SCAN_INTERVAL_CONFIG_KEY 7 e poi chiamare sl_bt_system_linklayer_configure oppure gecko_cmd_system_linklayer_configure. Per quanto riguarda l'abilitazione di AFH nell'SDK di Silicon Labs, la procedura è abbastanza lineare: si installa il componente software AFH e il gioco è fatto, perché sl_bt_init_afh() viene richiamata automaticamente all'interno di sl_bt_init() dal code generator. Nelle versioni più datate dell'SDK, invece, bisogna chiamare gecko_init_afh() dopo gecko_init(&config), un passaggio in più che con le release recenti non serve più.

Parametro Silicon Labs AFHValore
afh_scan_interval predefinito1 secondo
Unità di afh_scan_interval10 ms
Tempo di scansione 40 canaliCirca 10 ms
Consumo aggiuntivoCirca 240 µW
Soglia di potenza per blocco-71 dBm
Durata minima del blocco8 afh_scan_intervals

Attenzione a un dettaglio operativo che ho visto causare problemi in fase di debug: la scansione AFH ha la priorità più alta e può bloccare altre operazioni se più attività si sovrappongono all'interno della finestra di 10 ms. Su chip come nRF5340 di Nordic Semiconductor, le discussioni su Nordic DevZone mostrano come la gestione della classificazione dei canali a livello host sia ancora in evoluzione nello stack Zephyr. Sul fronte dei prodotti, documentazione come le guide di Zebra (TC57, PS30) e Honeywell SPS, o le application note Texas Instruments swra487, confermano quanto AFH sia centrale nelle implementazioni industriali.

Vantaggi, limiti e convivenza con il Wi-Fi

Rispetto al blocco non adattivo dei canali, che richiede la disabilitazione manuale delle frequenze, AFH blocca dinamicamente i canali di bassa qualità. I vantaggi principali sono una maggiore resistenza alle interferenze, una sicurezza rafforzata grazie ai cambi pseudo-casuali di frequenza, un uso ottimizzato dello spettro e un'allocazione dinamica delle frequenze. In ambienti densi di reti Wi-Fi, questa adattività è ciò che permette al link Bluetooth di restare utilizzabile senza intervento manuale.

I limiti però esistono e vanno conosciuti. AFH non è attivo durante la fase di connessione e scoperta dei dispositivi; tutti i dispositivi della piconet devono supportare AFH; la reinclusione dei canali è complessa in ambienti dinamici; e la scansione AFH, avendo priorità massima, può interferire con altre operazioni. C'è anche un compromesso tipico di FHSS: il throughput è inferiore rispetto ad alcuni metodi a banda larga. Nella ricerca eAFH questi limiti vengono affrontati con un'esplorazione informata che raggiunge il 98-99,5% di affidabilità a livello link layer con interferenza Wi-Fi dinamica, un overhead di controllo dell'1% e una diversità di canali superiore del 40% rispetto agli approcci allo stato dell'arte.

Per chi progetta prodotti, la regola pratica è semplice: AFH non elimina le interferenze, le gestisce. Un canale Wi-Fi fisso che occupa una porzione stabile della banda viene identificato e escluso; un interferente che si sposta richiede invece misure continue e una mappa che si aggiorna di conseguenza.

AFH in LE Audio, IoT e sistemi wireless futuri

Nel contesto di LE Audio, la questione è più sottile di quanto sembri. Secondo una discussione su Nordic DevZone, AFH è un termine usato nel contesto della modalità BR/EDR. Per il broadcast LE Audio, la core specification descrive la channel classification e il Channel Selection Algorithm #2 a livello di link layer LE, ma la classificazione dei canali a livello host non era supportata nello stack Bluetooth upstream di Zephyr in quel momento. Questo significa che chi sviluppa audio LE deve verificare con attenzione il supporto effettivo nella propria piattaforma.

Nel mondo IoT, AFH è ciò che rende possibile la coesistenza tra migliaia di sensori e infrastrutture Wi-Fi dense. L'esclusione dei canali rumorosi riduce le ritrasmissioni, migliora la latenza e allunga la vita della batteria, un fattore critico per dispositivi alimentati a batteria che devono restare in campo per anni. La channel classification a livello BLE e le API come sl_bt_gap_set_data_channel_classification nei dispositivi EFR di Silicon Labs permettono agli sviluppatori di intervenire direttamente su questo processo.

Guardando avanti, la direzione è chiara: reti sempre più dense, spettro sempre più affollato e la necessità di un'allocazione dinamica delle frequenze che non richieda intervento umano. La ricerca su eAFH indica che c'è ancora margine per migliorare la reinclusione dei canali, e le implementazioni future probabilmente integreranno tecniche di apprendimento per decidere quando un canale torna affidabile.

Domande frequenti su AFH e Bluetooth

Le domande che ricevo più spesso riguardano il funzionamento pratico di AFH e il suo rapporto con le diverse versioni di Bluetooth. Qui raccolgo le risposte essenziali, con i riferimenti tecnici che servono per orientarsi tra specifiche e implementazioni reali.

Un chiarimento utile riguarda la differenza tra AFH e il salto di frequenza fisso: il secondo usa una sequenza fissa di salti, mentre AFH adatta dinamicamente la sequenza all'ambiente, identificando le fonti di interferenza fisse e escludendole dall'elenco dei canali disponibili. Questa distinzione spiega perché AFH sia diventato uno standard di fatto nelle applicazioni wireless moderne.

Prospettive e considerazioni per chi sviluppa

Per chi sviluppa prodotti Bluetooth, la scelta di AFH non è quasi mai una decisione isolata: dipende dalla potenza TX richiesta, dall'ambiente di deployment e dal supporto dello stack. Se il modulo deve trasmettere oltre +10 dBm, AFH è obbligatorio per specifica. Se il prodotto opera in un ambiente con Wi-Fi denso, AFH è ciò che determina l'esperienza utente finale. E se si lavora su LE Audio, è necessario verificare il supporto a livello host prima di promettere funzionalità che la piattaforma non offre.

La lezione che porto dal lavoro su questi sistemi è che i parametri contano più delle etichette. Un afh_scan_interval troppo lungo rende la mappa lenta a reagire; troppo corto aumenta il consumo. La soglia di -71 dBm e la finestra di 8 intervalli per blocco e sblocco sono compromessi ingegneristici che vanno compresi, non copiati. Chi progetta con AFH deve misurare, non assumere.

Domande frequenti su Adaptive Frequency Hopping

Che cos'è l'Adaptive Frequency Hopping (AFH)?

L'AFH è una tecnica di spettro diffuso che migliora la resistenza alle interferenze radio cambiando rapidamente la frequenza portante ed evitando i canali congestionati. In Bluetooth i dispositivi connessi monitorano continuamente l'ambiente e aggiornano una channel map, così i canali rumorosi vengono esclusi e si usano solo quelli considerati affidabili.

Come funziona l'Adaptive Frequency Hopping nel Bluetooth Low Energy?

A ogni connection event i dispositivi connessi selezionano un canale tramite un channel selection algorithm e vi si spostano. Il dispositivo primario mantiene una channel map che classifica i canali come usati o non usati, la condivide con il secondo dispositivo e la aggiorna al variare delle interferenze, distribuendo la comunicazione sulla banda a 2,4 GHz.

Il Bluetooth LE Audio supporta l'Adaptive Frequency Hopping?

Secondo una discussione su Nordic DevZone, AFH è un termine usato nel contesto della modalità BR/EDR. Per il broadcast LE Audio, la core specification descrive la channel classification e il Channel Selection Algorithm #2 a livello di link layer LE, ma la classificazione dei canali a livello host non era supportata nello stack Bluetooth upstream di Zephyr in quel momento.

Qual è la differenza tra AFH e il salto di frequenza fisso?

Il salto di frequenza fisso usa una sequenza fissa di canali, mentre AFH adatta dinamicamente la sequenza di salto all'ambiente che cambia. AFH identifica le fonti di interferenza fisse e le esclude dall'elenco dei canali disponibili, mentre il salto non adattivo non può evitare i conflitti con altre tecnologie wireless.

Quali sono i limiti dell'AFH in Bluetooth?

L'AFH non è attivo durante la fase di connessione e scoperta, tutti i dispositivi della piconet devono supportarlo e la reinclusione dei canali è complessa in ambienti dinamici. Inoltre la scansione AFH ha priorità massima e può interferire con altre operazioni. Il throughput resta inferiore rispetto ad alcuni metodi a banda larga.

Perché l'AFH è importante per la coesistenza con il Wi-Fi?

Nelle bande a 2,4 GHz Wi-Fi, Zigbee e altri dispositivi competono per lo stesso spettro. L'AFH identifica dinamicamente i canali occupati da interferenze fisse, come un router Wi-Fi, e li esclude dalla channel map. Questo riduce le ritrasmissioni, migliora la latenza e rende il link Bluetooth più stabile senza intervento manuale.