First tutorial to run 5G OpenAir, from current develop branch.
OAI 5G is very partial, only a fixed scheduler, for one UE, no network entry (no radio network entry, no upper layers network entry).
We can use “phy-test” mode, that hard code a permanent UL and DL shared channel (means a data channel dedicated to one UE in 3GPP jargon).
Of course there is no core network in this very special “phy-test” mode and some upper layer pieces are still 4G (PDCP for example).
Please read the 4G tutorial for more information on how to make initial installation of OpenAir.
Then, you can compile and run 5G tests
./build_oai --gNB --nrUE
Run the gNB in one windows
./nr-softmodem -O ../../../ci-scripts/conf_files/gnb.band78.tm1.106PRB.usrpn300.conf --parallel-config PARALLEL_SINGLE_THREAD --rfsim --phy-test --rfsimulator.serveraddr server
If you use the same machine for the UE, we have the same IP address problem as in 4G (see our post rf-simulator-and-oai-ue-tutorial)
so, create a new Linux namespace as in this tutorial
In the namespace, run
sudo ./nr-uesoftmodem -d --rrc_config_path . --nokrnmod --phy-test --rfsim --rfsimulator.serveraddr 10.200.1.1
If it runs fine, you should see this graph:
If the graph doesn’t show working PDSCH, restart the UE as there is a random bug in UE initial synchronization.
Then, open one more text window and set it in the UE network name space
sudo ip netns exec ueNameSpace bash
It is now possible to ping the gNB output interface
ping -I oaitun_ue1 10.0.1.1 -s 1000
Sends in both directions packets of 1000 bytes.
Ping also checks the packet content is the same.
What is today available on top of this simple tutorial:
- If you make IP routing configuration, any IP traffic can get through the pair UE+gNB
- if you run the UE on another machine, it is also fine (no need of network namespaces)
- Ettus RF board may also work, if the machine is fast enough