sabato 14 aprile 2012

la SDR V-UHF da €30 - 2

In effetti le cose attorno a questi dongle economici si sono mosse piuttosto velocemente.
Come accade in genere gli utenti Windows hanno la vita semplificata a fronte di qualche vincolo nella flessibilità, e cominciano ad apparire le prove su strada.
Chi smanetta con GNURadio ora ha a disposizione dei comodi "mattoncini": questo è il modo per fruirne.

Intanto è utile verificare che il dispositivo venga correttamente rilevato all'inserzione:
sinager@SIRAD:~$ dmesg
...
[308285.600019] usb 1-4: new high speed USB device number 8 using ehci_hcd

Qualora lo stick non sia connesso ad una porta USB 2.0 efficiente (occhio a hub e prolunghe) il dispositivo verrà riconosciuto lo stesso, ma con un warning:
[309411.513952] usb 4-2.3: new full speed USB device number 14 using uhci_hcd
[309411.617948] usb 4-2.3: not running at top speed; connect to a high speed hub

Il warning si accompagna inevitabilmente a mancato funzonamento degli script, tipicamente con questo errore:
rtlsdr_demod_write_reg failed with -9

Come indicato nella pagina di osmocom-rtl è necessaria una versione di GNURadio recente.
Le istruzioni per compilare ci sono tutte, ma gli esempi nella pagina fanno ancora riferimento all'utilizzo del ricevitore attraverso uno scarico dei dati su un file. In effetti dopo aver compèletato l'installazione sarà disponibile un nuovo blocco in GNURadio Companion:
Connettendo un solo stick non è necessario riempire il campo "device argument" con l'indirizzo.
Adattando alla bella e meglio uno script di OZ9AEC ho messo assieme un ricevitore per la NFM e in prima battuta i risultati non sembrano male.
Sul FFT si vedono chiaramente prodotti da intermodulazione ma ciò non mi sorprende con il ricevitore collegato all'antenna esterna in parallelo agli altri ricevitori. Sicuramente con un po' di attenuazione e qualche filtro esterno le cose possono migliorare.
Nell'eventualità qualcuno sia interessato, lo schema GRC è a disposizione.

domenica 1 aprile 2012

la SDR V-UHF da €30

Nelle ultime due settimane si è parlato parecchio di questi giocattoli nella comunità dei radio-smanettatori: qualcuno degli sviluppatori di V4L si è infatti accorto, più o meno per caso, che dai dongle basati sul chip RTL2832 era possibile estrarre i dati I/Q grezzi e quindi impiegarli come una SDR a larga banda.
Ogni giorno ci sono sviluppi e novità, con rilasci di software a patches.
La soluzione più avanzata oggi è quella basata su GR-baz, tuttavia non sono ancora arrivato a sperimentarla perché richiede una versione di GnuRadio precedente a quella che ho installato.
Per il momento sto facendo qualche prova con il codice messo a disposizione da quei mostri di Osmocom e uno schema GRC basato su quello di DL6KBG che si trova in questa discussione.
Per inciso il mio ricevitore è un Terratec Moxon DabStick, reperito su eBay dalla Germania per €31 inclusa spedizione.
Questi i passaggi che ho fatto per avere lo stream di dati verso Gnuradio:
  1. scaricato il codice di Osmocom
  2. impostato le regole per rendere il device accessibile a tutti gli utenti e non solo a root, sulla falsariga di quanto fatto per il FunCubeDongle ovvero:
    • una volta connesso, verificare codice produttore e id della periferica con lsusb. L'output per il DabStick è qualcosa del genere:
      Bus 001 Device 007: ID 0ccd:00b3 TerraTec Electronic GmbH
    • creare una rule per lo stesso:
      sudo nano /etc/udev/rules.d/20-rtl.rules
      contenente:
      SUBSYTEMS=="usb" ATTRS{idVendor}=="0ccd" ATTRS{idProduct}=="00b3" MODE:="0666" SYMLINK+="RTL"
      (notare come Vendor e idProduct riflettano quanto ottenuto con il lsusb).
      Salvare il file e aggiornare le regole:
      sudo udevadm control --reload-rules
  3. modificato il sorgente di Osmocom (/rtl-sdr/src/main.c) in modo da scrivere l'output in una named pipe, modificando la riga 400,
    da così:   file = fopen(filename, "wb");
    a così:
       file = fopen(filename, "a+b");
    e compilato
  4. creato la named pipe: mkfifo out.bin
  5. lanciato il comando di acquisizione:
    ./rtl-sdr ./out.bin -s 250000 -f 144800000
     
  6. a questo punto l'output del dispositivo non si accumula più in un file che può assumere dimensioni colossali, ma viene riversato in tempo reale in una specie di imbuto dal quale GNURadio si alimenta, a patto di mettere il file out.bin come sorgente.

Ora rimane da mettere a punto un migliore schema in Gnuradio Companion.
Come in tutti questi oggettini sembra esserci bisogno di un po' di attenuazione o filtraggio in ingresso.