一起玩转GNU Radio:LoRa实验

本文内容、开发板及配件仅限用于学校或科研院所开展科研实验!

本文介绍一篇关于用GNU Radio实现LoRa通信的论文,论文第一作者是Joachim Tapparel。LoRa是LoRaWAN的私有物理层协议,且LoRa由于其独特的低功耗特点,已经广泛应用在物联网场景中。为了深入研究LoRa的通信机制,最近几年已经有大量关于LoRa协议逆向的相关工作。在论文中,作者介绍了如何基于GNU Radio来实现LoRa物理层通信,并探讨了采样时间偏差和载波频率偏差对通信的影响效果,以及如何估计和消除这些偏差。利用USRP NI2920来做实验,测试了LoRa在无编码和编码情况下的误码率,展示了所构建的LoRa通信系统的可行性和可靠性。

目录

一、论文原文和相关技术报告

二、LoRa 物理层简介

三、gr-lora_sdr安装与使用

四、常见问题与解决方法

1、ModuleNotFoundError: No module named 'lora_sdr'

2、No rule to make target '/usr/lib/x86_64-linux-gnu/liborc-0.4.so'

五、有用链接


一、论文原文和相关技术报告

该工作介绍网址

LoRa PHY based on GNU Radio ‒ TCL ‐ EPFL

论文原文下载地址

https://arxiv.org/abs/2002.08208

LoRa逆向分析技术报告下载地址

https://www.epfl.ch/labs/tcl/wp-content/uploads/2020/02/Reverse_Eng_Report.pdf

二、LoRa 物理层简介

LoRa使用带宽为125KHz、250KHz或500KHz的扩频调制方法,扩频因子SF为7、8、9、10、11或12。每个LoRa符号扩频成7、8、9、10、11或12比特,具有N=2^SF个码片。LoRa的发射和接收过程,包括whitening、信道编码、交织、格雷映射。其中,

whitening是将有效载荷比特与一个伪随机序列进行异或操作。

信道编码实现纠错编码,LoRa使用汉明编码。

交织,LoRa使用对角交织器(diagonal interleaver)。

格雷映射,LoRa采用反格雷码实现从比特到符号的映射。

LoRa的数据包包括从Preamble upchirps、Network identifiers、Downchirps、Header、Payload和CRC。

 关于什么是upchirps和downchirps,可以参见LoRa重要知识 - 简书

三、gr-lora_sdr安装与使用

我的电脑环境是,Ubuntu 20.04虚拟机,GNU Radio 3.8.1.0 (Python 3.8.10)。

 代码安装过程如下,如果碰到问题,请参见《六、常见问题与解决方法》。不同人的电脑可能会碰到不同的问题,在cmake或make过程中,提示缺少什么库或者找不到什么库,依次解决即可。

git clone https://github.com/tapparelj/gr-lora_sdr.git
cd gr-lora_sdr
mkdir build
cd build
cmake ..
make
sudo make install
sudo ldconfig

需要注意的是,在安装gr-lora_sdr代码之前,你电脑中需要已安装GNU Radio 3.8,否则无法正常安装使用。

在我们安装gr-lora_sdr之前,在GNU Radio的GRC中,当你在模块搜索栏输入“lora”后,你会发现无法搜索到任何模块。

 当你成功安装了r-lora_sdr代码之后,你会发现可以搜索到lora相关模块。

 gr-lora_sdr的GRC基本实例文件在《apps/single_user》文件夹中,用GNU Radio的GRC打开tx_rx_simulation.grc文件并运行结果如下图所示。该GRC文件是纯仿真程序。在运行程序时,可能会提示“ImportError: No module named lora_sdr”错误,具体解决方法见《六、常见问题与解决方法》。

终端的信息如下图所示:

 在《apps/single_user》文件夹中还有用USRP来进行发射和接收的流图程序,可以将UHD模块替换成osmocom Source/Sink模块,LimeSDR Source(Rx)/LimeSDR Sink(Tx)模块后用HackRF或LimeSDR来实现发送和接收。

四、常见问题与解决方法

1、ModuleNotFoundError: No module named 'lora_sdr'

根据GitHub - tapparelj/gr-lora_sdr: This is the fully-functional GNU Radio software-defined radio (SDR) implementation of a LoRa transceiver with all the necessary receiver components to operate correctly even at very low SNRs. This work has been conducted at the Telecommunication Circuits Laboratory, EPFL.的“Frequent errors”和ModuleNotFoundError - GNU Radio相关内容,得知解决方法如下:

在终端中输入:

export PYTHONPATH=/usr/local/lib/python3/dist-packages:$PYTHONPATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

上述命令是适合我电脑的命令,不同人的电脑可能略有不同,具体可以参见ModuleNotFoundError - GNU Radio的方法。

2、No rule to make target '/usr/lib/x86_64-linux-gnu/liborc-0.4.so'

在运行make后,提示,

make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/liborc-0.4.so', needed by 'lib/libgnuradio-lora_sdr.so.ca195cb1'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:251: lib/CMakeFiles/gnuradio-lora_sdr.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

原因是缺少liborc-0.4。

根据https://ubuntu.pkgs.org/21.04/ubuntu-main-amd64/liborc-0.4-dev_0.4.32-1_amd64.deb.html

通过如下命令来安装相关库。

sudo apt-get install liborc-0.4-dev
sudo ldconfig

以下是我编译安装的全过程记录,

opensourcesdr@opensourcesdr-20:~/Downloads$ git clone https://github.com/tapparelj/gr-lora_sdr.git
Cloning into 'gr-lora_sdr'...
remote: Enumerating objects: 2243, done.
remote: Counting objects: 100% (152/152), done.
remote: Compressing objects: 100% (103/103), done.
remote: Total 2243 (delta 82), reused 82 (delta 47), pack-reused 2091
Receiving objects: 100% (2243/2243), 2.65 MiB | 2.34 MiB/s, done.
Resolving deltas: 100% (1630/1630), done.
opensourcesdr@opensourcesdr-20:~/Downloads$ ls
adv8dvbt23qam64.ts    gnuradio-maint-3.8      gr-tutorial-master
gnuradio-3.9.1.0      gnuradio-maint-3.8.zip  gr-tutorial-master.zip
gnuradio-3.9.1.0.zip  gr-lora_sdr
opensourcesdr@opensourcesdr-20:~/Downloads$ cd gr-lora_sdr/
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr$ ls
apps   CMakeLists.txt  environment.yml  include  LICENSE  README.md
cmake  docs            grc              lib      python   swig
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr$ mkdir build
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr$ cd build
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ ls
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ cmake ..
-- The CXX compiler identification is GNU 9.3.0
-- The C compiler identification is GNU 9.3.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Build type not specified: defaulting to release.
-- Found LOG4CPP: /usr/lib/x86_64-linux-gnu/liblog4cpp.so
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'gmp'
--   Found gmp, version 6.2.0
-- Found GMP: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Checking for module 'mpir >= 3.0'
--   No package 'mpir' found
-- Could NOT find MPIR (missing: MPIRXX_LIBRARY MPIR_LIBRARY MPIR_INCLUDE_DIR) 
-- Found MPLIB: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.71.0") found components: date_time program_options filesystem system regex thread unit_test_framework 
-- Found VOLK: Volk::volk  
-- User set python executable /usr/bin/python3
-- Found PythonInterp: /usr/bin/python3 (found version "3.8.10") 
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so (found suitable exact version "3.8.10") 
-- Checking for module 'fftw3f >= 3.0'
--   Found fftw3f , version 3.3.8
-- Found FFTW3f: /usr/lib/x86_64-linux-gnu/libfftw3f.so  
-- Found Git: /usr/bin/git  
-- Extracting version information from git describe...
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Using install prefix: /usr/local
-- Building for version: ca195cb1 / 1.0.0git
-- No C++ unit tests... skipping
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- 
-- Checking for module SWIG
-- Found SWIG version 4.0.1.
-- Found SWIG: /usr/bin/swig4.0  
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so (found version "3.8.10") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/opensourcesdr/Downloads/gr-lora_sdr/build
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ make
Scanning dependencies of target gnuradio-lora_sdr
[  3%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/add_crc_impl.cc.o
[  6%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/crc_verif_impl.cc.o
[  9%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/dewhitening_impl.cc.o
[ 12%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/gray_decode_impl.cc.o
[ 15%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/gray_enc_impl.cc.o
[ 18%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/hamming_dec_impl.cc.o
[ 21%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/hamming_enc_impl.cc.o
[ 25%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/header_decoder_impl.cc.o
[ 28%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/header_impl.cc.o
[ 31%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/interleaver_impl.cc.o
[ 34%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/modulate_impl.cc.o
[ 37%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/whitening_impl.cc.o
[ 40%] Building C object lib/CMakeFiles/gnuradio-lora_sdr.dir/kiss_fft.c.o
[ 43%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/RH_RF95_header_impl.cc.o
[ 46%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/fft_demod_impl.cc.o
[ 50%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/data_source_impl.cc.o
[ 53%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/frame_sync_impl.cc.o
[ 56%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/deinterleaver_impl.cc.o
[ 59%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/mu_detection_impl.cc.o
[ 62%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/mu_synchro_impl.cc.o
[ 65%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/partial_ml_impl.cc.o
[ 68%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/noise_est_impl.cc.o
[ 71%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/frame_src_impl.cc.o
[ 75%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/signal_detector_impl.cc.o
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/liborc-0.4.so', needed by 'lib/libgnuradio-lora_sdr.so.ca195cb1'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:251: lib/CMakeFiles/gnuradio-lora_sdr.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

https://ubuntu.pkgs.org/21.04/ubuntu-main-amd64/liborc-0.4-dev_0.4.32-1_amd64.deb.html

opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ sudo apt-get install liborc-0.4-dev
[sudo] password for opensourcesdr: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  liborc-0.4-dev-bin
Suggested packages:
  liborc-0.4-doc
The following NEW packages will be installed:
  liborc-0.4-dev liborc-0.4-dev-bin
0 upgraded, 2 newly installed, 0 to remove and 87 not upgraded.
Need to get 369 kB of archives.
After this operation, 2,417 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://mirrors.huaweicloud.com/repository/ubuntu focal/main amd64 liborc-0.4-dev-bin amd64 1:0.4.31-1 [185 kB]
Get:2 http://mirrors.huaweicloud.com/repository/ubuntu focal/main amd64 liborc-0.4-dev amd64 1:0.4.31-1 [183 kB]
Fetched 369 kB in 2s (227 kB/s)         
Selecting previously unselected package liborc-0.4-dev-bin.
(Reading database ... 238837 files and directories currently installed.)
Preparing to unpack .../liborc-0.4-dev-bin_1%3a0.4.31-1_amd64.deb ...
Unpacking liborc-0.4-dev-bin (1:0.4.31-1) ...
Selecting previously unselected package liborc-0.4-dev:amd64.
Preparing to unpack .../liborc-0.4-dev_1%3a0.4.31-1_amd64.deb ...
Unpacking liborc-0.4-dev:amd64 (1:0.4.31-1) ...
Setting up liborc-0.4-dev-bin (1:0.4.31-1) ...
Setting up liborc-0.4-dev:amd64 (1:0.4.31-1) ...


opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ sudo ldconfig
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ make
[  3%] Linking CXX shared library libgnuradio-lora_sdr.so
[ 78%] Built target gnuradio-lora_sdr
Scanning dependencies of target pygen_apps_9a6dd
[ 78%] Built target pygen_apps_9a6dd
Scanning dependencies of target lora_sdr_swig_swig_compilation
[ 81%] Swig source lora_sdr_swig.i
Deprecated command line option: -modern. This option is now always on.
[ 81%] Built target lora_sdr_swig_swig_compilation
Scanning dependencies of target lora_sdr_swig
[ 84%] Building CXX object swig/CMakeFiles/lora_sdr_swig.dir/CMakeFiles/lora_sdr_swig.dir/lora_sdr_swigPYTHON_wrap.cxx.o
[ 87%] Linking CXX shared module _lora_sdr_swig.so
[ 87%] Built target lora_sdr_swig
Scanning dependencies of target pygen_swig_20963
[ 90%] Generating lora_sdr_swig.pyc
[ 93%] Generating lora_sdr_swig.pyo
[ 93%] Built target pygen_swig_20963
Scanning dependencies of target pygen_python_3c387
[ 96%] Generating __init__.pyc, mu_demod.pyc
[100%] Generating __init__.pyo, mu_demod.pyo
[100%] Built target pygen_python_3c387
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ make
[ 78%] Built target gnuradio-lora_sdr
[ 78%] Built target pygen_apps_9a6dd
[ 81%] Built target lora_sdr_swig_swig_compilation
[ 87%] Built target lora_sdr_swig
[ 93%] Built target pygen_swig_20963
[100%] Built target pygen_python_3c387

接下来为了验证cmake和make都ok,我们删除build文件夹,重新来一遍
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ cd ..
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr$ sudo rm -r build
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr$ ls
apps  cmake  CMakeLists.txt  docs  environment.yml  grc  include  lib  LICENSE  python  README.md  swig
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr$ mkdir build && cd build
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ cmake ..
-- The CXX compiler identification is GNU 9.3.0
-- The C compiler identification is GNU 9.3.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Build type not specified: defaulting to release.
-- Found LOG4CPP: /usr/lib/x86_64-linux-gnu/liblog4cpp.so
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Checking for module 'gmp'
--   Found gmp, version 6.2.0
-- Found GMP: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Checking for module 'mpir >= 3.0'
--   No package 'mpir' found
-- Could NOT find MPIR (missing: MPIRXX_LIBRARY MPIR_LIBRARY MPIR_INCLUDE_DIR) 
-- Found MPLIB: /usr/lib/x86_64-linux-gnu/libgmpxx.so  
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.71.0") found components: date_time program_options filesystem system regex thread unit_test_framework 
-- Found VOLK: Volk::volk  
-- User set python executable /usr/bin/python3
-- Found PythonInterp: /usr/bin/python3 (found version "3.8.10") 
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so (found suitable exact version "3.8.10") 
-- Checking for module 'fftw3f >= 3.0'
--   Found fftw3f , version 3.3.8
-- Found FFTW3f: /usr/lib/x86_64-linux-gnu/libfftw3f.so  
-- Found Git: /usr/bin/git  
-- Extracting version information from git describe...
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- Using install prefix: /usr/local
-- Building for version: ca195cb1 / 1.0.0git
-- No C++ unit tests... skipping
-- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 
-- 
-- Checking for module SWIG
-- Found SWIG version 4.0.1.
-- Found SWIG: /usr/bin/swig4.0  
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.8.so (found version "3.8.10") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/opensourcesdr/Downloads/gr-lora_sdr/build
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ make
Scanning dependencies of target gnuradio-lora_sdr
[  3%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/add_crc_impl.cc.o
[  6%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/crc_verif_impl.cc.o
[  9%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/dewhitening_impl.cc.o
[ 12%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/gray_decode_impl.cc.o
[ 15%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/gray_enc_impl.cc.o
[ 18%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/hamming_dec_impl.cc.o
[ 21%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/hamming_enc_impl.cc.o
[ 25%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/header_decoder_impl.cc.o
[ 28%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/header_impl.cc.o
[ 31%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/interleaver_impl.cc.o
[ 34%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/modulate_impl.cc.o
[ 37%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/whitening_impl.cc.o
[ 40%] Building C object lib/CMakeFiles/gnuradio-lora_sdr.dir/kiss_fft.c.o
[ 43%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/RH_RF95_header_impl.cc.o
[ 46%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/fft_demod_impl.cc.o
[ 50%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/data_source_impl.cc.o
[ 53%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/frame_sync_impl.cc.o
[ 56%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/deinterleaver_impl.cc.o
[ 59%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/mu_detection_impl.cc.o
[ 62%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/mu_synchro_impl.cc.o
[ 65%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/partial_ml_impl.cc.o
[ 68%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/noise_est_impl.cc.o
[ 71%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/frame_src_impl.cc.o
[ 75%] Building CXX object lib/CMakeFiles/gnuradio-lora_sdr.dir/signal_detector_impl.cc.o
[ 78%] Linking CXX shared library libgnuradio-lora_sdr.so
[ 78%] Built target gnuradio-lora_sdr
Scanning dependencies of target pygen_apps_9a6dd
[ 78%] Built target pygen_apps_9a6dd
Scanning dependencies of target lora_sdr_swig_swig_compilation
[ 81%] Swig source lora_sdr_swig.i
Deprecated command line option: -modern. This option is now always on.
[ 81%] Built target lora_sdr_swig_swig_compilation
Scanning dependencies of target lora_sdr_swig
[ 84%] Building CXX object swig/CMakeFiles/lora_sdr_swig.dir/CMakeFiles/lora_sdr_swig.dir/lora_sdr_swigPYTHON_wrap.cxx.o
[ 87%] Linking CXX shared module _lora_sdr_swig.so
[ 87%] Built target lora_sdr_swig
Scanning dependencies of target pygen_swig_20963
[ 90%] Generating lora_sdr_swig.pyc
[ 93%] Generating lora_sdr_swig.pyo
[ 93%] Built target pygen_swig_20963
Scanning dependencies of target pygen_python_3c387
[ 96%] Generating __init__.pyc, mu_demod.pyc
[100%] Generating __init__.pyo, mu_demod.pyo
[100%] Built target pygen_python_3c387
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ sudo make install
[ 78%] Built target gnuradio-lora_sdr
[ 78%] Built target pygen_apps_9a6dd
[ 81%] Built target lora_sdr_swig_swig_compilation
[ 87%] Built target lora_sdr_swig
[ 93%] Built target pygen_swig_20963
[100%] Built target pygen_python_3c387
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/lib/cmake/lora_sdr/lora_sdrConfig.cmake
-- Installing: /usr/local/include/lora_sdr/api.h
-- Installing: /usr/local/include/lora_sdr/add_crc.h
-- Installing: /usr/local/include/lora_sdr/crc_verif.h
-- Installing: /usr/local/include/lora_sdr/dewhitening.h
-- Installing: /usr/local/include/lora_sdr/gray_decode.h
-- Installing: /usr/local/include/lora_sdr/gray_enc.h
-- Installing: /usr/local/include/lora_sdr/hamming_dec.h
-- Installing: /usr/local/include/lora_sdr/hamming_enc.h
-- Installing: /usr/local/include/lora_sdr/header_decoder.h
-- Installing: /usr/local/include/lora_sdr/header.h
-- Installing: /usr/local/include/lora_sdr/interleaver.h
-- Installing: /usr/local/include/lora_sdr/modulate.h
-- Installing: /usr/local/include/lora_sdr/whitening.h
-- Installing: /usr/local/include/lora_sdr/RH_RF95_header.h
-- Installing: /usr/local/include/lora_sdr/fft_demod.h
-- Installing: /usr/local/include/lora_sdr/data_source.h
-- Installing: /usr/local/include/lora_sdr/frame_sync.h
-- Installing: /usr/local/include/lora_sdr/deinterleaver.h
-- Installing: /usr/local/include/lora_sdr/mu_detection.h
-- Installing: /usr/local/include/lora_sdr/mu_synchro.h
-- Installing: /usr/local/include/lora_sdr/partial_ml.h
-- Installing: /usr/local/include/lora_sdr/noise_est.h
-- Installing: /usr/local/include/lora_sdr/frame_src.h
-- Installing: /usr/local/include/lora_sdr/signal_detector.h
-- Installing: /usr/local/lib/x86_64-linux-gnu/libgnuradio-lora_sdr.so.ca195cb1
-- Installing: /usr/local/lib/x86_64-linux-gnu/libgnuradio-lora_sdr.so.1.0.0git
-- Installing: /usr/local/lib/x86_64-linux-gnu/libgnuradio-lora_sdr.so
-- Installing: /usr/local/lib/cmake/testMod/gnuradio-lora_sdrTargets.cmake
-- Installing: /usr/local/lib/cmake/testMod/gnuradio-lora_sdrTargets-release.cmake
-- Installing: /usr/local/lib/cmake/testMod/gnuradio-lora_sdrConfig.cmake
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/_lora_sdr_swig.so
-- Set runtime path of "/usr/local/lib/python3/dist-packages/lora_sdr/_lora_sdr_swig.so" to ""
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/lora_sdr_swig.py
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/lora_sdr_swig.pyc
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/lora_sdr_swig.pyo
-- Installing: /usr/local/include/testMod/lora_sdr/swig/lora_sdr_swig.i
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/__init__.py
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/mu_demod.py
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/__init__.pyc
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/mu_demod.pyc
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/__init__.pyo
-- Installing: /usr/local/lib/python3/dist-packages/lora_sdr/mu_demod.pyo
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_add_crc.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_crc_verif.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_dewhitening.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_gray_decode.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_gray_enc.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_hamming_dec.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_hamming_enc.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_header_decoder.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_header.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_interleaver.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_modulate.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_whitening.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_RH_RF95_header.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_fft_demod.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_data_source.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_frame_sync.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_deinterleaver.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_mu_detection.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_mu_synchro.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_partial_ml.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_mu_demod.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_noise_est.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_frame_src.block.yml
-- Installing: /usr/local/share/gnuradio/grc/blocks/lora_sdr_signal_detector.block.yml
opensourcesdr@opensourcesdr-20:~/Downloads/gr-lora_sdr/build$ sudo ldconfig

五、有用链接

LoRa PHY based on GNU Radio ‒ TCL ‐ EPFL

https://arxiv.org/abs/2002.08208

GitHub - tapparelj/gr-lora_sdr: This is the fully-functional GNU Radio software-defined radio (SDR) implementation of a LoRa transceiver with all the necessary receiver components to operate correctly even at very low SNRs. This work has been conducted at the Telecommunication Circuits Laboratory, EPFL.

  • 4
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值