引言:初次接触HackRF,做了些小实验,记录一下。
运行环境:Ubuntu 16.04,HackRF One
1 运行环境搭建
百度上说虚拟机不好用,为了方便我直接做了个U盘系统(不是U盘启动盘),方法如下:
(1)准备两个U盘,一个性能差点没关系,另一个U盘需要性能好一点(用来装Ubuntu系统);
(2)先用差点的U盘做一个Ubuntu启动盘;
(3)从U盘启动时会提示Try Ubuntu和Install Ubuntu,选择后一个,将系统安装在好一点的U盘上,这里一定要注意,不要误选了电脑的硬盘,否则后果很严重,楼主花了300大洋恢复硬盘数据(引以为戒)。
GNURadio配置:
《HackRF与GNURadio入门指南》上有配置方法,网址如下:
http://www.hackrf.net/hackrf%E4%B8%8Egnuradio%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97/
不过我用这个方法没有成功,不知到是不是我的网速不行,有些东西没安装好。
我是用下面网站的方法安装的:
http://bobao.360.cn/learning/detail/405.html
这里贴一下关键命令:
sudo
apt-get
install
hackrf libhackrf-dev libhackrf0
sudo
apt-get
install
gnuradio gnuradio-dev gr-osmosdr gr-osmosdr gqrx-sdr wireshark
2 FM接收机
参考的哪个视频已经不记得了,大家可以自己百度一个看看,代码如下,保存成grc文件,就可以
用GNURadio打开。
Sat Oct 15 11:19:45 2016
options
author
window_size
category
Custom
comment
description
_enabled
True
_coordinate
(0, 6)
_rotation
0
generate_options
wx_gui
hier_block_src_path
.:
id
top_block
max_nouts
0
qt_qss_theme
realtime_scheduling
run_command
{python} -u {filename}
run_options
prompt
run
True
thread_safe_setters
title
variable_slider
comment
converver
float_converter
value
1
_enabled
True
_coordinate
(272, 369)
_rotation
0
grid_pos
id
audio_gain
label
max
10
min
0
notebook
num_steps
100
style
wx.SL_HORIZONTAL
variable_slider
comment
converver
float_converter
value
93.6e6
_enabled
True
_coordinate
(856, 377)
_rotation
0
grid_pos
id
channel_freq
label
max
110e6
min
80e6
notebook
num_steps
1000
style
wx.SL_HORIZONTAL
variable
comment
_enabled
True
_coordinate
(0, 78)
_rotation
0
id
samp_rate
value
10e6
blocks_multiply_const_vxx
alias
comment
const
audio_gain
affinity
_enabled
True
_coordinate
(696, 343)
_rotation
0
id
aaa
type
float
maxoutbuf
0
minoutbuf
0
vlen
1
analog_sig_source_x
amp
1
alias
comment
affinity
_enabled
True
freq
center_freq - channel_freq
_coordinate
(104, 297)
_rotation
0
id
analog_sig_source_x_0
maxoutbuf
0
minoutbuf
0
offset
0
type
complex
samp_rate
samp_rate
waveform
analog.GR_COS_WAVE
analog_wfm_rcv
audio_decimation
10
alias
comment
affinity
_enabled
True
_coordinate
(696, 246)
_rotation
0
id
analog_wfm_rcv_0
maxoutbuf
0
minoutbuf
0
quad_rate
480e3
audio_sink
alias
comment
affinity
device_name
_enabled
True
_coordinate
(696, 415)
_rotation
0
id
audio_sink_0
num_inputs
1
ok_to_block
True
samp_rate
48000
blocks_file_sink
append
False
alias
comment
affinity
_enabled
True
file
test
_coordinate
(104, 444)
_rotation
0
id
blocks_file_sink_0
type
complex
unbuffered
False
vlen
1
blocks_multiply_xx
alias
comment
affinity
_enabled
1
_coordinate
(328, 283)
_rotation
0
id
blocks_multiply_xx_0
type
complex
maxoutbuf
0
minoutbuf
0
num_inputs
2
vlen
1
parameter
alias
comment
_enabled
True
_coordinate
(0, 150)
_rotation
0
id
center_freq
label
short_id
type
value
90e6
parameter
alias
comment
_enabled
True
_coordinate
(0, 222)
_rotation
0
id
channel_width
label
short_id
type
value
200e3
low_pass_filter
beta
6.76
alias
comment
affinity
cutoff_freq
75e3
decim
int(samp_rate/channel_width)
_enabled
True
type
fir_filter_ccf
_coordinate
(576, 14)
_rotation
0
gain
1
id
low_pass_filter_0
interp
1
maxoutbuf
0
minoutbuf
0
samp_rate
samp_rate
width
25e3
win
firdes.WIN_HAMMING
osmosdr_source
alias
ant0
bb_gain0
20
bw0
0
dc_offset_mode0
0
corr0
0
freq0
center_freq
gain_mode0
False
if_gain0
20
iq_balance_mode0
0
gain0
0
ant10
bb_gain10
20
bw10
0
dc_offset_mode10
0
corr10
0
freq10
100e6
gain_mode10
False
if_gain10
20
iq_balance_mode10
0
gain10
10
ant11
bb_gain11
20
bw11
0
dc_offset_mode11
0
corr11
0
freq11
100e6
gain_mode11
False
if_gain11
20
iq_balance_mode11
0
gain11
10
ant12
bb_gain12
20
bw12
0
dc_offset_mode12
0
corr12
0
freq12
100e6
gain_mode12
False
if_gain12
20
iq_balance_mode12
0
gain12
10
ant13
bb_gain13
20
bw13
0
dc_offset_mode13
0
corr13
0
freq13
100e6
gain_mode13
False
if_gain13
20
iq_balance_mode13
0
gain13
10
ant14
bb_gain14
20
bw14
0
dc_offset_mode14
0
corr14
0
freq14
100e6
gain_mode14
False
if_gain14
20
iq_balance_mode14
0
gain14
10
ant15
bb_gain15
20
bw15
0
dc_offset_mode15
0
corr15
0
freq15
100e6
gain_mode15
False
if_gain15
20
iq_balance_mode15
0
gain15
10
ant16
bb_gain16
20
bw16
0
dc_offset_mode16
0
corr16
0
freq16
100e6
gain_mode16
False
if_gain16
20
iq_balance_mode16
0
gain16
10
ant17
bb_gain17
20
bw17
0
dc_offset_mode17
0
corr17
0
freq17
100e6
gain_mode17
False
if_gain17
20
iq_balance_mode17
0
gain17
10
ant18
bb_gain18
20
bw18
0
dc_offset_mode18
0
corr18
0
freq18
100e6
gain_mode18
False
if_gain18
20
iq_balance_mode18
0
gain18
10
ant19
bb_gain19
20
bw19
0
dc_offset_mode19
0
corr19
0
freq19
100e6
gain_mode19
False
if_gain19
20
iq_balance_mode19
0
gain19
10
ant1
bb_gain1
20
bw1
0
dc_offset_mode1
0
corr1
0
freq1
100e6
gain_mode1
False
if_gain1
20
iq_balance_mode1
0
gain1
10
ant20
bb_gain20
20
bw20
0
dc_offset_mode20
0
corr20
0
freq20
100e6
gain_mode20
False
if_gain20
20
iq_balance_mode20
0
gain20
10
ant21
bb_gain21
20
bw21
0
dc_offset_mode21
0
corr21
0
freq21
100e6
gain_mode21
False
if_gain21
20
iq_balance_mode21
0
gain21
10
ant22
bb_gain22
20
bw22
0
dc_offset_mode22
0
corr22
0
freq22
100e6
gain_mode22
False
if_gain22
20
iq_balance_mode22
0
gain22
10
ant23
bb_gain23
20
bw23
0
dc_offset_mode23
0
corr23
0
freq23
100e6
gain_mode23
False
if_gain23
20
iq_balance_mode23
0
gain23
10
ant24
bb_gain24
20
bw24
0
dc_offset_mode24
0
corr24
0
freq24
100e6
gain_mode24
False
if_gain24
20
iq_balance_mode24
0
gain24
10
ant25
bb_gain25
20
bw25
0
dc_offset_mode25
0
corr25
0
freq25
100e6
gain_mode25
False
if_gain25
20
iq_balance_mode25
0
gain25
10
ant26
bb_gain26
20
bw26
0
dc_offset_mode26
0
corr26
0
freq26
100e6
gain_mode26
False
if_gain26
20
iq_balance_mode26
0
gain26
10
ant27
bb_gain27
20
bw27
0
dc_offset_mode27
0
corr27
0
freq27
100e6
gain_mode27
False
if_gain27
20
iq_balance_mode27
0
gain27
10
ant28
bb_gain28
20
bw28
0
dc_offset_mode28
0
corr28
0
freq28
100e6
gain_mode28
False
if_gain28
20
iq_balance_mode28
0
gain28
10
ant29
bb_gain29
20
bw29
0
dc_offset_mode29
0
corr29
0
freq29
100e6
gain_mode29
False
if_gain29
20
iq_balance_mode29
0
gain29
10
ant2
bb_gain2
20
bw2
0
dc_offset_mode2
0
corr2
0
freq2
100e6
gain_mode2
False
if_gain2
20
iq_balance_mode2
0
gain2
10
ant30
bb_gain30
20
bw30
0
dc_offset_mode30
0
corr30
0
freq30
100e6
gain_mode30
False
if_gain30
20
iq_balance_mode30
0
gain30
10
ant31
bb_gain31
20
bw31
0
dc_offset_mode31
0
corr31
0
freq31
100e6
gain_mode31
False
if_gain31
20
iq_balance_mode31
0
gain31
10
ant3
bb_gain3
20
bw3
0
dc_offset_mode3
0
corr3
0
freq3
100e6
gain_mode3
False
if_gain3
20
iq_balance_mode3
0
gain3
10
ant4
bb_gain4
20
bw4
0
dc_offset_mode4
0
corr4
0
freq4
100e6
gain_mode4
False
if_gain4
20
iq_balance_mode4
0
gain4
10
ant5
bb_gain5
20
bw5
0
dc_offset_mode5
0
corr5
0
freq5
100e6
gain_mode5
False
if_gain5
20
iq_balance_mode5
0
gain5
10
ant6
bb_gain6
20
bw6
0
dc_offset_mode6
0
corr6
0
freq6
100e6
gain_mode6
False
if_gain6
20
iq_balance_mode6
0
gain6
10
ant7
bb_gain7
20
bw7
0
dc_offset_mode7
0
corr7
0
freq7
100e6
gain_mode7
False
if_gain7
20
iq_balance_mode7
0
gain7
10
ant8
bb_gain8
20
bw8
0
dc_offset_mode8
0
corr8
0
freq8
100e6
gain_mode8
False
if_gain8
20
iq_balance_mode8
0
gain8
10
ant9
bb_gain9
20
bw9
0
dc_offset_mode9
0
corr9
0
freq9
100e6
gain_mode9
False
if_gain9
20
iq_balance_mode9
0
gain9
10
comment
affinity
args
_enabled
True
_coordinate
(104, 91)
_rotation
0
id
osmosdr_source_0
maxoutbuf
0
clock_source0
time_source0
clock_source1
time_source1
clock_source2
time_source2
clock_source3
time_source3
clock_source4
time_source4
clock_source5
time_source5
clock_source6
time_source6
clock_source7
time_source7
minoutbuf
0
nchan
1
num_mboards
1
type
fc32
sample_rate
samp_rate
sync
rational_resampler_xxx
alias
comment
affinity
decim
5
_enabled
True
fbw
0
_coordinate
(760, 43)
_rotation
0
id
rational_resampler_xxx_0
interp
12
maxoutbuf
0
minoutbuf
0
taps
type
ccc
wxgui_fftsink2
avg_alpha
0
average
True
baseband_freq
center_freq
alias
comment
affinity
_enabled
1
fft_size
1024
freqvar
None
_coordinate
(328, 0)
_rotation
0
grid_pos
id
wxgui_fftsink2_0
notebook
peak_hold
False
ref_level
0
ref_scale
2.0
fft_rate
15
samp_rate
samp_rate
title
FFT Plot
type
complex
win_size
win
None
y_divs
10
y_per_div
10
wxgui_fftsink2
avg_alpha
0
average
True
baseband_freq
channel_freq
alias
comment
affinity
_enabled
1
fft_size
1024
freqvar
None
_coordinate
(488, 256)
_rotation
0
grid_pos
id
wxgui_fftsink2_0_0
notebook
peak_hold
False
ref_level
0
ref_scale
2.0
fft_rate
15
samp_rate
samp_rate
title
FFT Plot
type
complex
win_size
win
None
y_divs
10
y_per_div
10
wxgui_scopesink2
ac_couple
False
alias
comment
affinity
_enabled
0
_coordinate
(928, 195)
_rotation
0
grid_pos
id
wxgui_scopesink2_0
notebook
num_inputs
1
samp_rate
samp_rate
t_scale
0
title
Scope Plot
trig_mode
wxgui.TRIG_MODE_AUTO
type
float
v_offset
0
v_scale
0
win_size
xy_mode
False
y_axis_label
Counts
aaa
audio_sink_0
0
0
aaa
wxgui_scopesink2_0
0
0
analog_sig_source_x_0
blocks_multiply_xx_0
0
1
analog_wfm_rcv_0
aaa
0
0
blocks_multiply_xx_0
low_pass_filter_0
0
0
blocks_multiply_xx_0
wxgui_fftsink2_0_0
0
0
low_pass_filter_0
rational_resampler_xxx_0
0
0
osmosdr_source_0
blocks_file_sink_0
0
0
osmosdr_source_0
blocks_multiply_xx_0
0
0
osmosdr_source_0
wxgui_fftsink2_0
0
0
rational_resampler_xxx_0
analog_wfm_rcv_0
0
0
这里都是按视频做的,没什么参考,就不详细介绍了。
Mon Oct 17 14:46:32 2016
options
author
window_size
category
Custom
comment
description
_enabled
True
_coordinate
(8, 8)
_rotation
0
generate_options
wx_gui
hier_block_src_path
.:
id
top_block
max_nouts
0
qt_qss_theme
realtime_scheduling
run_command
{python} -u {filename}
run_options
prompt
run
True
thread_safe_setters
title
variable_slider
comment
converver
float_converter
value
4.388e6
_enabled
True
_coordinate
(856, 113)
_rotation
0
grid_pos
id
FM_samp_rate
label
max
5e6
min
3e6
notebook
num_steps
1000
style
wx.SL_HORIZONTAL
variable_slider
comment
converver
float_converter
value
104e6
_enabled
True
_coordinate
(264, 8)
_rotation
0
grid_pos
id
freq
label
max
110e6
min
80e6
notebook
num_steps
1000
style
wx.SL_HORIZONTAL
variable
comment
_enabled
True
_coordinate
(168, 6)
_rotation
0
id
samp_rate
value
48000
analog_wfm_tx
audio_rate
48000
alias
comment
affinity
_enabled
True
_coordinate
(536, 3)
_rotation
0
id
analog_wfm_tx_0
max_dev
75e3
maxoutbuf
0
minoutbuf
0
quad_rate
480000
tau
300e-6
audio_source
alias
comment
affinity
device_name
_enabled
True
_coordinate
(0, 159)
_rotation
0
id
audio_source_0
maxoutbuf
0
minoutbuf
0
num_outputs
1
ok_to_block
True
samp_rate
samp_rate
blocks_multiply_const_vxx
alias
comment
const
20
affinity
_enabled
True
_coordinate
(168, 159)
_rotation
0
id
blocks_multiply_const_vxx_0
type
float
maxoutbuf
0
minoutbuf
0
vlen
1
fractional_interpolator_xx
alias
comment
affinity
_enabled
True
_coordinate
(320, 150)
_rotation
0
id
fractional_interpolator_xx_0
interp_ratio
875e-3
maxoutbuf
0
minoutbuf
0
phase_shift
1
type
float
osmosdr_sink
alias
ant0
bb_gain0
20
bw0
250e3
corr0
0
freq0
freq
if_gain0
40
gain0
10
ant10
bb_gain10
20
bw10
0
corr10
0
freq10
100e6
if_gain10
20
gain10
10
ant11
bb_gain11
20
bw11
0
corr11
0
freq11
100e6
if_gain11
20
gain11
10
ant12
bb_gain12
20
bw12
0
corr12
0
freq12
100e6
if_gain12
20
gain12
10
ant13
bb_gain13
20
bw13
0
corr13
0
freq13
100e6
if_gain13
20
gain13
10
ant14
bb_gain14
20
bw14
0
corr14
0
freq14
100e6
if_gain14
20
gain14
10
ant15
bb_gain15
20
bw15
0
corr15
0
freq15
100e6
if_gain15
20
gain15
10
ant16
bb_gain16
20
bw16
0
corr16
0
freq16
100e6
if_gain16
20
gain16
10
ant17
bb_gain17
20
bw17
0
corr17
0
freq17
100e6
if_gain17
20
gain17
10
ant18
bb_gain18
20
bw18
0
corr18
0
freq18
100e6
if_gain18
20
gain18
10
ant19
bb_gain19
20
bw19
0
corr19
0
freq19
100e6
if_gain19
20
gain19
10
ant1
bb_gain1
20
bw1
0
corr1
0
freq1
100e6
if_gain1
20
gain1
10
ant20
bb_gain20
20
bw20
0
corr20
0
freq20
100e6
if_gain20
20
gain20
10
ant21
bb_gain21
20
bw21
0
corr21
0
freq21
100e6
if_gain21
20
gain21
10
ant22
bb_gain22
20
bw22
0
corr22
0
freq22
100e6
if_gain22
20
gain22
10
ant23
bb_gain23
20
bw23
0
corr23
0
freq23
100e6
if_gain23
20
gain23
10
ant24
bb_gain24
20
bw24
0
corr24
0
freq24
100e6
if_gain24
20
gain24
10
ant25
bb_gain25
20
bw25
0
corr25
0
freq25
100e6
if_gain25
20
gain25
10
ant26
bb_gain26
20
bw26
0
corr26
0
freq26
100e6
if_gain26
20
gain26
10
ant27
bb_gain27
20
bw27
0
corr27
0
freq27
100e6
if_gain27
20
gain27
10
ant28
bb_gain28
20
bw28
0
corr28
0
freq28
100e6
if_gain28
20
gain28
10
ant29
bb_gain29
20
bw29
0
corr29
0
freq29
100e6
if_gain29
20
gain29
10
ant2
bb_gain2
20
bw2
0
corr2
0
freq2
100e6
if_gain2
20
gain2
10
ant30
bb_gain30
20
bw30
0
corr30
0
freq30
100e6
if_gain30
20
gain30
10
ant31
bb_gain31
20
bw31
0
corr31
0
freq31
100e6
if_gain31
20
gain31
10
ant3
bb_gain3
20
bw3
0
corr3
0
freq3
100e6
if_gain3
20
gain3
10
ant4
bb_gain4
20
bw4
0
corr4
0
freq4
100e6
if_gain4
20
gain4
10
ant5
bb_gain5
20
bw5
0
corr5
0
freq5
100e6
if_gain5
20
gain5
10
ant6
bb_gain6
20
bw6
0
corr6
0
freq6
100e6
if_gain6
20
gain6
10
ant7
bb_gain7
20
bw7
0
corr7
0
freq7
100e6
if_gain7
20
gain7
10
ant8
bb_gain8
20
bw8
0
corr8
0
freq8
100e6
if_gain8
20
gain8
10
ant9
bb_gain9
20
bw9
0
corr9
0
freq9
100e6
if_gain9
20
gain9
10
comment
affinity
args
_enabled
1
_coordinate
(704, 110)
_rotation
0
id
osmosdr_sink_0
type
fc32
clock_source0
time_source0
clock_source1
time_source1
clock_source2
time_source2
clock_source3
time_source3
clock_source4
time_source4
clock_source5
time_source5
clock_source6
time_source6
clock_source7
time_source7
nchan
1
num_mboards
1
sample_rate
FM_samp_rate
sync
rational_resampler_xxx
alias
comment
affinity
decim
1
_enabled
1
fbw
0
_coordinate
(536, 139)
_rotation
0
id
rational_resampler_xxx_0
interp
8
maxoutbuf
0
minoutbuf
0
taps
type
ccc
wxgui_scopesink2
ac_couple
False
alias
comment
affinity
_enabled
0
_coordinate
(320, 243)
_rotation
0
grid_pos
id
wxgui_scopesink2_0
notebook
num_inputs
1
samp_rate
samp_rate
t_scale
0
title
Scope Plot
trig_mode
wxgui.TRIG_MODE_AUTO
type
float
v_offset
0
v_scale
0
win_size
xy_mode
False
y_axis_label
Counts
analog_wfm_tx_0
rational_resampler_xxx_0
0
0
audio_source_0
blocks_multiply_const_vxx_0
0
0
blocks_multiply_const_vxx_0
fractional_interpolator_xx_0
0
0
blocks_multiply_const_vxx_0
wxgui_scopesink2_0
0
0
fractional_interpolator_xx_0
analog_wfm_tx_0
0
0
rational_resampler_xxx_0
osmosdr_sink_0
0
0
这里做一个简单介绍,很多模块我也不清楚,如有错误,望大神指出。