HackRF教程(一)
本文是根据Michael Ossmann先生录制的11部教学视频整理的文字版,对其内容进行修正和精简,使得没有基础的同学可以更快的上手。
0x00 准备工作
本次课程使用的系统是 Ubuntu 18.04.2 LTS Ubuntu 20.04 LTS版,首先是安装好实验所需要的软件和相关依赖包。
1 | d4rk30@linux$ sudo apt install gnuradio gr-osmosdr hackrf |
然后连接hackRF,输入 hackrf_info
,查看是否连接成功。
0x01 动手实验
在安装完成 GNU Radio 之后,已经自动安装了 GNU Radio Companion,输入以下命令,启动 GNU Radio Companion:
1 | d4rk30@linux$ gnuradio-companion |
首先双击 Options,修改 Generate Options 为 WX GUI。
在右侧的组件区找到 Sources->osmocom Source 拖到工作区。
继续从右边找到 Instrumentation->WX->WX GUI FFT Sink,然后连在一起(分布点击蓝色 out 和 in 就可以连在一起)。
双击 Variable 修改 samp_rate 的值为10e6。
接下来修改 osmocom Source 中的数据:
- Ch0:Frequency(Hz) = 97.9e6
- Ch0:RF Gain(db) = 0
然后再修改 WX GUI FFT Sink 中的数据:
- Average = On
到目前为止,我们已经可以初步利用 Hack RF 来接收广播信号了,点击上面的播放按钮,首次运行时候会出现下面的提示,不用管他,直接点击 OK 即可。
接下来继续修改 WX GUI FFT Sink 中的数据:
- Baseband Freq = center_freq
从右边找到 Variables->Variables,添加变量:
- ID = center_freq
- Value = 97.9e6
然后来替换 osmocom Source 中的数据:
- Ch0:Frequency(Hz) = center_freq
现在点击上面的播放按钮,可以看到中间频率值已经变化了。
从右边找到 Math Operators->Multiply,添加到图中,并且和 osmocom Source 连接起来。
从右边找到 Waveform Generators->Signal Source,拖到图中,并且和 Multiply 连接起来。
下面添加一个新的变量:
- ID = channel_freq
- Value = 106.8e6
下面设置 Signal Source 的数据:
- Frequency = center_freq - channel_freq
然后再次添加 WX GUI FFT Sink ,与 Multiply 连接起来,并修改数据:
- Baseband Freq = channel_freq
这时候在点击播放,可以看到两个FFT的波形图。
下面开始正式进行音频解调,从右边找到 Filters -> Low Pass Filter 拖到图中,并且和 Multiply 连接起来。
此时添加一个新的变量:
- ID = channel_width
- Value = 200e3
然后修改 Low Pass Filter 的数据:
- Decimation = int(samp_rate/channel_width)
- Cutoff Freq = 75e3
- Transition Width = 25e3
从右边找到 Resamplers -> Rational Resampler 拖到图中,并且和 Low Pass Filter 连接起来,然后修改数据:
- Interpolation = 12
- Decimation = 5
1img
继续从右边找到 Modulators -> WBFM Receive 拖到图中,和 Rational Resampler 连接起来,并修改数据:
- Quadrature = 480e3
- Audio Decimations = 10
最后从右边把 Audio -> Audio Sink 拖到图中并和WBFM Receive连接一起,修改数据:
- Sample Rate = 48KHz
然后右键屏蔽下图的FFT。
再次点击播放按钮就可以收听到广播了。
如果这时候听不到声音,可以增加一个音量调节的功能,从右边找到 Math Operators->Multiply Const,然后按照图上的方式连接,你会看到红色的报错,暂时先不用管。
然后继续在右边找到 GUI Widgets -> WX -> WX GUI Slider 拖到图中,然后修改数据:
- ID = audio_gain
- Default Value = 1
- Minimum = 0
- Maximum = 10
这时候在修改 Multiply Const 的数据:
- IO Type = Float
- Constant = audio_gain
如果这个时候收听到声音杂音很大,波形图很卡,可以尝试降低采样率。
0x02 名词
- BB gain: 基带增益baseband frequency gain
- IF gain:中频增益Intermediate frequency gain
- RF gain:射频增益Radio frequency gain
0x03 参考链接
https://blog.csdn.net/opensourcesdr/article/details/81143661