1° CAPITOLO – COME COSTRUIRE UNA STAZIONE RICEVENTE WEBSDR SU RASPBERRY PI3

1° CAPITOLO

IL SOFTWARE WebSDR CON LE SUE CARATTERISTICHE E I SUOI PARAMETRI

COME COSTRUIRE UNA STAZIONE RICEVENTE WEBSDR SU RASPBERRY PI3. Con l’e-mail di Pieter-Tjerk de Boer, che mi annunciava di avermi concesso l’uso del suo software WebSDR e che io ringrazio ancora una volta, è iniziato lo studio e l’approfondimento del software  WebSDR relativamente alla configurazione e alle impostazioni da utilizzare per essere installato ed attivato.

Dall’aprile 2018, il browser Chrome è riluttante a riprodurre l’audio sui siti WebSDR. Se utilizzi Chrome e non hai audio sui siti WebSDR, una soluzione alternativa è di disattivare la nuova norma di autoplay di Chrome, digitando chrome: // flags / # policy-autoplay nella barra di navigazione e modificando questa impostazione da Predefinito a Nessun gesto è richiesto all’utente. (Per rendere attive le modifiche è richiesto il riavvio del browser).

Nel 1° Capitolo, verranno approfondite le caratteristiche e i parametri del software WebSDR, cuore della Stazione WebSDR, a cui Pieter-Tjerk de Boer ha dedicato tanto del suo tempo con tanta passione e dedizione ancora oggi.

Nel 2° Capitolo e in quelli successivi, si affronteranno le problematiche legate all’ hardware necessario per la corretta configurazioni del server (ad esempio quali modifiche apportare al Raspberry Pi3 per ottenere brillanti prestazioni), quali Dongle RTL-SDR usare per un ottimale e semplice funzionamento del sistema e tutte le configurazioni del server, le librerie da installare, i driver particolari per il Dongle RTL-SDR Blog V3 R820T2 RTL2832U 1PPM TCXO SMA per funzionare nella modalità a “Campionamento Diretto”  e tanto altro.

Il software WebSDR, come ho già anticipato nell’articolo precedente gira esclusivamente su Linux, in versione 32 e 64 bit su hardware Intel e AMD64 e su hardware Raspberry Pi con eseguibile a 32 bit Linux, compilato per processore ARM, quindi ho iniziato con installare su Ubuntu 16.04, su hardware Intel e in versione a 64 bit il software WebSDR  e utilizzando come Dongle RTL-SDR una RTL2832U che già avevo a disposizione ho cercando di impostare i parametri corretti di WebSDR, per avere una ricezione in banda 144 MHz (2 metri). 

E così sono iniziati gli approfondimenti, perché in ambiente Linux, i driver per l’RTL2832U vanno installati insieme alle giuste librerie, oltre ai parametri di WebSDR impostati a puntino e i driver RTL_TCP su protocollo TCP/IP sulle porte giuste. Un’esperienza completamente diversa rispetto all’installazione di KiwiSDR che anche se non ho comprato il kit dove tutto è già installato e configurato, è stato necessario uno studio e un approfondimento di qualche giorno.

Allo scopo di capire meglio su cosa stavo lavorando, ho iniziato con tradurre in Italiano la guida di installazione WebSDR di  Pieter-Tjerk de Boer, che vedremo nel dettaglio a breve.

La differenza con la stazione KiwiSDR è sostanziale perché WebSDR, ti permette di impostare e avere sotto controllo tutti i parametri, quindi ad esempio, posso definire il numero di utenti massimi che si possono collegare contemporaneamente al server WebSDR, dopo quanto tempo di inattività dell’utente, che non cambia frequenza, scollegarlo, per risparmiare risorse di elaborazione del server ed altre decine di impostazioni.

In KiwiSDR il numero di utenti massimi è di 4, in WebSDR possono essere centinaia, o migliaia, ovviamente bisogna avere un server con hardware adeguato per soddisfare le richieste di centinaia di utenti.

WebSDR installato su Raspberry Pi3 può soddisfare al massimo 8-10 utenti collegati contemporaneamente, con la frequenza del processore ARM a 1200 MHz, è consigliato vivamente di raffreddarlo adeguatamente con ventolina, in quanto il Raspberry Pi ha solo un raffreddamento passivo, cioè non ha nessuna ventilazione forzata.   

All’interno della cartella doc del software WebSDR, vi è il file config.txt che contiene la descrizione di tutti i comandi e i parametri che possono essere utilizzati con WebSDR, in lingua inglese. Io ho provato a tradurre il file config.txt in italiano per avere una immediata comprensione dei comandi.

Non bisogna impressionarsi per la grande quantità di comandi presenti, perché non vanno utilizzati tutti ed è più semplice di quanto si pensi configurare attraverso il file websdr.cfg deputato a contenere le impostazioni del nostro WebSDR. I comandi sono in blu, tutte le altre linee in colore verde sono di commento al comando (le linee di commento e i comandi sono colorati solo per evidenziarli nel mio articolo e i commenti tra parentesi in rosso per spiegare a cosa serve il comando). 

Segue il file websdr.cfg che ho utilizzato per configurare la mia Stazione WebSDR sui 20 metri:

# WebSDR server configuration file
# Lines starting with a hash (#) are comments.
# Each line consists of a keyword followed by one or more settings.
# The order of the lines is arbitrary, except that lines configuring
# a band should be together.
#
############################################################################
# first, a few generalities about the server:

# The maximum number of users.
# In most cases, the internet uplink is the limiting factor; count on about
# 100 kbit/s per user, depending on the compression level you choose.
maxusers 10 (numero massimo di utenti che si possono collegare al WebSDR)

# On which port should the server listen?
# An obvious choice would be 80, so users don’t need to specify it in the URL.
# However, this requires the websdr binary to be setuid root, see install.txt.
# A common alternative choice is 8901.
tcpport 8901 (la porta assegnata all’indirizzo IP associato al Server WebSDR)

# If your computer is on a 10.x.x.x or 192.168.x.x network on which there
# are no users that you do not trust, uncomment the following line.
# It enables the system administration interface in sysop.html also for computers
# on these local networks.
# dotrustlocalnet

# Set a timeout of x seconds for idle users (i.e., users who don’t
# change the frequency etc. for x seconds are disconnected).
# Can be useful if your site is popular and has limited internet
# bandwidth.
idletimeout 2800 (tempo massimo per l’utente che non cambia frequenza viene scollegato)

# If you do NOT want your WebSDR to register itself on http://www.websdr.org
# site, uncomment the following line:
# noorgserver

hostname xlx066.homepc.it (indirizzo pubblicato su websdr.org della stazione) 
org logo iu8cri.jpg (il logo che si è scelto 48×48 pixel)
org qth JN71mb (la Grid Map dove si trova la stazione WebSDR,QTH locator)
org description WebSDR of Antonio IU8CRI – Grottaminarda (AV) ITALY – Blog: iu8cri.altervista.org (la descrizione) 
org email [email protected] (l’e-mail )
allowwide (imposta la larghezza di banda)
############################################################################
band 20mt (l’indicazione della banda)
device !rtlsdr 127.0.0.1:5904 -9 (i parametri utilizzati per configurare il Dongle RTL-SDR)
samplerate 1024000 (velocità di aggiornamento dei dati visualizzati)
centerfreq 14000 (centro della banda) 
# progfreq is the upconverter frequency (khz) plus the centerfreq (in khz)
# progfreq 100000
initial 14074 usb (frequenza su cui si sintonizza all’avvio)
antenna GP 20 meter (descrizione delle antenne utilizzate che verranno riportate sul web) 
gain -18 (regolazione del guadagno del segnale radio dell’ RTL2832U) 

############################################################################

 

Ecco il file config.txt tradotto: (alcuni termini vanno rivisti, mi scuso, ma il tempo è limitato)

====================================================================

Configurazione del WebSDR PA3FWM, 2014-06-08

====================================================================

Quasi tutti i WebSDR vengono configurati tramite un unico file chiamato

‘websdr.cfg’. Questo file contiene le prime impostazioni globali, seguite dalla configurazione per ciascuna banda. Ogni riga inizia con una parola chiave, seguita da uno o più argomenti, come dettagliato di seguito.

====================================================================

Istruzioni di configurazione globale:

====================================================================

Accesso al server

^^^^^^^^^^^^^^^^^^^^

myhost x

Essere associato solo a questo indirizzo; utile se il server dispone di più IP indirizzi. Nota: se x è un indirizzo IPv4, qualificarla con:: ffff: per farlo sembrare come un indirizzo IPv6.

tcpport x

Impostare il numero di porta TCP su cui il server dovrebbe funzionare.

(Che è per esempio l’ 8901 in http://websdr.ewi.utwente.nl:8901 /)Valore predefinito è 80, che è anche il web browser predefinito utilizzato quando nessuno valore viene specificato. Tuttavia, questo richiede l’esecuzione il websdr come root.

chroot x

Dopo l’avvio, eseguire un chroot() a x. Questo può essere usato come una misura di sicurezza (anche se non lo faccio sul mio server). Richiede il websdr per essere impostato come setuid root, ma quei privilegi vengono eliminati immediatamente più presto possibile.

rawpassword x

Impostare una password per limitare l’accesso al flusso di dati non elaborati. Impostazione predefinita non è nessuna password. (Questo non è un rischio per la sicurezza).

donttrustlocalhost

Compresa questa linea che è Disabilita l’accesso sysop anche dalla macchina stessa. Solo se hai bisogno di questo, se il tuo websdr è in esecuzione su una macchina che è condivisi con altri utenti che non ti fidi. L’”accesso sysop” include due impostaioni:

– utilizzando l’interfaccia di amministrazione in sysop.html;

– accedere ancora al ricevitore, anche se il maxusers è stato raggiunto.

dotrustlocalnet

Abilitare questa linea, consente l’accesso sysop da tutti i computer il

intervallo IP locale (10.*.* e 192.168.*.*).Utilizzare questa opzione solo se ti fidi di tutti gli utenti sulla rete locale.

dotrust x

Consente l’accesso al sysop da indirizzo specificato x (è possibile includere più indirizzi qui, separati da spazi).

____________________

Dove sono i file?

^^^^^^^^^^^^^^^^^^^^

chatboxlogfile x

Registra nel file di log, tutti i messaggi di chat in un file denominato x.

logfileinterval x

Impostare il tempo (in secondi) dopo che è iniziato il successivo file di log e quello precedente è stato zippato. Il valore predefinito è 3600 (cioè, un’ora). Se è impostato su 0, nessun file di registro viene scritto, ma vengono inviati i messaggi di log stderr.

LogDir x

Impostare la directory contenente i file di Log x. Valore predefinito è il Log

public x

Impostare la directory contenente i file pubblici (html ecc.) a x.

Valore predefinito è… /pub

public2 x

Impostare la seconda directory contenente i file pubblici (html ecc.) a x.

Questa directory è cercata anche per server-side include.

Valore predefinito è pub2

___________________

Impostazioni di elaborazione – Setting

^^^^^^^^^^^^^^^^^^^

maxusers x

Limita il numero di utenti simultanei a x.(Gli utenti da localhost o dalla rete locale possono ancora essere consentiti oltre questo limite; vedere le impostazioni di donttrustlocalhost e dotrustlocalnet.)

slowdownusers x

Consentire solo flussi lenti quando supera il numero di ascoltatori x.

Utile per salvare la potenza della CPU su computer lenti o larghezza di banda di rete su collegamenti lenti.

slowdownusers2 x

Rallentare i flussi a metà della velocità minima normale quando il numero di ascoltatori supera x.

fftplaneffort x

Imposta la libreria FFTW pianificazione di sforzo a x, dove x può essere:

0 per FFTW_ESTIMATE

1 per FFTW_MEASURE

2 per FFTW_PATIENT

3 per FFTW_EXHAUSTIVE

Più alti numeri rendono l’avvio del programma su più lento ma può provocare

ridurre il carico della CPU, perché la libreria tenta di ottimizzare la FFT

calcolo. Valore predefinito è 0.

waterfallformat x

Impostare il dataformat per il flusso di segnali ricevuti.

x = 0 dà il vecchio non compresso, 8 bit per ogni formato di pixel.

x = 8 utilizza in media 2,9 bit per pixel.

x = 9 è l’impostazione predefinita ora: la compressione tra 1,5 e 2,3 bit

per pixel con pochissimi artefatti.

audioformat x

Impostare la quantità di compressione dei dati audio.

Il valore di x può essere compreso da 0 a 3.

Con la x a valore 3, sarà più grande il rumore di quantizzazione.

In genere, con la x = 0 (ovvero l’impostazione predefinita) dovrebbe essere buona; ma se la vostra larghezza di banda è davvero limitata, si potrebbe provare con altri valori.(Ho usato x = 2 al mio sistema con quasi nessun reclami degli utenti; x = 3 è stato trovato troppo rumoroso.)

initial x y

Impostare la frequenza iniziale di x kHz con modalità y (usb/lsb/am/cw/fm).

allowwide

Consente l’impostazione della larghezza di banda dei segnali SSB e AM essere ampliati, rispettivamente oltre il normale 4 e 8 kHz,; utile per la migliore qualità del suono delle trasmissione dei segnali in AM, anche se questo aumenta il carico sul collegamento internet.

Inoltre, questo è supportato correttamente solo per audio in HTML5; Ci sono

audible di prodotti alias quando si utilizza Java.

Infine, modificare la larghezza di banda durante la registrazione potrebbe anche non funzionare correttamente (file WAV non supportano cambi di samplerates).

idletimeout x

Impostare un timeout di x secondi per gli utenti inattivi (cioè, gli utenti che non modificare la frequenza ecc per x secondi vengono disconnessi).

Può essere utile se il sito è popolare e ha limitato internet

larghezza di banda.

___________________________________________________________

Impostazioni relazionate all’aspetto su http://www.websdr.org

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

noorgserver

Compresa questa linea impedisce il server dall’essere quotata sul

sito http://www.WebSDR.org/.

nome host x

Impostare il proprio hostname. Se impostato, questo nome verrà visualizzato sul

http://www.WebSDR.org invece di indirizzo IP.

org…

Impostare i dati da inviare al server websdr.org.

Possibilità attuali sono:

qth org x -impostare QTH locator

Descrizione di org x -impostare una breve descrizione del tuo sito

logo di org x -impostare il nome del file dell’immagine logo

org e-mail x – il tuo indirizzo di posta elettronica

Nota: l’indirizzo di posta elettronica non apparirà su websdr.org; serve solo

per dare PA3FWM le informazioni di contatto in modo da sapere chi contattare se

C’è un problema e chi inviare gli aggiornamenti software.

Fuori di quanto sopra, solo il logo è facoltativo; gli altri sono necessari.

====================================================================

Istruzioni di configurazione per banda:

====================================================================

band x

Avviare la configurazione per una banda chiamata x.

Dovrebbe essere la prima istruzione delle impostazioni per una band.

device x

Imposta il dispositivo di input x, come /dev/dsp0..

I nomi dei dispositivi ALSA può essere usati anche, preceduto da un ‘$’, come $hw: 0, 0, 0

device x y

Sintassi alternativa per l’utilizzo con una scheda audio multi-ingresso.

y è il nome del dispositivo come/dev/dsp0, mentre x è un numero a cifra singola:

0 per i primi due input, 1 per i prossimi due ingressi, ecc.

Tutte le bande di condivisione la RTL-SDR deve avere la stessa frequenza di campionamento e  non può avere l’impostazione di ‘noniq’ (Vedi sotto), né essere dispositivi ALSA.

device! rtlsdr x: y z

Imposta il dispositivo di input per essere un RTL-SDR (DVB-T USB dongle), attraverso

il driver rtl_tcp in esecuzione host x su porta y, con ppm correzione z.

Samplerates supportati per l’utilizzo con la RTL-SDR sono 256000, 512000,

768000, 1024000, 1536000, 2048000 e 2880000 Hz.

Per uso con convertitori up/downi, vedere ‘progfreq‘ altrove in questo documento.

Nota: questi dongle hanno una gamma dinamica piuttosto piccola. Di conseguenza,

Quando ci sono forti segnali in banda passante, segnali più deboli nella

banda passante scomparire nel rumore di fondo. Per un WebSDR questo non è buono,

perché l’idea dietro un WebSDR è che ogni utente può sintonizzare in modo indipendente

a qualsiasi segnale all’interno della band.

Così si prega di eseguire un WebSDR con un RTL-SDR solo dopo aver verificato che

nel vostro sistema non sovraccarico, ad esempio, confrontando la ricezione di

segnali deboli a un normale ricevitore analogico buono sulla stessa antenna.

extrazoom x

Aumentare la profondità di zoom massimo di x passi.

Ogni passaggio raddoppia la risoluzione massima, ma dimezza la massima

(e default) velocità di scorrimento del flusso di dati ricevuti. Il valore predefinito è 0. Superiore

i valori possono essere utili per fornire più integrazione per lunga durata

vettori, ma il WebSDR non è davvero un ottimo strumento per questo…

samplerate x

Impostare la frequenza di campionamento (in Hz).

centerfreq x

Impostare la frequenza centrale (in kHz)

Si noti che il software WebSDR non può controllare l’hardware SDR (tranne

l’rtlsdr). In caso di un frequenza fissa SDR, basta scrivere il SDR

frequenza centrale come determinato dal cristallo di SDR. Se si dispone di un

SDR con un sintetizzatore, avete bisogno di alcuni software esterni per impostare l’ Hardware SDR sulla stessa frequenza.

progfreq x

Nel caso in cui si dispone di hardware esterno SDR di cui il software WebSDR

controlla la frequenza (in pratica: RTL-DSP), questa impostazione

può essere utilizzata per specificare a quale frequenza (in kHz) dell’hardware dovrebbe

essere programmata, diverso da centerfreq. Questo è utile in caso di utilizzare con un convertitore

up/down.

noniq

Dati di input viene considerati come un segnale in banda base (mono), invece di un I / Q

segnale di quadratura (stereo). Questo è utile per un ricevitore VLF, con

l’antenna collegata direttamente alla scheda audio.

Con ‘noniq’ insieme, l’impostazione di ‘centerfreq’ viene interpretato non come la

centro della banda passante, ma come l’estremità sinistra della banda passante (vale a dire, 0

nel caso di VLF).

swapiq

Scambiare I e Q (sinistra e destra) canali.

Utilizzare questa opzione se la banda passante viene visualizzata con mirroring.

balance x

Leggere dati da file di bilanciamento x.

Utilizzare questo per compensare le differenze minori nei e Q canali

provocando segnali ad apparire “mirroring”.

Vedere documentazione separata in doc/iq-balance.txt.

antenna x

Breve descrizione dell’antenna, i dati verranno pubblicati su http://www.websdr.org.

delay x

Artificialmente ritardare segnali di x secondi.

Utile per evitare imbrogli nei concorsi, se il ricevitore è così speciale

che usarlo sarebbe dare ai partecipanti un ingiusto vantaggio (ad esempio, un molto

grande piatto per EME).

gain x

Inserire x dB di guadagno (il valore può essere negativo).

Questo non rende una differenza udibile; sposta solo il flusso di segnali ricevuti

colore scala e  S-Meter, così è possibile utilizzare questo per calibrare l’S-Meter

equalize z

Leggere dati da file di pareggiamento x.

Questo è fondamentalmente una versione dipendente dalla frequenza del precedente ‘guadagno’

l’impostazione. Può essere utilizzato per compensare le variazioni di minore guadagno di

i canali di scheda audio.

Il file ha un formato molto semplice: ogni riga ha una frequenza in kHz

e una correzione corrispondente guadagno in dB.

Il software sarà interpolare tra le frequenze specificate.

Le frequenze sono “audio” / “baseband” frequenze, non la radio

frequenze.

hpf x

Impostare la frequenza di taglio del filtro passa-alto ingresso x Hz.

Questo filtro taglia fuori l’offset DC e possibilmente altre bassa frequenza

rumore (ad es. alimentazione ronzio) presso l’ingresso della scheda audio.

Questo è solo un filtro di primo ordine, quindi non è molto ripida.

Impostazione su 0 rimuove completamente il filtro.

Valore predefinito è 500 Hz.

noiseblanker x

Consente una semplice noise blanker, dove x imposta il fattore di soglia.

La x superiore è, più alta la soglia sopra cui spike un rumore

ha bisogno di crescere per essere annullata; un valore dell’ordine di 80 ha un senso,

ma la sperimentazione può essere necessaria.

Grazie alla sua semplicità, questo rumore blanker è probabilmente utile solo

Se si dispone di sorgenti di rumore locali piuttosto forte, per esempio, un motore elettrico

della recinzione.

====================================================================

Informazioni sulla stazione per le etichette sulla scala di frequenza

====================================================================

Se si desidera mettere alcune etichette della scala di frequenza, per esempio, per contrassegnare

Beacon o altre stazioni permanenti di interesse speciale, si può mettere

loro in un file chiamato ‘stationinfo.txt’ nel cfg / directory.

Il formato di questo file è molto semplice: ogni linea ha una frequenza

in kHz, seguiti da una breve descrizione (ad es., nominativo).

È inoltre possibile includere una modalità (am/usb/lsb/cw/fm) direttamente dopo la

frequenza. Per esempio:

14100cw internazionale Beacon

Questo file viene riletto ogni minuto, quindi se si apporta una modifica, non è necessario riavviare il server.

Buona lettura da Antonio IU8CRI