• Stars
    star
    391
  • Rank 110,003 (Top 3 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created about 12 years ago
  • Updated about 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GNU Radio LTE receiver

GNU Radio LTE Receiver

The gr-lte project is an Open Source Software Package which aims to provide a GNU Radio LTE Receiver to receive, synchronize and decode LTE signals. Its development was focused on modularity. This makes the project easy to extend and reuse its blocks.

This project was initiated as a Bachelor thesis at the Communication Engineering Lab (CEL) at the Karlsruhe Institute of Technology (KIT), Germany, http://www.cel.kit.edu.

The Idea

This project aims to provide a modular environment for an LTE downlink receiver. All blocks should be replacable. e.g. introduce a new channel estimator block with more advanced algorithms. On the other hand it should be fairly easy to add new blocks to decode additional physical channels.
The block design aims to be modular and reusable. Where possible GR blocks are used.
Furthermore message ports are used for configuration on runtime. This is supposed to make the control flow visible to users and thus better understandable.

Publications

This is a list of related publications for further reference.

J. Demel, S. Koslowski, and F. Jondral, A LTE Receiver Framework Implementation in GNU Radio, SDR-WInnComm-Europe-2013, June 2013.

Johannes Demel, Sebastian Koslowski, and Friedrich K. Jondral, A LTE Receiver Framework Using GNU Radio, Journal of Signal Processing Systems, 78(3):313–320, 2015.

Capabilities

gr-lte provides blocks to synchronize to a LTE downlink signal. It performs OFDM operation to operate in the frequency domain and provides a channel estimator. At this point physical LTE downlink channels can be extracted from the symbols and be processed. PBCH is fully implemented and decodes MIB. PCFICH is available too. Almost all code for PHICH is implemented and there is lots of code to bring PDCCH support. It is not yet possible to just plug it in, though. Eventually all channels shall be supported.

Flowgraphs

A lot of example flowgraphs are located in the examples folder. These include some hierarchical flowgraphs and the corresponding top-level flowgraphs. Two different algorithms for synchronization are available.

  • step-by-step synchronization
    • starts with symbol sync, PSS, SSS
    • for single RX antenna
  • direct PSS sync
    • Syncs directly to PSS half-frames
    • may use multiple RX antennas
    • 2RX and 4RX flowgraphs available

Requirements

  • GNU Radio 3.7.6 or newer

    • some bugs just got fixed in this new version and we take advantage of them.
    • all code was moved to GR 3.7 API.
  • GR 3.6.5.1 (deprecated)

    • use commit tagged with 'gnuradio-v3.6.5.1'
    • message passing API is necessary
    • all the latest bug fixes
    • project used to use GR 3.6 API
  • MATLAB (deprecated)

    • R2011b tested
    • m-files are replaced by Python/Numpy/Scipy code which offers greater flexibility and connectivity to GNU Radio.
    • for .m-files
    • If you want, have a look at the m-files

Build/Install instructions for Linux

You can use PyBOMBS to install GNU Radio and gr-lte or use the instructions below.

  1. Get, build and install GNU Radio from http://www.gnuradio.org

  2. Get gr-lte from github

  3. Configure it using CMake
    Assuming you are already in the project folder
    mkdir build
    cp cmake_command.sh build/
    cd build
    ./cmake_command.sh

    This will just run a little script to aid with project setup for Code::Blocks
    Otherwise run cmake ..

  4. Compile and Install
    make -jX where X is a number of choice (Often the number of cores available)
    sudo make install (make it available in GRC)

  5. compile hierarchical GRC blocks
    These blocks are located in the 'examples' directory.
    hierarchical GRC blocks must be generated by opening them in GRC and clicking Generate. Afterwards reload blocks or restart GRC. This makes the hier blocks available in GRC just as all the other blocks.
    An alternative is to use the python script examples/hier_block_install_helper.py, which calls 'grcc' for all grc files in the current directory and installs them.

  6. Have fun
    If everything runs without errors the gr-lte blocks should be available in GRC.
    The flowgraph 'LTE_flowgraph_top_level.grc' is meant as a reference. It is supposed to contain a working flowgraph with all available blocks. Only the source must be updated. Specify the path to your recorded samples and update the resampler parameters.
    By changing the variable 'fftlen' you update a whole bunch of other variables which basically configure the expected bandwidth and the maximum subcarriers the flowgraph can handle.

  7. Troubleshooting
    In case you have trouble with parts of the flowgraph etc. write an email preferably to the GNU Radio mailinglist. This way others with the same problem can find hints in the mailinglist archives.

More Repositories

1

gr-radar

GNU Radio Radar Toolbox
C++
239
star
2

lecture-examples

Sample scripts used in the lectures of the CEL (Communications Engineering Lab) at KIT
Jupyter Notebook
78
star
3

gr-drm

DRM transmitter using GNU Radio
C++
74
star
4

gr-specest

A module adding spectral estimation routines to GNU Radio.
Python
60
star
5

simulink-hackrf

Simulink blockset and MATLAB functions to interface with HackRF devices in real-time
C
43
star
6

simulink-rtl-sdr

An Open Source Software Package that enables owners of DVB-T dongles with an embedded Realtek RTL2832U chipset to build models in Simulink that interface with the device in realtime
C++
40
star
7

gr-gfdm

Generalized Frequency Division Multiplexing in GNU Radio
C++
25
star
8

vae-equalizer

This repo provides an implementation of a Variational Autoencoder (VAE) based equalizer. This includes a simulation environment with an AWGN channel and a linear optical dual-polaization channel. Additionally, state-of-the-art equalizers are implemented as reference.
Python
25
star
9

gr-lpwan

Implementations of waveforms for Low Power Wide Area Networks (LPWANs)
C++
21
star
10

gr-cbmc

Cumulant-Based Modulation Classification with GNU Radio
CMake
16
star
11

Quantum-Neural-BP4-demo

Implementation of Neural Belief propagation decoder for QLDPC codes
Jupyter Notebook
14
star
12

ecoc_20_learning

PyTorch examples accompanying the ECOC 2020 invited presentation about end-to-end learning in optical communications
Jupyter Notebook
11
star
13

mokka

Machine Learning and Optimization for Communications Systems
Python
10
star
14

gr-fbmc

A FBMC PHY layer for use with the secondary user solution presented at DySPAN 2017.
C++
10
star
15

e2e_opt_diff_bps

End-to-end optimization of Constellation Shaping for Wiener Phase Noise Channels with a Differentiable Blind Phase Search
Python
7
star
16

HHI_SummerSchool_2021

Jupyter Notebook
6
star
17

interference_measurement_tool

Interference measurement tool
Python
6
star
18

gr-classifier

Classification algorithms for spectrum sharing
Python
6
star
19

simulink-uhd

A Simulink blockset that enables owners of UHD-compatible Universal Software Radio Peripherals (USRP) from Ettus Research to build models in MATLAB Simulink that interface with the device in real-time.
C++
5
star
20

2023-Roadmap-Optical-Communications-ML

Jupyter Notebook
4
star
21

gap

Source Code and Demo for the GAP Symbol Detection Algorithm
Jupyter Notebook
3
star
22

snn-dfe

Python
3
star
23

DySPAN17_SpectrumChallenge_KIT

Provides the flowgraphs for the secondary user solution as presented at DySPAN 2017's Spectrum Challenge.
Python
3
star
24

rsess

Enumerative Sphere Shaping in Rust
Rust
3
star
25

factor_graph_structural_opt

Source Code and Demo for the Paper "Structural Optimization of Factor Graphs for Symbol Detection using Model-based Machine Learning".
Jupyter Notebook
2
star
26

mokka_demo

Interactive GUI to demonstrate signal processing and optimization in MOKka
Python
2
star
27

OptiSpike

Joint optimization of an IM/DD SNN equalizer and it's spike encoding
Python
2
star
28

HandoverOptimDRL

Framework for learning handover algorithms using deep reinforcement learning.
Python
2
star
29

matlab-neurobayes

MATLAB wrapper for NeuroBayes library
C++
1
star
30

ECOC-Short-Course

Additional material for the ECOC 2022 short course on forward error correction
Jupyter Notebook
1
star
31

rsess_examples

Rust
1
star
32

digicosme_spring_school22

Jupyter Notebook
1
star