HackRF教程(一)

img

本文是根据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。

img

在右侧的组件区找到 Sources->osmocom Source 拖到工作区。

img

继续从右边找到 Instrumentation->WX->WX GUI FFT Sink,然后连在一起(分布点击蓝色 out 和 in 就可以连在一起)。

img

双击 Variable 修改 samp_rate 的值为10e6。

img

接下来修改 osmocom Source 中的数据:

  • Ch0:Frequency(Hz) = 97.9e6
  • Ch0:RF Gain(db) = 0

img

然后再修改 WX GUI FFT Sink 中的数据:

  • Average = On

img

到目前为止,我们已经可以初步利用 Hack RF 来接收广播信号了,点击上面的播放按钮,首次运行时候会出现下面的提示,不用管他,直接点击 OK 即可。

img
img

接下来继续修改 WX GUI FFT Sink 中的数据:

  • Baseband Freq = center_freq

img

从右边找到 Variables->Variables,添加变量:

  • ID = center_freq
  • Value = 97.9e6

img

然后来替换 osmocom Source 中的数据:

  • Ch0:Frequency(Hz) = center_freq

img

现在点击上面的播放按钮,可以看到中间频率值已经变化了。

img

从右边找到 Math Operators->Multiply,添加到图中,并且和 osmocom Source 连接起来。

img

从右边找到 Waveform Generators->Signal Source,拖到图中,并且和 Multiply 连接起来。

img

下面添加一个新的变量:

  • ID = channel_freq
  • Value = 106.8e6

img

下面设置 Signal Source 的数据:

  • Frequency = center_freq - channel_freq

img

然后再次添加 WX GUI FFT Sink ,与 Multiply 连接起来,并修改数据:

  • Baseband Freq = channel_freq

img
img

这时候在点击播放,可以看到两个FFT的波形图。

img

下面开始正式进行音频解调,从右边找到 Filters -> Low Pass Filter 拖到图中,并且和 Multiply 连接起来。

img

此时添加一个新的变量:

  • ID = channel_width
  • Value = 200e3

img

然后修改 Low Pass Filter 的数据:

  • Decimation = int(samp_rate/channel_width)
  • Cutoff Freq = 75e3
  • Transition Width = 25e3

img

从右边找到 Resamplers -> Rational Resampler 拖到图中,并且和 Low Pass Filter 连接起来,然后修改数据:

  • Interpolation = 12
  • Decimation = 5

img
1img

继续从右边找到 Modulators -> WBFM Receive 拖到图中,和 Rational Resampler 连接起来,并修改数据:

  • Quadrature = 480e3
  • Audio Decimations = 10

img

最后从右边把 Audio -> Audio Sink 拖到图中并和WBFM Receive连接一起,修改数据:

  • Sample Rate = 48KHz

img

然后右键屏蔽下图的FFT。

img

再次点击播放按钮就可以收听到广播了。

如果这时候听不到声音,可以增加一个音量调节的功能,从右边找到 Math Operators->Multiply Const,然后按照图上的方式连接,你会看到红色的报错,暂时先不用管。

img

然后继续在右边找到 GUI Widgets -> WX -> WX GUI Slider 拖到图中,然后修改数据:

  • ID = audio_gain
  • Default Value = 1
  • Minimum = 0
  • Maximum = 10

img
img

这时候在修改 Multiply Const 的数据:

  • IO Type = Float
  • Constant = audio_gain

img
img

如果这个时候收听到声音杂音很大,波形图很卡,可以尝试降低采样率。

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