用提供的ubuntu14 iso载入vm虚拟机没搞定,hackrf_info基本信息查看不成功错误-1000。
只好自己在Kali2017 x64上搭建环境,只需要安装GNU radio companion、gqrx,但进入gnuradio发现没有osmosdr模块。
(进入图形化gnuradio命令是 gnuradio-companion),所以重新安装osmosdr,就可以在右侧模块中找到。
【效果图】
【流程图】
流程图是gnuradio的界面,左侧:
【samp_rate】是采样率,代表接收电磁波频率的宽度,也将是生成波形图的宽度。10M是10MHZ宽度。
若中心是80MHZ,samp_rate是10MHZ,则最左是75MHZ,最右是85MHZ
下方两个变量是自己定的,可从右边模块栏拖入,可直接复制。
【center_freq】是中心频率,自己起的,规定波形图中点位置的频率。
【channel_freq】是引导频率,自己起的,标明希望把中点移到哪个频率去。
之所以需要channel_freq是希望不改变中心频率的情况下,把范围内某个频率放在波形图中点位置,所以需要引导。
97.9MHZ是97.9e6的值,它是FM广播的中值,所以center_freq是97.9M,但我们感兴趣的频道在96.5MHZ,所以先设channel_freq是96.5MHZ。
(注意上方是否已选Generate Options:WX GUI)
(Open source mobile communication) 开源移动通信协议的实现模块,是最基本的获取信号输入的模块。
在右侧Source中选择,拖入流程图。
【sample_rate】这项属性已自动和前边的变量关联,采样率。
【ch0:Frequency(Hz)】 频率的意思,这里设为我们的中心频率,不写97.9e6,写center_freq用变量表示。
【RF Gain(db)】 增益,从10改为0,一般不需要。
这个模块是输出波形图。需要把osmocom中源信号连入此模块,操作方法,分别点击方框边的两个蓝色矩形即可连接。
【sample_rate】采样率仍是自动关联了sample_rate变量。
【Baseband Freq】 中心频率,写我们设定的center_freq变量,自动显示为97.9M
【Average】 双击进入属性,把Average从off改为on
若此时直接保存运行,可看到单个波形图表,若无信号则表示出了问题。
这是人工加一个输入信号,由CPU生成需要的信号,和osmocom的原始信号相乘,起到转移中心频率的效果。
【sample_rate】自动关联采样率。
【freqency】频率,指要让中心偏移的频率。让中心频率 减去 目标频率。值设为center_freq - channel_freq
由于是python代码,所以直接写符合python语法的代码即可,例如两个变量相减。
乘法模块,两个输入,一个输出。
输入分别是原始信号osmocom和人工加的SignalSource信号。
输出连接到4.2的WX GUI FFT Sink模块上,用来输出波形图。
注意:这个新的FFT模块,要设
【baseBand Freq】中点频率为目标中点频率,即channel_freq 96.5e6;以及
【Average】开关打开on
此时两个FFT波形图,一个是center_freq为中心的,一个是channel_freq为中心的,出现效果图中的效果。
但是,如何把广播音频输出?
目前,仅是把一份输入信号,显示了两个中心不同的波形图,要把信号输出到声卡去。
我们之前把channel_freq调到中心,是为了输出中心96.5MHz附近200KHz的广播信号音频。
【效果图】
【流程图】
定义了新的变量
【channel_width】值200e3表示200KHz,用来表示广播频率的宽度。
低通滤波器。允许直流到截止频率(cutoff freq)之间的信号通过。
【cutoff freq】截止频率,此处填入75e3,即75KHz。
【transition width】过渡宽度,此处填入25e3,即25KHz。
【Decimation】降低采样率。我们目前sample_rate是10MHz,而只需要采样200KHz的宽度,即从10e6取200e3,相差50倍。
所以,此处填50。但不需要手工算,用Python式子 int(samp_rate / channel_width) 因为这个模块只支持整数。
所以,通过此模块后的信号,采样频率只剩下了200KHz。
合理重采样模块,因为之前低通滤波器后频率200KHz,但声卡支持的是48KHz,所以想先创造一个480KHz的再降10倍。
合理重采样模块就是用来创造480KHz的,它把200KHz先乘以12倍,再除以5倍,就是480KHz。
【interpolation】添加,也就是乘倍,此处填12。
【decimation】 降低,也就是降倍,此处填5。
从此模块输出480KHz信号。
FM信号转音频信号模块。
【quadrature】填输入的信号频率,填480e3,即480KHz。
【Audio Decimation】降低倍数,此处写10,降低10倍。
降低10倍后信号变为48KHz,输出。
声卡输出模块,输入48KHz的信号,设定中选择采样率。
【sample_rate】48e3
最后,只留下一个FFT波形图,然后就可以开始执行了,播放广播到声卡。