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.

1 commento:

  1. Qualcuno ha già pensato ad un "source block" per gnu radio. Non serve più usare una pipe e si può scegliere la frequenza direttamente dall'interfaccia:
    http://wiki.spench.net/wiki/Gr-baz

    RispondiElimina