Pages

Sunday, June 8, 2014

Simple guide to using funcube with gnuradio on ubuntu for fm reception

After a short break, i started to use gnuradio to learn more on the rf spectrum. To start with, i hooked my funcube dongle and used gqrx and worked well. But when i started to use the gnuradio, things have changed a lot in a couple of months. In my previous post, i showed a simple gnuradio companion sketch (read more here). For some strange reasons, i started spending the whole day installing, removing and compiling gnuradio :) So here is a short notes on what worked at the end.

At first i checked the frequency control application which came with funcube and showed the following error! FCD dongle not found even i have it plugged

No FCD detected

So solution is simple once you know it. I was using Ubuntu 12.04.4 LTS (Precise Pangolin) and a funcube pro plus. These are important as i spend a while with old version of qthid and funcube dongle (not pro) files. So ensure that you download  qthid-4.1-linux-i386.tar.gz from sourceforege. Even after that, i got the same error. So i just do a

 sudo cp funcube-dongle.rules /etc/udev/rules.d/

This could save a couple of hours as i wasted a while with a wrong version of qthid and the rules file. Make sure that the rules file support the pro plus (open in a text editor)

Gnuradio installation 


As usual i started from the source using the buildgnuradio script which makes the process so simple. But the result was not so good for me and ended up with a lot of credumps from the compiled binaries. So ended up wasting a lot of time. It seems after version 3.7 some of the modules or blocks are placed in a different order in the gnuradio, giving rise to missing blocks with old grc files. Unfortunately i deleted all the source files which nade my uninstallation of the gnuradio in pain. I manually deleted all the files related to gnuradio from /usr/local/bin and usr/local/lib and from the python dist. After that i installed the binaries from the repository (sudo apt-get install gnuradio) and to my surprise all worked like a charm. 

Attached a simple grc file i made to test with the broadcast fm stations. use the big slider for course tuning or just input the frequency in herts to the text box. And finally, the new version of gnuradio in the repository (3.7.0+1git20130729-g5eaeaa42-0ubuntu0~gqrx~precise3 ) has a support for funcube pro plus so you dont really need the qthid

Save the below file as bm_rx.grc and open with gnuradio-companion and click run

 <?xml version='1.0' encoding='ASCII'?>  
 <flow_graph>  
  <timestamp>Sun Jun 8 16:28:59 2014</timestamp>  
  <block>  
   <key>options</key>  
   <param>  
    <key>id</key>  
    <value>rc27decoder</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>title</key>  
    <value>Decode RC remote</value>  
   </param>  
   <param>  
    <key>author</key>  
    <value>Riyas</value>  
   </param>  
   <param>  
    <key>description</key>  
    <value>Sniff rc remotes at 27mhz</value>  
   </param>  
   <param>  
    <key>window_size</key>  
    <value>1280, 1024</value>  
   </param>  
   <param>  
    <key>generate_options</key>  
    <value>wx_gui</value>  
   </param>  
   <param>  
    <key>category</key>  
    <value>Custom</value>  
   </param>  
   <param>  
    <key>run_options</key>  
    <value>prompt</value>  
   </param>  
   <param>  
    <key>run</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>max_nouts</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>realtime_scheduling</key>  
    <value></value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(10, 10)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>variable</key>  
   <param>  
    <key>id</key>  
    <value>samp_rate</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>value</key>  
    <value>192000</value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(10, 170)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>analog_wfm_rcv</key>  
   <param>  
    <key>id</key>  
    <value>analog_wfm_rcv_0</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>quad_rate</key>  
    <value>192000</value>  
   </param>  
   <param>  
    <key>audio_decimation</key>  
    <value>4</value>  
   </param>  
   <param>  
    <key>affinity</key>  
    <value></value>  
   </param>  
   <param>  
    <key>minoutbuf</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(589, 92)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>audio_sink</key>  
   <param>  
    <key>id</key>  
    <value>audio_sink_0</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>samp_rate</key>  
    <value>48000</value>  
   </param>  
   <param>  
    <key>device_name</key>  
    <value></value>  
   </param>  
   <param>  
    <key>ok_to_block</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>num_inputs</key>  
    <value>1</value>  
   </param>  
   <param>  
    <key>affinity</key>  
    <value></value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(674, 264)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>wxgui_fftsink2</key>  
   <param>  
    <key>id</key>  
    <value>wxgui_fftsink2_0</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>type</key>  
    <value>complex</value>  
   </param>  
   <param>  
    <key>title</key>  
    <value>FFT Plot</value>  
   </param>  
   <param>  
    <key>samp_rate</key>  
    <value>samp_rate</value>  
   </param>  
   <param>  
    <key>baseband_freq</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>y_per_div</key>  
    <value>10</value>  
   </param>  
   <param>  
    <key>y_divs</key>  
    <value>10</value>  
   </param>  
   <param>  
    <key>ref_level</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>ref_scale</key>  
    <value>2.0</value>  
   </param>  
   <param>  
    <key>fft_size</key>  
    <value>1024</value>  
   </param>  
   <param>  
    <key>fft_rate</key>  
    <value>15</value>  
   </param>  
   <param>  
    <key>peak_hold</key>  
    <value>False</value>  
   </param>  
   <param>  
    <key>average</key>  
    <value>False</value>  
   </param>  
   <param>  
    <key>avg_alpha</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>win</key>  
    <value>None</value>  
   </param>  
   <param>  
    <key>win_size</key>  
    <value></value>  
   </param>  
   <param>  
    <key>grid_pos</key>  
    <value></value>  
   </param>  
   <param>  
    <key>notebook</key>  
    <value></value>  
   </param>  
   <param>  
    <key>freqvar</key>  
    <value>None</value>  
   </param>  
   <param>  
    <key>affinity</key>  
    <value></value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(477, 232)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>variable_slider</key>  
   <param>  
    <key>id</key>  
    <value>variable_slider_0</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>label</key>  
    <value>Frequency</value>  
   </param>  
   <param>  
    <key>value</key>  
    <value>101100000</value>  
   </param>  
   <param>  
    <key>min</key>  
    <value>1</value>  
   </param>  
   <param>  
    <key>max</key>  
    <value>500000000</value>  
   </param>  
   <param>  
    <key>num_steps</key>  
    <value>1000</value>  
   </param>  
   <param>  
    <key>style</key>  
    <value>wx.SL_HORIZONTAL</value>  
   </param>  
   <param>  
    <key>converver</key>  
    <value>float_converter</value>  
   </param>  
   <param>  
    <key>grid_pos</key>  
    <value></value>  
   </param>  
   <param>  
    <key>notebook</key>  
    <value></value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(274, 230)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>fcdproplus_fcdproplus</key>  
   <param>  
    <key>id</key>  
    <value>fcdproplus_fcdproplus_0</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>device_name</key>  
    <value></value>  
   </param>  
   <param>  
    <key>unit</key>  
    <value>1</value>  
   </param>  
   <param>  
    <key>lnaswitch</key>  
    <value>1</value>  
   </param>  
   <param>  
    <key>mixergainswitch</key>  
    <value>1</value>  
   </param>  
   <param>  
    <key>freq</key>  
    <value>variable_text_box_0</value>  
   </param>  
   <param>  
    <key>ppm</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>if_gain</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>affinity</key>  
    <value></value>  
   </param>  
   <param>  
    <key>minoutbuf</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(252, 49)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>variable_text_box</key>  
   <param>  
    <key>id</key>  
    <value>variable_text_box_0</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>label</key>  
    <value>frequency_input</value>  
   </param>  
   <param>  
    <key>value</key>  
    <value>variable_slider_0+variable_slider_1</value>  
   </param>  
   <param>  
    <key>converver</key>  
    <value>eval_converter</value>  
   </param>  
   <param>  
    <key>formatter</key>  
    <value>None</value>  
   </param>  
   <param>  
    <key>grid_pos</key>  
    <value></value>  
   </param>  
   <param>  
    <key>notebook</key>  
    <value></value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(116, 153)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <block>  
   <key>variable_slider</key>  
   <param>  
    <key>id</key>  
    <value>variable_slider_1</value>  
   </param>  
   <param>  
    <key>_enabled</key>  
    <value>True</value>  
   </param>  
   <param>  
    <key>label</key>  
    <value>freq_fine</value>  
   </param>  
   <param>  
    <key>value</key>  
    <value>50</value>  
   </param>  
   <param>  
    <key>min</key>  
    <value>0</value>  
   </param>  
   <param>  
    <key>max</key>  
    <value>10000000</value>  
   </param>  
   <param>  
    <key>num_steps</key>  
    <value>1000</value>  
   </param>  
   <param>  
    <key>style</key>  
    <value>wx.SL_HORIZONTAL</value>  
   </param>  
   <param>  
    <key>converver</key>  
    <value>float_converter</value>  
   </param>  
   <param>  
    <key>grid_pos</key>  
    <value></value>  
   </param>  
   <param>  
    <key>notebook</key>  
    <value></value>  
   </param>  
   <param>  
    <key>_coordinate</key>  
    <value>(135, 243)</value>  
   </param>  
   <param>  
    <key>_rotation</key>  
    <value>0</value>  
   </param>  
  </block>  
  <connection>  
   <source_block_id>fcdproplus_fcdproplus_0</source_block_id>  
   <sink_block_id>analog_wfm_rcv_0</sink_block_id>  
   <source_key>0</source_key>  
   <sink_key>0</sink_key>  
  </connection>  
  <connection>  
   <source_block_id>analog_wfm_rcv_0</source_block_id>  
   <sink_block_id>audio_sink_0</sink_block_id>  
   <source_key>0</source_key>  
   <sink_key>0</sink_key>  
  </connection>  
  <connection>  
   <source_block_id>fcdproplus_fcdproplus_0</source_block_id>  
   <sink_block_id>wxgui_fftsink2_0</sink_block_id>  
   <source_key>0</source_key>  
   <sink_key>0</sink_key>  
  </connection>  
 </flow_graph>  
end

No comments:

Post a Comment