You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+83-36Lines changed: 83 additions & 36 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ It decodes the Physical Downlink Control Channel (PDCCH) of a base station and r
9
9
10
10
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.
11
11
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.
13
13
14
14
15
15
@@ -51,14 +51,22 @@ Check the [changelog](CHANGELOG.md) for recently introduced updates.
51
51
52
52
## Installation
53
53
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:
**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
100
125
```
101
126
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``:
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
143
195
## Usage Instructions
144
196
This section provides brief usage instructions for FALCON. The software collection comprises the following components:
145
197
146
-
*Falcon Decoder GUI: A visualization for online/offline PDCCH decoding
198
+
*FalconGUI: A visualization for online/offline PDCCH decoding
147
199
* FalconEye: A command-line version of the PDCCH decoder for automated/batch processing
148
200
* FalconCaptureProbe: Signal recorder with optional network probing
149
201
* FalconCaptureWarden: A command-line controller for synchronized recordings by multiple instances of FalconCaptureProbe
150
202
* imdea_cc_decoder: Port of IMDEA OWL's PDCCH decoder
151
203
* imdea_capture_sync: Port of IMDEA OWL's signal recorder
152
204
153
205
### 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``.
155
207
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].
156
208
157
209
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
166
218
### FALCON Eye
167
219
A command-line version of FALCON Decoder. For real-time monitoring of a cell, e.g. at 1829.4 MHz, run the following command:
168
220
```sh
169
-
cd build/src
170
-
./FalconEye -f 1829.4e6 -D /tmp/dci.csv
221
+
FalconEye -f 1829.4e6 -D /tmp/dci.csv
171
222
```
172
223
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``.
173
224
Press [CTRL]+C to exit the application and print some statistics of the run.
@@ -204,19 +255,18 @@ COLUMNS_FALCON_DCI = [
204
255
```
205
256
206
257
### 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.
209
260
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.
211
262
For this purpose, the application allocates all available RAM (minus 500MB as a reserve) for the internal sample buffer.
212
263
The capturing process stops if the allocated buffer size is exceeded.
213
264
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:
216
267
217
268
```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
220
270
```
221
271
* carrier_frequency_Hz: Center frequency in Hz of the LTE cell to capture. Exponential values are also accepted, e.g. ``1845e6``.
222
272
* 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:
226
276
*``example-unknownOperator-cell.csv``: General cell information in CSV format
227
277
*``example-unknownOperator-iq.bin``: Raw IQ samples of the cell for later analysis
228
278
229
-
230
-
(Further instructions and Examples will follow soon.)
231
-
232
279
## Application Notes
233
280
This section contains general application notes that might be helpful for reliable and accurate control channel analysis.
234
281
@@ -237,16 +284,16 @@ FALCON has a multi-stage validation chain that reduces error detection to a mini
237
284
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.
238
285
239
286
### 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.
241
288
FALCON uses this circumstance for performance and skips empty CCEs.
242
289
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``.
246
293
247
294
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.
250
297
251
298
The interface of FALCON's recorder and decoder is mostly compatible with [IMDEA OWL][imdea-owl].
252
299
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
256
303
257
304
A direct comparison of FALCON and OWL in a controlled environment is discussed in this [video presentation][video-presentation].
258
305
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.
263
310
264
-
### Validation of the port
311
+
### Validation of the port against the original version
265
312
266
313
Every port requires at least slight adaptations of the code, especially if the underlying libraries evolve.
267
314
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
270
317
271
318
This required the following precautions:
272
319
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.
274
321
275
322
With these precautions, both versions decoded and processed exactly the same set of DCI candidates (whether true or spurious). All candidates were classified identically.
276
323
However, we noticed the following (minor) differences:
277
324
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.
279
326
-**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.
0 commit comments