merge develop
This commit is contained in:
+19
-46
@@ -39,7 +39,7 @@ Running the [build_oai](../cmake_targets/build_oai) script also generates some
|
||||
- `rb_tool`: radio bearer utility
|
||||
- `genids` T Tracer utility, used at build time to generate T_IDs.h include file. This binary is located in the [T Tracer source file directory](../common/utils/T) .
|
||||
|
||||
The build system for OAI uses [cmake](https://cmake.org/) which is a tool to generate makefiles. The `build_oai` script is a wrapper using cmake, make and standard linux shell commands to ease the oai build and use . The file describing how to build the executables from source files is the [CMakeLists.txt](../cmake_targets/CMakeLists.txt), it is used as input by cmake to generate the makefiles.
|
||||
The build system for OAI uses [cmake](https://cmake.org/) which is a tool to generate makefiles. The `build_oai` script is a wrapper using cmake, make and standard linux shell commands to ease the oai build and use . The file describing how to build the executables from source files is the [CMakeLists.txt](../CMakeLists.txt), it is used as input by cmake to generate the makefiles.
|
||||
|
||||
The oai softmodem supports many use cases, and new ones are regularly added. Most of them are accessible using the configuration file or the command line options and continuous effort is done to avoid introducing build options as it makes tests and usage more complicated than run-time options. The following functionalities, originally requiring a specific build are now accessible by configuration or command line options:
|
||||
|
||||
@@ -78,7 +78,7 @@ cd cmake_targets/
|
||||
```
|
||||
|
||||
- The `-I` option is to install pre-requisites, you only need it the first time you build the softmodem or when some oai dependencies have changed.
|
||||
- The `-w` option is to select the radio head support you want to include in your build. Radio head support is provided via a shared library, which is called the "oai device" The build script creates a soft link from `liboai_device.so` to the true device which will be used at run-time (here the USRP one,`liboai_usrpdevif.so` . USRP is the only hardware tested today in the Continuous Integration process. The RF simulator[RF simulator](../targets/ARCH/rfsimulator/README.md) is implemented as a specific device replacing RF hardware, it can be specifically built using `-w SIMU` option, but is also built during any softmodem build.
|
||||
- The `-w` option is to select the radio head support you want to include in your build. Radio head support is provided via a shared library, which is called the "oai device" The build script creates a soft link from `liboai_device.so` to the true device which will be used at run-time (here the USRP one,`liboai_usrpdevif.so` . USRP is the only hardware tested today in the Continuous Integration process. The RF simulator[RF simulator](../sdr/rfsimulator/README.md) is implemented as a specific device replacing RF hardware, it can be specifically built using `-w SIMU` option, but is also built during any softmodem build.
|
||||
- `--eNB` is to build the `lte-softmodem` executable and all required shared libraries
|
||||
- `--gNB` is to build the `nr-softmodem` executable and all required shared libraries
|
||||
- `--UE` is to build the `lte-uesoftmodem` executable and all required shared libraries
|
||||
@@ -88,12 +88,19 @@ You can build any oai softmodem executable separately, you may not need all of t
|
||||
|
||||
After completing the build, the binaries are available in the `cmake_targets/ran_build/build` directory. A copy is also available in the `target/bin` directory, with all binaries suffixed by the 3GPP release number, today .Rel15.
|
||||
|
||||
When installing the pre-requisites, especially the `UHD` driver, you can now specify if you want to install from source or not.
|
||||
## Installing UHD from source
|
||||
|
||||
Previously for Ubuntu distributions, when installing the pre-requisites, most of the packages are installed from PPA.
|
||||
|
||||
Especially the `UHD` driver, but you could not easily manage the version of `libuhd` that will be installed.
|
||||
|
||||
Now, when installing the pre-requisites, especially the `UHD` driver, you can now specify if you want to install from source or not.
|
||||
|
||||
- For `fedora`-based OS, it was already the case all the time. But now you can specify which version to install.
|
||||
- For `ubuntu` OS, the Ettus PPA currently installs the following versions:
|
||||
* `Ubuntu16.04`: --> version `3.15.0.0`
|
||||
* `Ubuntu18.04`: --> version `4.1.0.0`
|
||||
- For `ubuntu` OS, you can still install from the Ettus PPA or select a version to install from source.
|
||||
* In case of PPA installation, you do nothing special, the script will install the latest version available on the PPA.
|
||||
- `./build_oai -I -w USRP`
|
||||
* In case of a installation from source, you do as followed:
|
||||
|
||||
```bash
|
||||
export BUILD_UHD_FROM_SOURCE=True
|
||||
@@ -103,49 +110,15 @@ export UHD_VERSION=3.15.0.0
|
||||
|
||||
The `UHD_VERSION` env variable `SHALL` be a valid tag (minus `v`) from the `https://github.com/EttusResearch/uhd.git` repository.
|
||||
|
||||
## Issue when building `nasmeh` module ##
|
||||
**CAUTION: Note that if you are using the OAI eNB in TDD mode with B2xx boards, a patch is mandatory.**
|
||||
|
||||
A lot of users and contributors have faced the issue: `nasmesh` module does not build.
|
||||
Starting this commit, the patch is applied automatically in our automated builds.
|
||||
|
||||
The reason is that the linux headers are not properly installed. For example:
|
||||
See:
|
||||
|
||||
```bash
|
||||
$ uname -r
|
||||
4.4.0-145-lowlatency
|
||||
$ dpkg --list | grep 4.4.0-145-lowlatency | grep headers
|
||||
ii linux-headers-4.4.0-145-lowlatency 4.4.0-145.171
|
||||
```
|
||||
|
||||
In my example it is properly installed.
|
||||
|
||||
Check on your environment:
|
||||
|
||||
```bash
|
||||
$ uname -r
|
||||
your-version
|
||||
$ dpkg --list | grep your-version | grep headers
|
||||
$
|
||||
```
|
||||
|
||||
Install it:
|
||||
|
||||
```bash
|
||||
$ sudo apt-get install --yes linux-headers-your-version
|
||||
```
|
||||
|
||||
On CentOS or RedHat Entreprise Linux:
|
||||
|
||||
```bash
|
||||
$ uname -r
|
||||
3.10.0-1062.9.1.rt56.1033.el7.x86_64
|
||||
$ yum list installed | grep kernel | grep devel
|
||||
kernel-devel.x86_64 3.10.0-1062.9.1.el7 @rhel-7-server-rpms
|
||||
kernel-rt-devel.x86_64 3.10.0-1062.9.1.rt56.1033.el7
|
||||
```
|
||||
|
||||
If your kernel is generic, install `kernel-devel` package: `sudo yum install kernel-devel`
|
||||
|
||||
In most case, your kernel is real-time. Install `kernel-rt-devel` package: `sudo yum install kernel-rt-devel`
|
||||
* `cmake_targets/tools/uhd-3.15-tdd-patch.diff`
|
||||
* `cmake_targets/tools/uhd-4.x-tdd-patch.diff`
|
||||
* `cmake_targets/tools/build_helper` --> function `install_usrp_uhd_driver_from_source`
|
||||
|
||||
# Building Optional Binaries
|
||||
|
||||
|
||||
+5
-5
@@ -23,7 +23,7 @@ It is planned to enhance this simulator with the following functionalities:
|
||||
- Support for multiple UE connections,each UE being a `lte-uesoftmodem` or `nr_uesoftmodem` instance.
|
||||
- Support for multiple eNodeB's or gNodeB's for hand-over tests
|
||||
|
||||
This is an easy use-case to setup and test, as no specific hardware is required. The [rfsimulator page](../targets/ARCH/rfsimulator/README.md ) contains the detailed documentation.
|
||||
This is an easy use-case to setup and test, as no specific hardware is required. The [rfsimulator page](../sdr/rfsimulator/README.md ) contains the detailed documentation.
|
||||
|
||||
# L2 nFAPI Simulator
|
||||
|
||||
@@ -102,7 +102,7 @@ Some other useful paramters of the UE are
|
||||
|
||||
Instead of randomly generated payload, in the phy-test mode we can also inject/receive user-plane traffic over a TUN interface. This is the so-called noS1 mode.
|
||||
|
||||
This setup is described in the [rfsimulator page](../targets/ARCH/rfsimulator/README.md#5g-case). In theory this should also work with the real hardware target although this has yet to be tested.
|
||||
This setup is described in the [rfsimulator page](../sdr/rfsimulator/README.md#5g-case). In theory this should also work with the real hardware target although this has yet to be tested.
|
||||
|
||||
## do-ra setup with OAI
|
||||
|
||||
@@ -169,15 +169,15 @@ gNB on machine 1:
|
||||
|
||||
UE on machine 2:
|
||||
|
||||
`sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 -s 516 --sa`
|
||||
`sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --ssb 516 --sa`
|
||||
|
||||
With the RF simulator (on the same machine):
|
||||
|
||||
`sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --rfsim --sa`
|
||||
|
||||
`sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 -s 516 --rfsim --sa`
|
||||
`sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --ssb 516 --rfsim --sa`
|
||||
|
||||
where `-r` sets the transmission bandwidth configuration in terms of RBs, `-C` sets the downlink carrier frequency and `-s` sets the SSB start subcarrier.
|
||||
where `-r` sets the transmission bandwidth configuration in terms of RBs, `-C` sets the downlink carrier frequency and `--ssb` sets the SSB start subcarrier.
|
||||
|
||||
Additionally, at UE side `--uecap_file` option can be used to pass the UE Capabilities input file (path location + filename), e.g. `--uecap_file ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/uecap.xml`
|
||||
|
||||
|
||||
@@ -214,4 +214,21 @@ sudo RFSIMULATOR=127.0.0.1 ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3
|
||||
--rfsim --sa --nokrnmod -O <PATH_TO_UE_CONF_FILE>
|
||||
```
|
||||
|
||||
If you get the following error:
|
||||
|
||||
```bash
|
||||
Assertion (k2 >= ((5))) failed!
|
||||
In get_k2() /home/mir/workspace/openairinterface5g/openair2/LAYER2/NR_MAC_UE/nr_ue_scheduler.c:147
|
||||
Slot offset K2 (2) cannot be less than DURATION_RX_TO_TX (5). K2 set according to min_rxtxtime in config file.
|
||||
```
|
||||
|
||||
Add the following parameter (i.e., min_rxtxtime) in the gNB configuration file, just after nr_cellid.
|
||||
|
||||
```bash
|
||||
nr_cellid = 12345678L;
|
||||
min_rxtxtime=6;
|
||||
```
|
||||
or --gNBs.[0].min_rxtxtime 6 to the gNB command line
|
||||
|
||||
|
||||
The IP address at the execution command of the OAI UE corresponds to the target IP of the gNB host that the RFSIMULATOR at the UE will connect to. In the above example, we assume that the gNB and UE are running on the same host so the specified address (127.0.0.1) is the one of the loopback interface.
|
||||
|
||||
@@ -51,13 +51,6 @@ services:
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.70.136
|
||||
volumes:
|
||||
- ./healthscripts/udr-healthcheck.sh:/openair-udr/bin/udr-healthcheck.sh
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/openair-udr/bin/udr-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-udm:
|
||||
container_name: "oai-udm"
|
||||
image: oai-udm:develop
|
||||
@@ -86,13 +79,6 @@ services:
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.70.137
|
||||
volumes:
|
||||
- ./healthscripts/udm-healthcheck.sh:/openair-udm/bin/udm-healthcheck.sh
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/openair-udm/bin/udm-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-ausf:
|
||||
container_name: "oai-ausf"
|
||||
image: oai-ausf:develop
|
||||
@@ -120,13 +106,6 @@ services:
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.70.138
|
||||
volumes:
|
||||
- ./healthscripts/ausf-healthcheck.sh:/openair-ausf/bin/ausf-healthcheck.sh
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/openair-ausf/bin/ausf-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nrf:
|
||||
container_name: "oai-nrf"
|
||||
image: oai-nrf:develop
|
||||
@@ -141,13 +120,6 @@ services:
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.70.130
|
||||
volumes:
|
||||
- ./healthscripts/nrf-healthcheck.sh:/openair-nrf/bin/nrf-healthcheck.sh
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/openair-nrf/bin/nrf-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-amf:
|
||||
container_name: "oai-amf"
|
||||
image: oai-amf:develop
|
||||
@@ -213,13 +185,6 @@ services:
|
||||
- mysql
|
||||
- oai-nrf
|
||||
- oai-ausf
|
||||
volumes:
|
||||
- ./healthscripts/amf-healthcheck.sh:/openair-amf/bin/amf-healthcheck.sh
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/openair-amf/bin/amf-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 15s
|
||||
retries: 5
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.70.132
|
||||
@@ -270,13 +235,6 @@ services:
|
||||
depends_on:
|
||||
- oai-nrf
|
||||
- oai-amf
|
||||
volumes:
|
||||
- ./healthscripts/smf-healthcheck.sh:/openair-smf/bin/smf-healthcheck.sh
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/openair-smf/bin/smf-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.70.133
|
||||
@@ -325,13 +283,6 @@ services:
|
||||
cap_drop:
|
||||
- ALL
|
||||
privileged: true
|
||||
volumes:
|
||||
- ./healthscripts/spgwu-healthcheck.sh:/openair-spgwu-tiny/bin/spgwu-healthcheck.sh
|
||||
healthcheck:
|
||||
test: /bin/bash -c "/openair-spgwu-tiny/bin/spgwu-healthcheck.sh"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.70.134
|
||||
|
||||
Reference in New Issue
Block a user