Utilizzare una pennetta RTL-SDR come analizzatore di spettro con rtl_power su Raspberry Pi.
Il pacchetto rtl-sdr di Osmocom [1] contiene, tra le varie utility, anche la rtl_power [2] sviluppata da Keen Kyle. Questa utility consente l’analisi nel tempo dello spettro radio in un intervallo di frequenza illimitato (nel range di ricezione della chiavetta) con la risoluzione desiderata e per un tempo indefinito. Il risultato è un file di log in formato .csv che riporta allo scorrere del tempo i livelli di potenza ricevuti. Il log quindi può essere elaborato per creare una mappa grafica, detta heatmap, per l’analisi di quanto acquisito. La heatmap è molto simile al waterfall dei software SDR, ma ha il vantaggio di essere memorizzata e quindi non costringe l’ascoltatore a guardare in tempo reale cosa accade in frequenza, inoltre l’ampiezza dello spettro visualizzabile sull’SDR è limitato ad un paio di MHz. RTL Power pertanto si presta bene al monitoraggio di eventi sporadici o all’analisi per lunghi periodi.
Installazione rtl-sdr
Se non sono stati installati precedentemente, procedere all’installazione di driver e utility rtl-sdr sull’RPi:
Installare le librerie necessarie al funzionamento
sudo apt-get install libusb-1.0-0.dev
sudo apt-get install git
sudo apt-get install cmake
sudo apt-get install build-essential
Scaricare il codice sorgente di rtl-sdr dal repository GitHub
git clone git://git.osmocom.org/rtl-sdr.git
Oppure, se non si vuole usare git, scaricare attraverso un browser l’archivio .zip da GitHub [1] e copiarne il contenuto su RPi nella cartella rtl-sdr sulla home.
Compilare rtl-sdr
cd rtl-sdr/
mkdir build
cd build
cmake ../ -DINSTALL_UDEV_RULES=ON
make
sudo make install
sudo ldconfig
Creare una blacklist per evitare che la chiavetta RTL venga riconosciuta come ricevitore DVB-T e quindi caricato il suo driver standard
sudo nano /etc/modprobe.d/blacklist-rtl.conf
e nel file appena creato inserire le seguenti linee
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist rtl2830
Spegnere RPi
sudo poweroff
Collegare il dongle RTL-SDR ad una delle porte USB
Accendere RPi
Controllare che la pennetta sia riconosciuta ed il driver attivo
lsusb
rtl_test -t
Uso di rtl_power
A questo punto è possibile partire con il monitoraggio della porzione di banda che c’interessa, ad esempio la heatmap nell’immagine dell’articolo è stata ottenuta con il seguente comando:
ed è la scansione per circa 1h della banda VHF radioamatoriale (144 – 146 MHz) alla risoluzione di 1 kHz e con tempo d’integrazione di default di 10 secondi, il log è stato interrotto manualmente con il comando Ctrl+C, i dati memorizzati nel file ham_vhf.csv.
Vediamo i principali comandi, per i dettagli fare riferimento all’help del comando o alla pagina dell’autore [2]:
-f lower:upper:bin_size [Hz]
specifica le frequenze inferiore, superiore e la risoluzione. Il numero può essere un intero, con notazione scientifica e o con i suffissi k, M, G
-i integration_interval
intervallo d’integrazione, default 10 secondi, il numero può essere specificato in s, m, h
-e exit_timer
tempo di acquisizione del log.
Generare la heatmap
Per il rendering dei dati acquisiti, l’autore mette a disposizione lo script heatmap.py realizzato in Python [3]. Ma l’alternativa migliore a mio avviso è rtl-gopow [4], disponibile già compilato per diversi sistemi operativi.
Software alternativi
Ulteriore possibilità, per chi non ama la riga di comando preferendo l’interfaccia grafica, è GUI for RTL Power per il sistema operativo Windows [5], nota anche come rtl-sdr dongle panorama ed utilizza la versione Win delle utility Osmocom. SDR Panorama visualizza lo spettro in tempo reale, similmente ad un analizzatore di spettro, con la possibilità di elaborare e salvare le immagini. Da segnalare anche RTLSDR Scanner per Python [6] con il suo add-on Heatmap per la mappatura geografica dei segnali acquisiti, Spektrum multipiattaforma [7], GUI for RTL_POWER per Windows [8].
Riferimenti
- rtl-sdr repository su GitHub;
- RTL Power dal sito dell’autore;
- Heatmap repository su GitHub;
- rtl-gopow repository su GitHub;
- guiforrtlpower repository su SourceForge;
- RTLSDR Scanner, add-on Heatmap;
- Spektrum repository GitHub;
- GUI for RTL_POWER repository SourceForge.
Argomenti correlati
Questa opera è distribuita con:
licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Italia.
Si declina ogni responsabilità per eventuali errori ed omissioni e gli eventuali danni che ne dovessero conseguire. Per ulteriori informazioni consultare le note legali.