Git Product home page Git Product logo

falcon's Introduction

Header image

FALCON - Fast Analysis of LTE Control channels

Release AUR DOI arXiv License Video

FALCON is an open-source software collection for real-time analysis of radio resources in private or commercial LTE/LTE-A networks.

It decodes the Physical Downlink Control Channel (PDCCH) of a base station and reveals the number of currently active devices including their Radio Network Temporary Identifiers (RNTIs) and their individual resource allocations.

FALCON enables an exact determination of the current network load and the identification of bottlenecks. This information can be used to predict the achievable data rate of an additional subscriber by purely observing the current activity. Based on this criterion, congestion situations can be detected and avoidance strategies can be applied, e.g. switching to another network or postponing delay-tolerant transmissions.

Based on srsLTE library, the software can be run on a plain x86 general-purpose PCs with any compatible SDR.

TU Dortmund University SFB 876 Communication Networks Institute DFG

The research around this project has been supported by Deutsche Forschungsgemeinschaft (DFG) within the Collaborative Research Center SFB 876 “Providing Information by Resource-Constrained Analysis”, project A4 at TU Dortmund University.

A corresponding scientific publication (IEEE GLOBECOM 2019) is available on IEEE Xplore and on ArXiV.

Please see section Acknowledgements of how to reference this project.

Video

FALCON Video Presentation

License

FALCON is released under the AGPLv3 license.

Key Features

  • Reliable real-time monitoring public LTE cells
  • Monitoring up to 20 MHz bandwidth
  • FDD only
  • Supported DCI formats: 0/1A, 1, 1B, 1C, 2, 2A, 2B
  • Suitable for short-term and long-term monitoring with non-ideal radio conditions
  • Qt-based and OpenGL-accelerated GUI for visualization of allocated resource blocks, spectrogram and cell-specific performance metrics (throughput, resource utilization, user activity, etc.).
  • Synchronized recorder with integrated support for network probing by an auxiliary modem

Check the changelog for recently introduced updates.

Planned Features

  • TDD
  • Support for DCI with Carrier Indicator Field (CIF)
  • Multithreaded DCI search
  • Visualization of System Information Blocks (SIB)

Installation

Installation has been verified on the following operating systems:

  • Ubuntu 18.04.x LTS (Bionic Beaver)
  • Ubuntu 20.04.x LTS (Focal Fossa)
  • Archlinux

Installation on Ubuntu

1) Required Dependencies

FALCON installation automatically downloads a patched version of srsLTE and c-mnalib as subproject during the build process. Please install the following dependencies which are required by FALCON or its included components:

For srsLTE:

sudo apt-get install build-essential git cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev

For srsGUI (only required to build the ported version of IMDEA OWL):

sudo apt-get install libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-qt5-dev qtbase5-dev
git clone https://github.com/srsLTE/srsGUI.git
cd srsgui
mkdir build
cd build
cmake ../
make
sudo make install

For USRP support:

sudo add-apt-repository ppa:ettusresearch/uhd
sudo apt-get update
sudo apt-get install libuhd-dev uhd-host

For LimeSDR support:

sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install limesuite limesuite-udev limesuite-images
sudo apt-get install soapysdr soapysdr-module-lms7

For FALCON:

sudo apt-get install libglib2.0-dev libudev-dev libcurl4-gnutls-dev libboost-all-dev qtdeclarative5-dev libqt5charts5-dev

2) FALCON:

git clone https://github.com/falkenber9/falcon.git
cd falcon
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr ../
make

# Install (optional)
sudo make install

# Uninstall (use carefully!)
sudo xargs rm < install_manifest.txt

Note: FALCON requires a patched version of srsLTE 18.09 that is automatically downloaded and included as subproject during the build process. However if a diffferent version of srsLTE is already installed on the computer, the build system will link against that version. In case of conflicts, force the use of srsLTE as a subproject by adding -DFORCE_SUBPROJECT_SRSLTE=ON to the cmake options. In this case, take care with make install, since this may overwrite your existing version of srsLTE. Example:

...
cmake -DFORCE_SUBPROJECT_SRSLTE=ON -DCMAKE_INSTALL_PREFIX=/usr ../
...

Installation on Archlinux

On Archlinux build and install the package tudo-falcon from the Arch User Repository (AUR). The most convenient way is the use of an AUR Helper, e.g. yay or pacaur. The following example shows the installation with yay.

# Install
yay -Sy tudo-falcon

# Uninstall
sudo pacman -Rs tudo-falcon

Installation without AUR Helper

Without an AUR Helper, the package(s) can be built in a local directory with makepkg and installed via pacman:

# Prerequisites
pacman -S --needed base-devel

# Build directory
mkdir falcon-packages
cd falcon-packages

# Dependency c-mnalib
git clone https://aur.archlinux.org/c-mnalib.git
cd c-mnalib
makepkg -si
cd ..

# Dependency srsLTE (patched)
git clone https://aur.archlinux.org/srslte-falcon-patch-git.git
cd srslte-falcon-patch-git
makepkg -si
cd ..

# FALCON
git clone https://aur.archlinux.org/tudo-falcon.git
cd tudo-falcon
makepkg -si

SDR Hardware

FALCON has been tested with the following Software Defined Radios (SDRs):

  • Ettus Research: USRP B210
  • Ettus Research: USRP B205mini
  • Lime Microsystems: LimeSDR Mini

In addition, any SDR supported by srsLTE library should work as well.

Computer Hardware Requirements / Performance

Real-time decoding of LTE signals requires a mature multicore CPU, especially when monitoring busy cells and large bandwidths (i.e. 15MHz and 20MHz cells). Large sample rates, wide FFTs, and larger search spaces make heavy use of the CPU, memory and involved buses.

In case of minor/sporadic performance issues, FALCON starts skipping/dropping single subframes in favor of maintaining synchronization if the processing of previous (buffered) subframes takes too long. Serious performance issues lead to IQ-sample overflows and degraded synchronization which causes false detections (spurious DCI) or may even cause an entire synchronization loss.

The actual computational demands depend on many internal (CPU capabilities, memory bandwidth, power-saving techniques, other processes) and external factors (interference from neighboring cells/sectors, signal strength, cell activity). Therefore, the following rules of thumb may not all be required for your setup or may not be sufficient to obtain satisfactory results.

General Recommendations

  • Don't run any other fancy (GUI) application at the same time, e.g. browser or Email clients
  • Use a CPU with at least 4 physical cores
  • Disable Hyper-Threading
  • Disable power-saving techniques such as DVFS and put the CPU into performance mode

Example Systems

All systems were tested with a USRP B210 SDR, attached via USB 3.0 and simple dipole antenna (connected via 1m SMA HF cable).

Lenovo X250 Notebook

  • Intel Core i7-5600U (Dual Core CPU + Hyper-Threading), 2.6GHz, 8GB RAM, SSD
  • Arch Linux, kernel 5.3.5-arch1-1-ARCH, KDE/Plasma desktop environment
  • GUI: Good results up to 10MHz bandwidth and good LTE signal.
  • FalconEye: Good results up to 15MHz bandwidth and good LTE signal.
  • 20 MHz bandwidth: subframe skip ratio up to 50%, eventually sync loss, many false detections

Lenovo T540p

  • Intel Core i7-4710Q (4 Core CPU + Hyper-Threading), 2.5GHz, 8GB RAM, SSD
  • Ubuntu 18.04.3 LTS (bionic), kernel 4.15.0-66-generic, GNOME or KDE/Plasma desktop environment
  • GUI: Good results up to 20MHz bandwidth and good LTE signal; frame skips during window resizing
  • FalconEye: Good results up to 20MHz bandwidth and good LTE signal

Usage Instructions

This section provides brief usage instructions for FALCON. The software collection comprises the following components:

  • FalconGUI: A visualization for online/offline PDCCH decoding
  • FalconEye: A command-line version of the PDCCH decoder for automated/batch processing
  • FalconCaptureProbe: Signal recorder with optional network probing
  • FalconCaptureWarden: A command-line controller for synchronized recordings by multiple instances of FalconCaptureProbe
  • imdea_cc_decoder: Port of IMDEA OWL's PDCCH decoder
  • imdea_capture_sync: Port of IMDEA OWL's signal recorder

FALCON GUI

To start the GUI version of FALCON's decoder, simply launch FalconGUI from a terminal or from your preferred window manager. Without installation, FalconGUI is located in <build-dir>/src/gui/FalconGUI. Enter the center frequency of the target LTE cell or select a recording from a file using the file chooser or drag & drop. Example files are provided in a separate repository.

Press 'Start' and the decoder immediately starts to synchronize to the cell and decodes the PDCCH. The GUI will display waterfall plots of the spectrum and resource allocations (uplink and downlink) in real-time. The color of the displayed resource allocations is derived from the individual RNTIs of the particular subscribers.

Note: At any time, you can click on a waterfall plot to freeze current state. Scroll to go back and forth in time within the scrollback buffer.

FALCON Screenshot

FALCON Eye

A command-line version of FALCON Decoder. For real-time monitoring of a cell, e.g. at 1829.4 MHz, run the following command:

FalconEye -f 1829.4e6 -D /tmp/dci.csv

This will print an ASCII visualization of the discovered resource allocations to the terminal and a detailed log of all captured DCI into the trace file /tmp/dci.csv. Press [CTRL]+C to exit the application and print some statistics of the run.

The output of Falcon Eye for a 15MHz (75 PRB) cell should look as follows:

FALCON Eye Screenshot

DCI Tracefile Contents

The DCI tracefile is structures as CSV file, using tabs ("\t") as separator. The columns contain:

COLUMNS_FALCON_DCI = [
    'timestamp',    # unix timestamp in [s] as float, 1µs resolution
    'sfn',          # system frame number
    'subframe',     # subframe index {0,1,...,9}
    'rnti',         # the addressed RNTI
    'direction',    # 0 for uplink alloc., 1 for downlink alloc.
    'mcs_idx',      # MCS index of the first transport block
    'nof_prb',      # number of allocated PRBs
    'tbs_sum',      # total Transport Block Size (TBS) in [Bit]
    'tbs_0',        # TBS of first transport block (-1 for SISO)
    'tbs_1',        # TBS of second transport block (-1 for SISO)
    'format',       # index+1 of DCI format in array flacon_ue_all_formats[], see DCISearch.cc
    'ndi',          # new data indicator for first transport block
    'ndi_1',        # new data indicator for second transport block
    'harq_idx',     # HARQ index
    'ncce',         # index of first Control Channel Element (CCE) of this DCI within PDCCH
    'L',            # aggregation level of this DCI {0..3}, occupies 2^L consecutive CCEs.
    'cfi',          # number of OFDM symbols occupied by PDCCH
    'histval',      # number of occurences of this RNTI within last 200ms
    'nof_bits',     # DCI length (without CRC)
    'hex'           # raw DCI content as hex string, see sscan_hex()/sprint_hex() in falcon_dci.c 
]

FALCON Capture Probe and Capture Warden

Two command-line tools provide recording of LTE signals and optional cell probing by an auxiliary modem (supported by c-mnalib). For synchronized recordings by multiple (distributed) instances of FalconCaptureProbe, the FalconCaptureWarden provides a text-based command prompt for synchronous remote control.

Note: In order to reduce the IO-load of the capturing system, FalconCaptureProbe will store the captured samples in RAM and write them to file after the capturing has ended. For this purpose, the application allocates all available RAM (minus 500MB as a reserve) for the internal sample buffer. The capturing process stops if the allocated buffer size is exceeded.

Minimum example: capture raw data from a cell

In order to capture raw data from an LTE cell and store it on the hard disk for later (offline) analysis, launch FalconCaptureProbe as follows:

FalconCaptureProbe -f <carrier_frequency_Hz> -n <nof_subframes> -o example
  • carrier_frequency_Hz: Center frequency in Hz of the LTE cell to capture. Exponential values are also accepted, e.g. 1845e6.
  • nof_subframe: Number of subframes (= milliseconds) to capture. A value of 5000 may be a good start.

If it succeeds, the current working directory will contain the following files:

  • example-unknownOperator-cell.csv: General cell information in CSV format
  • example-unknownOperator-iq.bin: Raw IQ samples of the cell for later analysis

Application Notes

This section contains general application notes that might be helpful for reliable and accurate control channel analysis.

Signal Strength and Interference

FALCON has a multi-stage validation chain that reduces error detection to a minimum even under non-ideal signal conditions. However, in order to obtain a complete view of cell activity, a location with good signal conditions should be chosen. This is because resource allocations for users with a good signal can be sent with less redundancy (lower aggregation level), but cannot be decoded correctly under poor channel conditions.

Uncommon occupancy of PDCCH

In most cases, the eNodeB only emits a signal on actually occupied CCEs of the PDCCH, while free CCEs are left empty. FALCON uses this circumstance for performance and skips empty CCEs.

However, some open-source eNodeBs (e.g. Open Air Interface) nevertheless send a significant signal on empty CCEs. In typical applications with normal UEs, this does not lead to any disadvantages, only to increased interference on the control channel when several cells are used. But depending on the actual content, such CCEs can lead to false detections by FALCON's short-cut detector. To counteract this, the short-cut detector can be deactivated (option -L in FalconEye). The detection of the participants then takes place exclusively via random access and with the help of histograms based on the frequency of occurrence of individual RNTIs. In the latter case, previously unseen RNTIs are only accepted and activated with a time delay after a threshold value has been reached, e.g. at least 5 resource assignments in the last 200ms. The threshold value can be configured by the option -H <threshold> in FalconEye.

Comparison with IMDEA OWL

FALCON is an alternative to IMDEA OWL which provides comparable functionalities for long-term monitoring of LTE cells. Other than OWL, FALCON additionally targets use cases that require short-term monitoring, mobility or increased robustness against non-ideal radio conditions.

The interface of FALCON's recorder and decoder is mostly compatible with IMDEA OWL. FALCON inherits OWL's approach of tracking C-RNTI assignments from PRACH for any UE that joins the cell during the observation time. However, the method to discover already active C-RNTIs from earlier assignments differs significantly. FALCON uses RNTI histograms and shortcut decoding to validate unseen RNTIs during the blind decoding procedure. In contrast to OWL's re-encoding approach, this method is significantly less sensitive to non-ideal radio conditions. This makes FALCON suitable for robust and reliable short-term monitoring, e.g. for mobile applications.

A direct comparison of FALCON and OWL in a controlled environment is discussed in this video presentation.

Included port of IMDEA OWL for Benchmarking

The original version of IMDEA OWL was hardcoded into a fork of srsLTE v1.3 from Sep. 2016 and was updated to srsLTE v2.0 in Jul. 2017. In order to provide a fair comparison of FALCON and OWL and their underlying methods, we extracted and ported OWL with its custom extensions on the srsLTE library into the FALCON project as separated modules and applications. By this, both applications benefit from future advancements of srsLTE library.

Validation of the port against the original version

Every port requires at least slight adaptations of the code, especially if the underlying libraries evolve. However, this may lead to unintended side effects such as deviant functionality or different handling of exceptions.

We validated the functionality of the IMDEA OWL port against its original implementation by processing the same record of a public LTE cell (IQ samples) with both programs and compared the outputs.

This required the following precautions:

  • Switch Viterbi decoder to 8 bit: srsLTE uses a 16-bit Viterbi decoder if AVX2 is available, whereas the version underlying IMDEA OWL uses 8-bit Viterbi decoder. This circumvents direct comparison since spurious (false) DCI are decoded to different sequences of bits. Therefore, #undef VITERBI_16 in file dci.c of srsLTE library even if LV_HAVE_AVX2 is defined to achieve the same behavior.

With these precautions, both versions decoded and processed exactly the same set of DCI candidates (whether true or spurious). All candidates were classified identically. However, we noticed the following (minor) differences:

  • DCI scrambled with RA/P/SI-RNTI: MCS is correctly provided by the ported version. In such cases the original version always reports MCS=0.
  • Swapping: In case the Transport Block to Codeword Swap Flag is set, the related values appear in swapped order.
  • Invalid RB allocation: If the library detects an illegal RB allocation (i.e. spurious DCI carrying an illegal resource block group assignment), a nulled line is printed. The original version prints arbitrary values.

Related Publications

Acknowledgements

To acknowledge us in your publication(s) please refer to the following publication:

@InProceedings{Falkenberg2019a,
	Author = {Robert Falkenberg and Christian Wietfeld},
	Title = {{FALCON}: An Accurate Real-time Monitor for Client-based Mobile Network Data Analytics},
	Booktitle = {2019 IEEE Global Communications Conference (GLOBECOM)},
	Year = {2019},
	Address = {Waikoloa, Hawaii, USA},
	Month = dec,
	Publisher = {IEEE},
	Doi = {10.1109/GLOBECOM38437.2019.9014096},
	Eprint = {1907.10110},
	Eprinttype = {arxiv},
	Url = {https://arxiv.org/abs/1907.10110}
}

falcon's People

Contributors

cedrikschueler avatar falkenber9 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

falcon's Issues

Can't build on ARM due to bug in srsLTE 18.09 when SIMD is unavailable

Greetings,

I was trying to build falcon in Ubuntu on ARM, but am unable to do so. I think this is because of a bug (#265) in the patched version of srsLTE that the falcon cmake scripts download and compile.

First, I changed the DISABLE_SIMD option in falcon's CMakeLists.txt from OFF to ON, then proceeded to try to build falcon following the instructions. The cmake step completes without errors, but make fails with:

/home/localadm/falcon/build/srsLTE-src/lib/src/phy/fec/turbodecoder.c:170:22: error: ‘sse16_win_impl’ undeclared (first use in this function)
  170 |       h->dec16[0] = &sse16_win_impl;

According to the srsLTE/srsRAN_4G bug I linked above, srsLTE 18.09 does not build correctly when SIMD instructions are unavailable. The recommendation in that thread is to either use srsLTE 18.06 or to wait for the next release after 18.09 (which I believe ended up being 18.12).

Would it be possible to update falcon to build and run against a version of srsLTE 18.06 or 18.12 with your patches applied to it? Or to provide diffs of your patches to 18.09 so I can attempt to patch one of these versions myself?

Thanks in advance, and thanks for all your work on this software!

Build fails, doesn't recognise existing srsLTE and UHD libraries

Getting the following error when falcon is trying to build UHD support, probably because my UHD version 4.0.0 is too new?

[ 38%] Building CXX object srsLTE-build/lib/src/phy/rf/CMakeFiles/srslte_rf.dir/uhd_c_api.cpp.o
cc1plus: warning: ‘-Werror=’ argument ‘-Werror=incompatible-pointer-types’ is not valid for C++
In file included from /usr/include/c++/9/typeindex:35,
                 from /usr/local/include/uhd/property_tree.hpp:16,
                 from /usr/local/include/uhd/device.hpp:11,
                 from /usr/local/include/uhd/usrp/multi_usrp.hpp:28,
                 from /home/balt/LTE/falcon/build/srsLTE-src/lib/src/phy/rf/uhd_c_api.cpp:5:
/usr/include/c++/9/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
   32 | #error This file requires compiler and library support \
      |  ^~~~~

Also, tried to set environment variables for srsLTE which I already have built and running fine, but it's unclear which directory they need to point to - I've set them into the srsLTE git source dir:

SRSLTE_LIBRARIES=/home/xxx/LTE/srsLTE/build/lib/
SRSLTE_INCLUDE_DIRS=/home/xxx/LTE/srsLTE/lib/include

but cmake still doesn't find them and downloads your flavour of srsLTE. Any hints on how to resolve greatly appreciated.

patched srsLTE incompatible with SoapySDR 0.8

Hey there,

just to leave a comment, I needed to downgrade to SoapySDR 0.7.2 on Archlinux for the AUR package to work.
Also, I needed to install qt5-charts package for falcon to build.

Does FalconGUI only work with files?

I can't seem to figure out how to run FalconGUI straight from my B200 - for scripted use FalconEye works fine, but for visualisations it would be neat to be able to run FalconGUI in the same way. Is that not supported?

Build error "template with C linkage"

Trying to build falcon (AUR tudo-falcon 1.3.0-1) on a recent manjaro,

I get build errors:

[ 50%] Building CXX object src/eye/phy/CMakeFiles/eye_phy.dir/SubframeWorker.cc.o
In file included from /usr/include/glib-2.0/glib/gatomic.h:31,
                 from /usr/include/glib-2.0/glib/gthread.h:32,
                 from /usr/include/glib-2.0/glib/gasyncqueue.h:32,
                 from /usr/include/glib-2.0/glib.h:32,
                 from /usr/include/glib-2.0/gmodule.h:28,
                 from /usr/include/cmnalib/at_sierra_wireless_em7565.h:12,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/probe_modem.h:27,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/TrafficGeneratorEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/DummyEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/src/meas/DummyEventHandler.cc:21:
/usr/include/c++/11.1.0/type_traits:56:3: error: template with C linkage
   56 |   template<typename _Tp, _Tp __v>
      |   ^~~~~~~~
In file included from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/TrafficGeneratorEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/DummyEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/src/meas/DummyEventHandler.cc:21:
/home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/probe_modem.h:24:1: note: ‘extern "C"’ linkage started here
   24 | extern "C" {
      | ^~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/gatomic.h:31,
                 from /usr/include/glib-2.0/glib/gthread.h:32,
                 from /usr/include/glib-2.0/glib/gasyncqueue.h:32,
                 from /usr/include/glib-2.0/glib.h:32,
                 from /usr/include/glib-2.0/gmodule.h:28,
                 from /usr/include/cmnalib/at_sierra_wireless_em7565.h:12,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/probe_modem.h:27,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/TrafficGeneratorEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/DummyEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/src/meas/DummyEventHandler.cc:21:
/usr/include/c++/11.1.0/type_traits:71:3: error: template with C linkage
   71 |   template<typename _Tp, _Tp __v>
      |   ^~~~~~~~
In file included from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/TrafficGeneratorEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/DummyEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/src/meas/DummyEventHandler.cc:21:
/home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/probe_modem.h:24:1: note: ‘extern "C"’ linkage started here
   24 | extern "C" {
      | ^~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/gatomic.h:31,
                 from /usr/include/glib-2.0/glib/gthread.h:32,
                 from /usr/include/glib-2.0/glib/gasyncqueue.h:32,
                 from /usr/include/glib-2.0/glib.h:32,
                 from /usr/include/glib-2.0/gmodule.h:28,
                 from /usr/include/cmnalib/at_sierra_wireless_em7565.h:12,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/probe_modem.h:27,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/TrafficGeneratorEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/include/falcon/meas/DummyEventHandler.h:23,
                 from /home/matthias/.cache/yay/tudo-falcon/src/falcon-1.3.0/lib/src/meas/DummyEventHandler.cc:21:
/usr/include/c++/11.1.0/type_traits:80:3: error: template with C linkage
   80 |   template<bool __v>
      |   ^~~~~~~~

and am a bit too stupid to look into it myself. Any hints what requirement I am missing? :D

Testdata not available

Is this testdata still necessary?

git clone --recurse-submodules https://github.com/falkenber9/falcon.git
Cloning into 'falcon'...
remote: Enumerating objects: 577, done.
remote: Counting objects: 100% (577/577), done.
remote: Compressing objects: 100% (257/257), done.
remote: Total 1181 (delta 354), reused 505 (delta 315), pack-reused 604
Receiving objects: 100% (1181/1181), 6.78 MiB | 1.79 MiB/s, done.
Resolving deltas: 100% (645/645), done.
Submodule '_gitlab-ci/testdata' (https://github.com/falkenber9/falcon-testdata.git) registered for path '_gitlab-ci/testdata'
Cloning into '/home/xxxx/falcon/_gitlab-ci/testdata'...
Username for 'https://github.com':
Password for 'https://[email protected]@github.com':
remote: Repository not found.
fatal: repository 'https://github.com/falkenber9/falcon-testdata.git/' not found
fatal: clone of 'https://github.com/falkenber9/falcon-testdata.git' into submodule path '/home/xxxxx/falcon/_gitlab-ci/testdata' failed
Failed to clone '_gitlab-ci/testdata'. Retry scheduled
Cloning into '/home/xxxxx/falcon/_gitlab-ci/testdata'...
Username for 'https://github.com':
Password for 'https://[email protected]':
remote: Repository not found.
fatal: repository 'https://github.com/falkenber9/falcon-testdata.git/' not found
fatal: clone of 'https://github.com/falkenber9/falcon-testdata.git' into submodule path '/home/Armin/falcon/_gitlab-ci/testdata' failed
Failed to clone '_gitlab-ci/testdata' a second time, aborting

Feature Request: change rf args for FalconGUI

I am using LimeSDR Mini which has different signal paths in the mixer. By default, the high frequency mixer (LNAH) is selected; for LTE bands below 2 GHz, selecting LNAW improves the signal strength massively.

As far as I can see, rf_args is not implemented in the GUI, so cannot be set.

Falcon with zeroMQ

Hello, I am using srsRAN to build eNB. I want falcon to listen from eNB of srsRAN. Can I use ZeroMQ to connect Falcon and eNB.?

Has anyone tried like this? if yes can you please help? or any idea how I can do this?

Many Thanks

Prometheus Exporter

I'd like to contribute a Prometheus exporter and Grafana dashboard to see the realtime results of LTE scanning over time.

srsRAN seems to support doing this, but I don't know about srsLTE and I don't know about doing that when it's use in Falcon.

Is this already supported and I've just overlooked how to enable it?

The use case is I'd like to identify the downlinks available and as many metrics about the health of those downlinks as possible.

For example, I'd like to setup a system capturing data for 72 hours and periodically capture data about the LTE network at that location.

Types of data I'd like to capture export:

  • Identify what towers and downlinks are present
  • Identify the signal strength, quality, and interference for each
  • Identify the load, and other available metrics about each downlink
  • Stretch goal, measure or estimate the number of client devices present

What metrics could be made available in this tool?

Could not find any cell

Hello,

i would like to use the FalconGui for a SDR tech-demo, but unfortunately i am not able to find the cell in FalconGui.

To find the cell frequency and ID i used: https://github.com/JiaoXianjun/LTE-Cell-Scanner with an RTL-SDR:
with the following command:

CellSearch -s 1810e6 -e 1830e6 -p 1

Output:

Detected a FDD cell! At freqeuncy 1815.2MHz, try 0
    cell ID: 376
     PSS ID: 1
    RX power level: -18.6699 dB
    residual frequency offset: -11389.2 Hz
                     k_factor: 1.00001

For FalconGui i used a Ettus B200, that i previously tested with Gqrx.
I used the frequency and CID as input for FalconGui and got the following log:

QMetaObject::connectSlotsByName: No matching signal for on_actionDownlink_Plots_changed()
RF_Freq:  1.8152e+09
Creating Phy
SubframeWorkerThread ready
Spectrum View on
Opening RF device with 1 RX antennas...
[INFO] [UHD] linux; GNU C++ version 9.3.0; Boost_107100; UHD_3.15.0.0-release
[INFO] [B200] Loading firmware image: /usr/share/uhd/images/usrp_b200_fw.hex...
Opening USRP with args: type=b200,master_clock_rate=30.72e6
[INFO] [B200] Detected Device: B200
[INFO] [B200] Loading FPGA image: /usr/share/uhd/images/usrp_b200_fpga.bin...
[INFO] [B200] Operating over USB 3.
[INFO] [B200] Detecting internal GPSDO.... 
[INFO] [GPS] No GPSDO found
[INFO] [B200] Initialize CODEC control...
[INFO] [B200] Initialize Radio control...
[INFO] [B200] Performing register loopback test... 
[INFO] [B200] Register loopback test passed
[INFO] [B200] Asking for clock rate 30.720000 MHz... 
[INFO] [B200] Actually got clock rate 30.720000 MHz.
Starting AGC thread...
Tunning receiver to 1.8152e+09 Hz
Searching for cell...
Could not find any cell in this frequency
Cell not found after 0 trials
Searching for cell...
Could not find any cell in this frequency
Cell not found after 1 trials
Searching for cell...
Could not find any cell in this frequency
Cell not found after 2 trials
EyeCore: Exiting...
SubframeWorkerThread ended
Destroyed Phy

I have also tried this with several other Cells i have found with LTE-Cell-Scanner. A few times FalconGui found some PDCCH but discarded them without further information.

Can you help me with further information, what i am missing for this setup or how to debug it? May it be related to the usage of a B200?

Best regards,
Joe

Differences between FalconEye and FalconCaptureProbe

Firstly, many thanks for developing FALCON, it looks to be a really great way to analyse LTE networks.

I'm trying to use FALCON but have run into an issue: the output from using FalconEye directly differs from when I use FalconCaptureProbe and then analyse the captured file with FalconEye. Specifically, when I use FalconEye directly, several RNTIs are detected, but when I capture with FalconCaptureProbe then run FalconEye on the captured file, no RNTIs are detected.

A bit of background – my laptop is rather old so not particularly suitable for real-time decoding. So I decided to capture to a raw file and process the capture later. However, when I tried this FALCON didn't detect any RNTIs. I then tried FalconEye directly (reading from the USRP directly) and was surprised that several RNTIs were detected.

My setup is as follows: Dell Latitude E5420 laptop running Ubuntu 20.04 LTS, connected to a USRP B210 over USB 2 (I hope to get a USB 3 express card shortly).

To demonstrate the issue I ran two experiments. Both experiments used the same frequency and cell ID, and the second was run a few minutes after the first.

  1. Run FalconEye directly. The log file of this is in experiment-1.log, and FALCON detected 20 RNTIs.
  2. Run FalconCaptureProbe, then run FalconEye on the captured file. With this experiment, no RNTIs were detected. There are several files from this experiment:

Both experiments captured for 5 seconds, however since there is no way to limit FalconEye capture to 5000ms, I monitored it and manually cancelled it after 5 seconds had passed.

My guess would be that I'm mis-configuring something, or am mis-understanding how FalconEye / FalconCaptureProbe is supposed to work. I'd really appreciate help in understanding how to correctly use FalconCaptureProbe.

Many thanks!

Question regarding PRB utilization

I'm interested in getting PRB utilization in TTI level for a cell (1 ms). I saw COLUMNS collected by FALCON contains 'nof_prb', # number of allocated PRBs, but not sure how to convert it to a cell PRB utilization/ms with other COLUMNS. Is it possible in FALCON ? if possible, how to derive the PRB utilization/ms?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.