---
# System prepended metadata

title: OAI實作

---

# OAI實作
## gNB
### 1. CPU Configuration
:::warning
:warning:Note: OAI doesn't support ubuntu 20 or upper version, ubuntu 18.04 or 16.04 is recommeded
:::
##### ( a ) Disable C-states and P-states in Linux
```
$ sudo vim /etc/default/grub
```
- Add the following line in GRUB_CMDLINE_LINUX_DEFAULT
```
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=disable intel_idle.max_cstate=0 processor.max_cstate=0 idle=poll"
```
![](https://hackmd.io/_uploads/SkHA4nUb6.png)
- Second , perform update-grub

```
$ sudo update-grub
$ reboot
```
##### ( b ) Remove all power management and CPU frequency scaling

1. Append “blacklist intel_powerclamp” to the end of /etc/modprobe.d/blacklist.conf
2. Disable “hyperthreading”, “CPU frequency control”, “C-states”, “P-states” features in BIOS.
3. Install i7z to check the cpu

```
$ sudo apt-get isntall i7z
$ sudo i7z
```
4. The CPU should not change its frequency by more than 1-2 hertz and should not be any C-state other than C0
![](https://hackmd.io/_uploads/H11jrnU-a.png)
5. Disable CPU frequency scaling

    (1) Get cpufrequtils
    
    ```
    $ sudo apt-get install cpufrequtils
    ```
    
    (2) Edit the following file ( If it doesn't exist, create it )
    
    ```
    $ sudo vim /etc/default/cpufrequtils
    ```
    (3) Then, add the following line into it and save it.
    ```
    GOVERNOR="performance"
    ```
    (4) Disable ondemand daemon
    ```
    $ sudo update-rc.d ondemand disable
    (or use : sudo systemctl disable ondemand.service)
    ```
    
    (5) Disable Hyper-threading in bios
    
    If you cannot find Hyper-threading in bios, try the bellow link to disable your hyper-threading
    
    [Disable Your Hyper-threading](https://askubuntu.com/questions/942728/disable-hyper-threading-in-ubuntu)
    
    After that, you can try this command to check whether all your cpu is fully used
    
```
$ watch grep \"cpu MHz\" /proc/cpuinfo
```

## OAI Build
## OAI Configurartion
- 192.168.91.128 -> your 5GC IP
- 192.168.91.128 -> OAI to 5GC Interface IP
- vmnet8 -> OAI to 5GC Interface name
```git=
diff --git a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
index 3b7fadf3bc..34e0ce3fb2 100644
--- a/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
+++ b/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
@@ -11,7 +11,10 @@ gNBs =
 
     // Tracking area code, 0x0000 and 0xfffe are reserved values
     tracking_area_code  =  1;
-    plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; }) });
+    plmn_list = ({ mcc = 999; 
+      mnc = 70; 
+      mnc_length = 2; 
+      snssaiList = ({ sst = 1; }) });
 
     nr_cellid = 12345678L;
 
@@ -159,7 +162,7 @@ gNBs =
 
 
     ////////// AMF parameters:
-    amf_ip_address      = ( { ipv4       = "192.168.70.132";
+    amf_ip_address      = ( { ipv4       = "192.168.91.128";
                               ipv6       = "192:168:30::17";
                               active     = "yes";
                               preference = "ipv4";
@@ -169,10 +172,10 @@ gNBs =
 
     NETWORK_INTERFACES :
     {
-        GNB_INTERFACE_NAME_FOR_NG_AMF            = "demo-oai";
-        GNB_IPV4_ADDRESS_FOR_NG_AMF              = "192.168.70.129/24";
-        GNB_INTERFACE_NAME_FOR_NGU               = "demo-oai";
-        GNB_IPV4_ADDRESS_FOR_NGU                 = "192.168.70.129/24";
+        GNB_INTERFACE_NAME_FOR_NG_AMF            = "vmnet8";
+        GNB_IPV4_ADDRESS_FOR_NG_AMF              = "192.168.91.1/24";
+        GNB_INTERFACE_NAME_FOR_NGU               = "vmnet8";
+        GNB_IPV4_ADDRESS_FOR_NGU                 = "192.168.91.1/24";
         GNB_PORT_FOR_S1U                         = 2152; # Spec 2152
     };
```

## Running each component
:::info
:bulb:Hint: Before running the components, Check the if IP, network interface informations are correct
:::

### gNB
#### Run the OAI Modem(Assume the used Software-defined Radio is USRP b210)
```
$ cd <OAI_location> # ex: cd ~/oai_5gsa/openairinterface5g
$ cd cmake_targets/ran_build/build/
$ sudo ./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf -E --sa
```