openlte icon indicating copy to clipboard operation
openlte copied to clipboard

This directory contains the openLTE source code. For support, please subscribe to [email protected]. Details can be found at sourceforge.net/projects/openlte/.

The directory structure for the project is: octave Octave test code cmn_hdr Common header files liblte C++ library of commonly used LTE functions cmake Files needed for cmake LTE_fdd_dl_file_scan A gnu-radio LTE FDD DL file scanner application LTE_fdd_dl_file_gen A gnu-radio LTE FDD DL file generator application LTE_fdd_dl_scan A gnu-radio LTE FDD DL scanner application that currently supports rtl-sdr, hackrf, USRP B2X0, and bladeRF hardware LTE_file_recorder A gnu-radio LTE file recording application that currently supports rtl-sdr, hackrf, USRP B2X0, and bladeRF hardware LTE_fdd_enodeb An LTE FDD eNodeB application that currently supports URSP B2X0 hardware

openLTE is dependant on the following:

  1. GNU Radio
  2. GrOsmoSDR
  3. rtl-sdr
  4. UHD
  5. HackRF
  6. bladeRF

To build the C++ and python code use the following:

$ mkdir build $ cd build $ cmake ../ $ make

To install the C++ and python code use the following:

$ mkdir build $ cd build $ cmake ../ $ make $ sudo make install

All testing was performed against the following configuration:

  • Intel Core i5-2557M
  • Ubuntu 12.04
  • GNU Radio 3.7.2
  • GrOsmoSDR 0.1.1
  • rtl-sdr 0.5
  • UHD 3.6.0-1
  • HackRF 0.2
  • bladeRF 0.9.0

##################

FILE SCANNER

################## To use the installed C++ and python code for the file scanner, set the PYTHONPATH env variable to <python_install_dir>/dist-packages/gnuradio/ for instance /usr/local/lib/python2.7/dist-packages/gnuradio/ and make sure that /usr/local/lib is added to /etc/ld.so.conf and that LD_LIBRARY_PATH is set to /usr/local/lib (export LD_LIBRARY_PATH=/usr/local/lib). Then run LTE_fdd_dl_file_scan.py and specify a recorded LTE file as the input. For example:

$ LTE_fdd_dl_file_scan.py lte_file.bin

To see a list of options, use the -h option:

$ LTE_fdd_dl_file_scan.py -h

To change the input file data type (int8 or gr_complex), use the -d/--data-type option:

$ LTE_fdd_dl_file_scan.py -d int8 lte_file.bin

For int8 data type, the recorded LTE file must be interleaved signed 8-bit I and Q samples. For the gr_complex data type, the recorded LTE file must be sequential gr_complex I/Q samples. Files recorded with LTE_file_recorder or generated with LTE_fdd_dl_file_gen can be scanned with this application.

####################

FILE GENERATOR

#################### To use the installed C++ and python code for the file generator, set the PYTHONPATH env variable to <python_install_dir>/dist-packages/gnuradio/ for instance /usr/local/lib/python2.7/dist-packages/gnuradio/ and that LD_LIBRARY_PATH is set to /usr/local/lib (export LD_LIBRARY_PATH=/usr/local/lib). Then run LTE_fdd_dl_file_gen.py and specify an output file for the LTE fdd downlink signal. For example:

$ LTE_fdd_dl_file_gen.py lte_file.bin

To see a list of options, use the -h option:

$ LTE_fdd_dl_file_gen.py -h

To change the output file data type (int8 or gr_complex), use the -d/--data-type option:

$ LTE_fdd_dl_file_gen.py -d gr_complex lte_file.bin

For int8 data type, the generated LTE file contains interleaved signed 8-bit I and Q samples. For the gr_complex data type, the generated LTE file contains sequential gr_complex I/Q samples. Files generated with this application can be scanned with LTE_fdd_dl_file_scan.

#############

SCANNER

############# To use the installed C++ live scanner, make sure LD_LIBRARY_PATH is set to /usr/local/lib (export LD_LIBRARY_PATH=/usr/local/lib), plug in rtl-sdr, hackrf, USRP B2X0, or bladeRF hardware, run LTE_fdd_dl_scan, and connect (via telnet, nc, etc) to the control port at port number 20000. Scan parameters can be changed and scan results can be observed on the control port. For a list of parameters simply type help on the control port.

###################

FILE RECORDER

################### To use the installed C++ file recorder, make sure LD_LIBRARY_PATH is set to /usr/local/lib (export LD_LIBRARY_PATH=/usr/local/lib), plug in rtl-sdr, hackrf, USRP B2X0, or bladeRF hardware, run LTE_file_recorder, and connect (via telnet, nc, etc) to the control port at port number 25000. Recording parameters can be changed on the control port. For a list of parameters simply type help on the control port. Files recorded using hackRF, USRP B2X0, or bladeRF hardware are recorded using a sample rate of 15.36MHz. Files recorded with all other hardware are recorded using a sample rate of 1.92MHz. All files recorded with this application can be scanned with LTE_fdd_dl_file_scan.

############

ENODEB

############ To use the installed C++ eNodeB, make sure LD_LIBRARY_PATH is set to /usr/local/lib (export LD_LIBRARY_PATH=/usr/local/lib), plug in USRP B2X0 hardware, run LTE_fdd_enodeb, and connect (via telnet, nc, etc) to the control port at port number 30000. eNodeB parameters can be changed on the control port. For a list of parameters simply type help on the control port. A MAC and above level PCAP trace is output to /tmp/LTE_fdd_enodeb.pcap. NOTES: This application has been tested at 1.4, 3, and 5MHz bandwidths. Higher bandwidths are supported and performance may vary based on processing hardware. WARNINGS: By using this application you risk disruption of service in a public network, even if you are not directly interfering with the radio transmissions. This is a criminal act in most countries, and a much more serious offense than a simple violation of radio spectrum regulaions. It is highly recommended to use this application only with antennas and test UEs inside an RF Shielded Enclosure (Faraday Cage).

############

OCTAVE

############ To use the octave code, run the top level octave .m files: lte_fdd_dl_transmit.m and lte_fdd_dl_receive.m. If multiple transmit antennas are used, the outputs need to be combined before input to the receiver.