23 giugno 2012

Chiavette DVB-T Realtek e Mac, un connubio complesso ma molto produttivo

Con parecchi limiti dovuti alla mia scarsa familiarità con la modalità Terminal di quella particolare variante Unix che è Mac OS X, sto cercando di seguire la questione dell'impiego in ambiente Mac OS X delle chiavette per la ricezione DVB-T basate sul chip Realtex RTL2832. La cosa più semplice da capire è che la chiavetta funziona anche quando la colleghiamo direttamente alla porta USB del Mac. Ci sono ancora parecchi punti oscuri che emergono dai vari tutorial disponibili online, ma molto è dovuto alla mia scarsa preparazione teorica e alla mancanza di pratica. Difficile venire a capo di tutto se non ci si sporca le mani. La parte essenziale di queste istruzioni è stata messa a punto da un radioamatore/programmatore italiano basato a New York, Alain De Carolis K1FM, che se non ho capito male dai profili Linkedin lavora negli USA per Dada Entertainment, società confluita nel gruppo Buongiorno.
Proverò a descrivere qui tutta la catena "SDR for Mac", dalla chiavetta inserita nella porta USB di un MacBook al software di ricezione (HDSDR in questo caso) che lavora su Mac in modalità semi-nativa, senza cioè ricorrere a tool di emulazione Windows. O meglio, senza ricorrere a un emulatore come Virtual Box, che esegue l'ambiente Windows dentro a una macchina virtuale, con conseguente spreco di risorse di calcolo. La parte di "emulazione" vera e propria entra in gioco quando il Mac deve eseguire un client SDR come HDSDR, il clone Windows di Winrad che riesce a girare su Mac/Intel grazie all'ambiente Wine. Quest'ultimo per l'appunto non è un emulatore (l'acronimo significa non a caso Wine Is Not an Emulator), ma un cosiddetto "strato di compatibilità" che inganna le applicazioni Windows consentendo la loro esecuzione su Mac attraverso una intelligente sostituzione delle chiamate alle funzioni di sistema operativo: il programma "crede" di dialogare con Windows e invece sta richiamando le funzioni Mac equivalenti. Tutto sembra molto complicato e di fatto lo è, non stiamo parlando di operazioni che l'utente Mac poco esperto possa affrontare in modo immediato. A giudicare dai filmati YouTube pubblicati da Alain e dagli altri sperimentatori del gruppo Google ultra-cheap-sdr (animato dall'australiano Balint Seeber) la catena funziona in modo piuttosto fluido, anche il software di DSP eseguito da un sistema operativo diverso da quello per cui era stato concepito. Recentemente Alain ha sperimentato la chiavetta con un upconverter per le frequenze HF, riscontrando una qualità addirittura superiore a quella di un ricevitore tradizionale.
Tornando alla catena di cui si diceva prima, i pezzi fondamentali sono costituiti da BorIP e da GNU Radio compilato sotto Mac. La prima componente, BorIP, è un software server in Python messo originariamente a punto per utilizzare su client connesso in rete il frontend SDR USRP, la cui prima versione disponeva di interfaccia USB. Il concetto è insomma molto simile all'uso di programmi SDR come CuteSDR o SdrDX che controllano frontend sdr connessi direttamente via Ethernet o attraverso server software che fungono in pratica da gateway tra USB e Ethernet quando si ha a disposizione un frontend connesso solo attraverso USB. BorIP Server per Mac fa parte di un pacchetto di applicazioni Python 2.x chiamato gr-baz e va installato dopo aver installato sul Mac l'ambiente GNU Radio (previa installazione dei tool di compilazione XCode e dell'ambiente "Linux su Mac" MacPorts). GNU Radio è indispensabile perché BorIP si basa sulle sue routine per estrarre le componenti digitali della banda base radio che verranno date in pasto a HDSDR. Ecco le istruzioni ricavate dai post di Alain su ultra-cheap-sdr:

1) Installare Xcode con le utilities di command line

2) Installare MacPorts

3) Installare GNU Radio con il comando:

sudo port install gnuradio

(installazione automatica ma lunghissima, può richiedere parecchie ore)

4) Scaricare gr-baz da SVN o da git

5) Modificare lo script 'bootstrap' alla riga 28 da:

'libtoolize --automake -c -f'

a:

'glibtoolize --automake -c -f'

6) Compilare e installare gr-baz

7) Copiare i file dalla directory gr-baz/grc/ alla directory ~/.grc_gnuradio/

8) eseguire il seguente comando:

export PYTHONPATH=$PYTHONPATH:/opt/local/lib/python2.6/site-packages:/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/:/usr/local/lib/python2.7/site-packages/

(ricordare l'ultimo step e l'esportazione effettuata per le successive sessioni con Terminal)

Ecco una lista di link per approfondimenti:

Ultra cheap SDR (previa iscrizione ai Google Groups)

Le operazioni di cui sopra dovrebbero essere abbastanza chiare a chi avesse dimestichezza con il Terminal di Unix/Mac OS X e con ambienti come MacPorts e Wine for Darwin/Wine Bottler et similia. Più complicato avere dimestichezza con GNU Radio/GRC (GNU Radio Companion). Sono molto importanti i passi 5) e 8). Libtoolize è una procedura che abilita all'uso delle routine libtool (che a sua volta abilita l'uso di determinate librerie, importanti per il controllo della porta USB) da parte del pacchetto gr-baz. La modifica serve per guidare Mac OS X verso l'uso della versione GNU di libtool, che si chiama appunto glibtool (da quanto capisco sotto Mac libtool non è GNU e questa è una grossa fonte di confusione e di errori di compilazione/esecuzione). Importante anche il passo 8) per la corretta configurazione delle variabili e dei percorsi. Se tutto funziona, dovremmo avere un Mac che riconosce la chiavetta DVB-T previa attivazione di BorIP Server; e il software di demodulazione HDSDR (eseguito sotto Wine) che riceve e demodula i segnali attraverso la chiavetta (il programma client in questo caso si connette al localhost, la macchina su cui stanno girando BorIP e HDSDR, anche se è perfettamente possibile gestire remotamente la chiavetta connessa a un computer tramite l'indirizzo IP di quest'ultimo)
Come ulteriore riferimento, ecco due filmati YT. Il primo realizzato da Seeber (il suo australiano è molto criptico ma riascoltandolo più volte si capisce quel che basta) è riferito all'uso di BorIP e di HDSDR sotto Wine. Il secondo più recente riguarda la prova effettuata da Alain e in questo caso il suo inglese-americano è invidiabile e immediatamente comprensibile.





Visto che BorIP implementa in Python un "flowgraph", cioè una routine impostata con GNU Radio (che in pratica è un ambiente di prototipizzazione) e la sua interfaccia visual GNU Radio Companion, vi suggerisco caldamente di seguire il videocorso che lo stesso Balint Seeber ha realizzato sempre per You Tube. La prima puntata si trova qui:


e le successive si trovano riunite in questa pratica play list.
Ora non mi resta che provare a sporcarmi le mani direttamente, anche se credo di aver bisogno dell'aiuto di qualcuno un po' più ferrato di me. Wine e MacPorts ero riuscito a installarli tempo fa, ma non so quanto siano aggiornati e compatibili con roba esoterica come GNU Radio e gr-baz. Tra l'altro il mio portatile Intel non è di generazione recentissima. L'idea di poter disporre di un ricevitore FM avanzato qui su Mac mi alletta moltissimo e gli strumenti di cui stiamo parlando sono abbastanza prossimi all'idea di SDR nativo su Mac che sto inseguendo da anni. Sul versante Windows/Linux, il grande Christian Diemoz ha recentemente installato GNU Radio e anche da lui attendo nuovi spunti e guide how to.

3 commenti:

Anonimo ha detto...

Ma possibile che nel Mondo non ci sia nessuno che riesca a gestire queste chiavette in modo normale su Mac senza usare astrusi passaggi, certo non alla portata di tutti?
Questo vale anche per altri programmi di gestione apparati, sdr, ecc. in cui ti conviene acquistare un piccolo pc e dedicarlo a questo "sporco lavoro" , oppure usare bootcamp ed avviare il Mac come PC. Non sempre i vari programmi di macchina virtuale tipo VMWare Fusion funzionano bene e neppure Wine implementava, per cosa ne so, le porte USB.
Questo forse questo succede perché le case produttrici e di progetto fanno nascere apparati PC Only

Saluti Claudio

Alain De Carolis ha detto...

Ciao Claudio,

purtroppo stiamo parlando di soluzioni tutto sommato ancora "sperimentali" per cui la semplicità d'uso non viene ancora considerata prioritaria dagli sviluppatori.

Io ho creato una applicazione per OSX che da sola include HDSDR, Wine, gnuradio e grbaz. La si potrebbe scaricare ed eseguire con un semplice doppio click direttamente da una chiavetta USB e senza istallare nulla.

Credo che una soluzione del genere, per quanto banale, risponda alla tua osservazione che mi trova comunque d'accordo.
Sto aspettando l'autorizzazione dell'autore di HDSDR per procedere alla distribuzione (legalmente sono tenuto a farlo).

Saluti

Alain K1FM

Andrea Lawendel ha detto...

Che dire, mi sembra una prospettiva molto interessante Alain, segnalaci quando tutto ė pronto. Mi chiedevo se avevi anche avuto modo di sperimentare, magari solo in ambiente Linux, jSDR e GQRX con questi front end?