HackRF One—LTE基站扫描

本教程参考了James Evrytania和焦现军老师的GitHub开源项目,以及基本内容。可以说就是其内容的部署和实现。其中James Evrytania的程序仅支持RTL2832和FDD解码,不支持HackRF One以及国内中国移动使用的TDD。但焦老师的程序是在Evrytania老师的项目上继续的,因此我先从Evrytania开始做起,本文不涉及代码分析,仅是将作者的程序成功运行了而已,后面还需要对其C++语言和Matlab代码进行详细分析才能完全了解其中的奥秘。

https://github.com/Evrytania/LTE-Cell-Scannerhttps://github.com/Evrytania/LTE-Cell-ScannerGitHub - JiaoXianjun/LTE-Cell-Scanner: OpenCL, SDR, TDD/FDD LTE cell scanner, full stack from A/D samples to SIB ASN1 messages decoded in PDSCH, (optimized for RTL-SDR HACKRF and BladeRF board)OpenCL, SDR, TDD/FDD LTE cell scanner, full stack from A/D samples to SIB ASN1 messages decoded in PDSCH, (optimized for RTL-SDR HACKRF and BladeRF board) - GitHub - JiaoXianjun/LTE-Cell-Scanner: OpenCL, SDR, TDD/FDD LTE cell scanner, full stack from A/D samples to SIB ASN1 messages decoded in PDSCH, (optimized for RTL-SDR HACKRF and BladeRF board)https://github.com/JiaoXianjun/LTE-Cell-Scanner

安装Evrytania程序过程

1、检查依赖包是否均安装成功

sudo apt install libblas-dev librtlsdr-dev libncurses5-dev libitpp-dev -y

2、clone下Evrytania的程序。

https://github.com/Evrytania/LTE-Cell-Scanner.git

3、进行编辑,如果顺利,就是如下几行指令,但我还是遇到了各种问题,第4和第5步分别是我遇到的两个错误。

cd LTE-Cell-Scanner-master
mkdir build
cd build
cmake ../
make

 4、cmake时报错,无法找到ITPP等包,根据GitHub中的解答,我找到了解决方法。首先找到这个包的路径,使用以下指令。

cd /usr/lib 
find | grep -i itpp

例如我查出包的路径为/usr/lib/x86_64-linux-gnu,记录下这个路径,打开/LTE-Cell-Scanner-master/cmake/Modules,可以看到三个cmake文件,依次打开并将该路径加入到FIND_LIBRARY()中。这三个文件分别是找ITPP、FTTW和RTLSDR包,直接都加入,防止其它的报错。之后再cmake ..应该就不会报错了。

5、make时报错,我截取了GitHub上别人报告,和我的是一样的。

[ 5%] Building CXX object src/CMakeFiles/LTE_MISC.dir/capbuf.cpp.o
In file included from /root/LTE-Cell-Scanner/src/capbuf.cpp:29:0:
/root/LTE-Cell-Scanner/include/dsp.h: In function ‘itpp::cvec fshift(const cvec&, double, double)’:
/root/LTE-Cell-Scanner/include/dsp.h:47:25: error: lvalue required as left operand of assignment
coeff.real()=cos(kt);
^
/root/LTE-Cell-Scanner/include/dsp.h:48:25: error: lvalue required as left operand of assignment
coeff.imag()=sin(kt);
^
/root/LTE-Cell-Scanner/include/dsp.h: In function ‘void fshift_inplace(itpp::cvec&, double, double)’:
/root/LTE-Cell-Scanner/include/dsp.h:64:25: error: lvalue required as left operand of assignment
coeff.real()=cos(kt);
^
/root/LTE-Cell-Scanner/include/dsp.h:65:25: error: lvalue required as left operand of assignment
coeff.imag()=sin(kt);
^
src/CMakeFiles/LTE_MISC.dir/build.make:62: recipe for target 'src/CMakeFiles/LTE_MISC.dir/capbuf.cpp.o' failed
make[2]: *** [src/CMakeFiles/LTE_MISC.dir/capbuf.cpp.o] Error 1
CMakeFiles/Makefile2:121: recipe for target 'src/CMakeFiles/LTE_MISC.dir/all' failed
make[1]: *** [src/CMakeFiles/LTE_MISC.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

这个解决方法也可以在GigHub的问答中找到,打开/LTE-Cell-Scanner-master/CMakeLists.txt,

讲第11行的代码进行修改,增加-std=c++03 ,修改完后,再次make,就不会报错了。

SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++03 -ggdb -Wall")

至此按理来说就可以正常去使用CellSearch和LTE-Tracker了。

但我并没有RTL2832来进行实验,所以并不保证完全可用,但大家可以进行参考。

安装Jiao xianjun程序过程

1、仍然需要安装依赖包、clone程序、进行编译。因为我们设备是HackRF One,所以在cmake后加参数,其它设备也需要加相应参数进行编译,默认设备是RTL2832。

sudo apt install libblas-dev librtlsdr-dev libncurses5-dev libitpp-dev -y
git clone https://github.com/JiaoXianjun/LTE-Cell-Scanner.git

cd LTE-Cell-Scanner-master
mkdir build
cd build
cmake ../ -DUSE_HACKRF=1
make

2、在这次执行cmake和make时均为出现错误,不需要去修改上述的那些文件了。但在安装完毕后使用CellSearch时,出现了报错,说找不到设备,或配置错误,报错如下。

PPM: 0
correction: 1
usb_claim_interface error -6
config_rtlsdr Error: unable to open Hackrf device
Hackrf device not FOUND!

遇到这个原因,我找了好久原因,因为其在cmake和make期间没有报任何错误,让我摸不着头脑,后来我仔细查看了cmake时候的信息,发现Hackrf Lib没有找到,我又去看了/LTE-Cell-Scanner-master/cmake/Modules/FindHACKRF.cmake文件,发现其在查找Hackrf时,需要找两个位置,一个是hackrf.h的位置,另一个是libhackrf的位置。libhackrf我肯定是安装了,但haackrf.h我并没有,这一看就是C++程序的头文件。想到焦老师以及Evrytania的程序均是C++编写的,所以应该是需要hackrf的C++包,知道原因之后,解决起来也不难。

3、安装hackrf的C++包。

git clone https://github.com/mossmann/hackrf.git
cd hackrf/host
mkdir build
cd build
cmake ..
make
sudo make install

4、至此就可以链接HackRF One,来使用CellSearch和LTE-Tracker了。

./CellSearch --freq-start 2644400000

try peak 0 tdd_flag 0
try peak 0 tdd_flag 1
  Detected a TDD cell! At freqeuncy 2644.4MHz, try 0
    cell ID: 487
     PSS ID: 1
    RX power level: -5.87175 dB
    residual frequency offset: -421.115 Hz
                     k_factor: 1

至此运行成功,找到了TDD基站。“CellSearch”程序可用于在一定频率范围内搜索 LTE 运营商。一旦定位了 LTE 频率,可以使用“LTE-Tracker”对基站小区进行搜索和追踪。使用该程序搭配地图,可以确定基站小区的覆盖范围。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值