Skip to content

Commit f90bc6a

Browse files
committed
Update README and CHANGELOG
* Install instructions for Archlinux * Update deps for Ubuntu * Miscellaneous changes * CHANGELOG
1 parent 6c4e64a commit f90bc6a

File tree

2 files changed

+104
-36
lines changed

2 files changed

+104
-36
lines changed

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,27 @@
11
FALCON Changelog
22
================
33

4+
# v1.3.0
5+
6+
## General
7+
- Add install targets
8+
- Update instructions for build and install
9+
- Support Archlinux (package ``tudo-falcon`` in AUR)
10+
- Support Ubuntu 20.04.x LTS (Focal Fossa)
11+
12+
## GUI
13+
- Plots: bugfixing and code cleaning
14+
15+
## CI
16+
- Refactor CI pipeline
17+
- Build and test in Docker containers:
18+
- Archlinux
19+
- Ubuntu 20.04.x LTS (Focal Fossa)
20+
- Ubuntu 18.04.x LTS (Bionic Beaver)
21+
22+
## Miscellaneous
23+
- Bugfix: spurious detection of AVX512 for -O3 builds
24+
425
# v1.2.0
526

627
## General

README.md

Lines changed: 83 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ It decodes the Physical Downlink Control Channel (PDCCH) of a base station and r
99

1010
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.
1111

12-
Based on [srsLTE library][srslte], the software can be run on a plain x86 general-purpose PCs with any compatible SDR.
12+
Based on [srsLTE][srslte] library, the software can be run on a plain x86 general-purpose PCs with any compatible SDR.
1313

1414

1515

@@ -51,14 +51,22 @@ Check the [changelog](CHANGELOG.md) for recently introduced updates.
5151

5252
## Installation
5353

54-
### 1) Required Dependencies
55-
FALCON installation automatically downloads a proper 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:
54+
Installation has been verified on the following operating systems:
55+
56+
* Ubuntu 18.04.x LTS (Bionic Beaver)
57+
* Ubuntu 20.04.x LTS (Focal Fossa)
58+
* Archlinux
59+
60+
### Installation on Ubuntu
61+
62+
#### 1) Required Dependencies
63+
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:
5664

5765
For srsLTE:
5866
```sh
59-
sudo apt-get install build-essential git subversion cmake libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-dev libqt4-dev libfftw3-dev libsctp-dev libconfig-dev libconfig++-dev libmbedtls-dev
67+
sudo apt-get install build-essential git cmake libfftw3-dev libmbedtls-dev libboost-program-options-dev libconfig++-dev libsctp-dev
6068
```
61-
For srsGUI (required only for building port of IMDEA OWL):
69+
For srsGUI (only required to build the ported version of IMDEA OWL):
6270
```sh
6371
sudo apt-get install libboost-system-dev libboost-test-dev libboost-thread-dev libqwt-qt5-dev qtbase5-dev
6472
git clone https://github.com/srsLTE/srsGUI.git
@@ -73,7 +81,7 @@ For USRP support:
7381
```sh
7482
sudo add-apt-repository ppa:ettusresearch/uhd
7583
sudo apt-get update
76-
sudo apt-get install libuhd-dev libuhd003 uhd-host
84+
sudo apt-get install libuhd-dev uhd-host
7785
```
7886

7987
For LimeSDR support:
@@ -89,17 +97,61 @@ For FALCON:
8997
sudo apt-get install libglib2.0-dev libudev-dev libcurl4-gnutls-dev libboost-all-dev qtdeclarative5-dev libqt5charts5-dev
9098
```
9199

92-
### 2) FALCON:
100+
#### 2) FALCON:
93101
```sh
94102
git clone https://github.com/falkenber9/falcon.git
95103
cd falcon
96104
mkdir build
97105
cd build
98106
cmake ../
99107
make
108+
109+
# Install (optional)
110+
sudo make install
111+
```
112+
113+
**Note:** FALCON requires a [patched version][srslte-falcon-patch] of srsLTE 18.09 that is automatically downloaded and included as subproject during the build process. However if you need srsLTE to be installed on your system in a different version, please run: ``cmake -DFORCE_SUBPROJECT_SRSLTE=ON ../`` instead of ``cmake ../``.
114+
115+
### Installation on Archlinux
116+
On Archlinux build and install the package ``tudo-falcon`` from the [Arch User Repository (AUR)](https://aur.archlinux.org).
117+
The most convenient way is the use of an [AUR Helper](https://wiki.archlinux.org/index.php/AUR_helpers), e.g. [yay](https://aur.archlinux.org/packages/yay) or [pacaur](https://aur.archlinux.org/packages/pacaur). The following example shows the installation with ``yay``.
118+
119+
```sh
120+
# Install
121+
yay -Sy tudo-falcon
122+
123+
# Uninstall
124+
sudo pacman -Rs tudo-falcon
100125
```
101126

102-
**Note:** FALCON requires a [patched version][srslte-falcon-patch] of srsLTE 18.09 that is automatically downloaded and included as subproject during the build process. However if you need srsLTE to be installed on your system in a different version, please run: ``cmake -DFORCE_SUBPROJECT_SRSLTE=ON ../``
127+
#### Installation without AUR Helper
128+
129+
Without an AUR Helper, the package(s) can be built in a local directory with ``makepkg`` and installed via ``pacman``:
130+
```sh
131+
# Prerequisites
132+
pacman -S --needed base-devel
133+
134+
# Build directory
135+
mkdir falcon-packages
136+
cd falcon-packages
137+
138+
# Dependency c-mnalib
139+
git clone https://aur.archlinux.org/c-mnalib.git
140+
cd c-mnalib
141+
makepkg -si
142+
cd ..
143+
144+
# Dependency srsLTE (patched)
145+
git clone https://aur.archlinux.org/srslte-falcon-patch-git.git
146+
cd srslte-falcon-patch-git
147+
makepkg -si
148+
cd ..
149+
150+
# FALCON
151+
git clone https://aur.archlinux.org/tudo-falcon.git
152+
cd tudo-falcon
153+
makepkg -si
154+
```
103155

104156
## SDR Hardware
105157
FALCON has been tested with the following Software Defined Radios (SDRs):
@@ -143,15 +195,15 @@ All systems were tested with a USRP B210 SDR, attached via USB 3.0 and simple di
143195
## Usage Instructions
144196
This section provides brief usage instructions for FALCON. The software collection comprises the following components:
145197

146-
* Falcon Decoder GUI: A visualization for online/offline PDCCH decoding
198+
* FalconGUI: A visualization for online/offline PDCCH decoding
147199
* FalconEye: A command-line version of the PDCCH decoder for automated/batch processing
148200
* FalconCaptureProbe: Signal recorder with optional network probing
149201
* FalconCaptureWarden: A command-line controller for synchronized recordings by multiple instances of FalconCaptureProbe
150202
* imdea_cc_decoder: Port of IMDEA OWL's PDCCH decoder
151203
* imdea_capture_sync: Port of IMDEA OWL's signal recorder
152204

153205
### FALCON GUI
154-
The GUI version of FALCON's decoder is located in ``build/src/gui/gui``. Simply launch the executable from a terminal or from your preferred graphical file manager.
206+
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``.
155207
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][examples].
156208

157209
Press 'Start' and the decoder immediately starts to synchronize to the cell and decodes the PDCCH.
@@ -166,8 +218,7 @@ The GUI will display waterfall plots of the spectrum and resource allocations (u
166218
### FALCON Eye
167219
A command-line version of FALCON Decoder. For real-time monitoring of a cell, e.g. at 1829.4 MHz, run the following command:
168220
```sh
169-
cd build/src
170-
./FalconEye -f 1829.4e6 -D /tmp/dci.csv
221+
FalconEye -f 1829.4e6 -D /tmp/dci.csv
171222
```
172223
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``.
173224
Press [CTRL]+C to exit the application and print some statistics of the run.
@@ -204,19 +255,18 @@ COLUMNS_FALCON_DCI = [
204255
```
205256

206257
### FALCON Capture Probe and Capture Warden
207-
Command-line tools for capturing LTE signals and optional cell probing by an auxiliary modem.
208-
For synchronized recordings by multiple instances of the recorder, Capture Warden provides a test-based command prompt.
258+
Two command-line tools provide recording of LTE signals and optional cell probing by an auxiliary modem (supported by c-mnalib).
259+
For synchronized recordings by multiple (distributed) instances of ``FalconCaptureProbe``, the ``FalconCaptureWarden`` provides a text-based command prompt for synchronous remote control.
209260

210-
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.
261+
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.
211262
For this purpose, the application allocates all available RAM (minus 500MB as a reserve) for the internal sample buffer.
212263
The capturing process stops if the allocated buffer size is exceeded.
213264

214-
#### Minimum example: Capture raw data from a cell
215-
In order to capture raw data from an LTE cell and store it on the hard disk for later (offline) analysis, launch FALCON Capture Probe as follows:
265+
#### Minimum example: capture raw data from a cell
266+
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:
216267

217268
```sh
218-
cd build/src
219-
./FalconCaptureProbe -f <carrier_frequency_Hz> -n <nof_subframes> -o example
269+
FalconCaptureProbe -f <carrier_frequency_Hz> -n <nof_subframes> -o example
220270
```
221271
* carrier_frequency_Hz: Center frequency in Hz of the LTE cell to capture. Exponential values are also accepted, e.g. ``1845e6``.
222272
* nof_subframe: Number of subframes (= milliseconds) to capture. A value of ``5000`` may be a good start.
@@ -226,9 +276,6 @@ If it succeeds, the current working directory will contain the following files:
226276
* ``example-unknownOperator-cell.csv``: General cell information in CSV format
227277
* ``example-unknownOperator-iq.bin``: Raw IQ samples of the cell for later analysis
228278

229-
230-
(Further instructions and Examples will follow soon.)
231-
232279
## Application Notes
233280
This section contains general application notes that might be helpful for reliable and accurate control channel analysis.
234281

@@ -237,16 +284,16 @@ FALCON has a multi-stage validation chain that reduces error detection to a mini
237284
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.
238285

239286
### Uncommon occupancy of PDCCH
240-
In most cases, the base station only transmits a signal on actually occupied CCEs of the PDCCH, while free CCEs are left empty.
287+
In most cases, the eNodeB only emits a signal on actually occupied CCEs of the PDCCH, while free CCEs are left empty.
241288
FALCON uses this circumstance for performance and skips empty CCEs.
242289

243-
Some open-source eNodeBs (e.g. Open Air Interface) still send a significant signal on empty CCEs. In typical applications, this does not lead to any disadvantages, only to increased interference on the control channel when several cells are used.
244-
However such CCEs (depending on the actual content) can lead to false detections by FALCON's *short-cut* detector. To counteract this, the *short-cut* detector can be deactivated (option ``-L`` in FALCON Eye). The detection of the participants then takes place exclusively via random access or with the help of histograms based on the frequency of occurrence of individual RNTIs. In the latter case, however, RNTIs are only accepted and activated with a time delay after a threshold value has been reached.
245-
The threshold value can be configured by the option ``-H <threshold>`` in FALCON Eye.
290+
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.
291+
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.
292+
The threshold value can be configured by the option ``-H <threshold>`` in ``FalconEye``.
246293

247294

248-
## Alternative to IMDEA OWL
249-
FALCON is an alternative to [IMDEA OWL][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 non-ideal radio conditions.
295+
## Comparison with IMDEA OWL
296+
FALCON is an alternative to [IMDEA OWL][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.
250297

251298
The interface of FALCON's recorder and decoder is mostly compatible with [IMDEA OWL][imdea-owl].
252299
FALCON inherits OWL's approach of tracking C-RNTI assignments from PRACH for any UE that joins the cell during the observation time.
@@ -256,12 +303,12 @@ In contrast to OWL's re-encoding approach, this method is significantly less sen
256303

257304
A direct comparison of FALCON and OWL in a controlled environment is discussed in this [video presentation][video-presentation].
258305

259-
### Included port of IMDEA OWL
260-
The original version of IMDEA OWL is hardcoded into a fork of SRSLTE v1.3.
261-
In order to provide a fair comparison of FALCON and OWL and their underlying methods, we extracted and ported OWL with its extensions of the SRSLTE library into the FALCON project as separated modules and applications.
262-
By this, both applications benefit from future advancements of SRSLTE library.
306+
### Included port of IMDEA OWL for Benchmarking
307+
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.
308+
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.
309+
By this, both applications benefit from future advancements of srsLTE library.
263310

264-
### Validation of the port
311+
### Validation of the port against the original version
265312

266313
Every port requires at least slight adaptations of the code, especially if the underlying libraries evolve.
267314
However, this may lead to unintended side effects such as deviant functionality or different handling of exceptions.
@@ -270,14 +317,14 @@ We validated the functionality of the IMDEA OWL port against its original implem
270317

271318
This required the following precautions:
272319

273-
- **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.
320+
- **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.
274321

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

278-
- **DCI scrambled with RA/P/SI-RNTI**: MCS is provided by the updated version. In such cases the old version always reports MCS=0.
325+
- **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.
279326
- **Swapping**: In case the *Transport Block to Codeword Swap Flag* is set, the related values appear in swapped order.
280-
- **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 old version prints arbitrary values.
327+
- **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.
281328

282329

283330

0 commit comments

Comments
 (0)