@@ -484,12 +484,15 @@ Contact the RU vendor and get the configuration manual to understand the below c
...
@@ -484,12 +484,15 @@ Contact the RU vendor and get the configuration manual to understand the below c
### Benetel 650
### Benetel 650
-**Valid only for version RAN650-1v1.0.4-dda1bf5**
**Valid only for version RAN650-1v1.0.4-dda1bf5**
- TDD pattern `DDDDDDDSUU`, 5ms
The OAI configuration file [`gnb-du.sa.band77.273prb.fhi72.4x4-benetel650.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.4x4-benetel650.conf) corresponds to:
- TDD pattern `DDDSU`, 2.5ms
- Bandwidth 100MHz
- Bandwidth 100MHz
- MTU 9216 (this is the maximum we can configure on our switch)
- MTU 9600
- 4TX4R
- 4TX4R
- The OAI configuration file [`gnb.sa.band78.273prb.fhi72.4x4-benetel650.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel650.conf) corresponds to below RU configuration.
#### RU configuration
After switching on the radio or rebooting, wait for the radio bring up to complete, which you can follow using `tail -f /tmp/logs/radio_status`. Once you will see `[INFO] Radio bringup complete`, you can configure the RU via editing `/etc/ru_config.cfg`
After switching on the radio or rebooting, wait for the radio bring up to complete, which you can follow using `tail -f /tmp/logs/radio_status`. Once you will see `[INFO] Radio bringup complete`, you can configure the RU via editing `/etc/ru_config.cfg`
-**Valid only for version RAN550-1v1.0.4-605a25a**
The OAI configuration file [`gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf) corresponds to:
- TDD pattern `DDDDDDDSUU`, 5ms
- TDD pattern `DDDDDDDSUU`, 5ms
- Bandwidth 100MHz
- Bandwidth 100MHz
- MTU 9600
- 4TX4R
- 4TX4R
- The OAI configuration file [`gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-benetel550.conf) corresponds to below RU configuration.
#### RU configuration
After switching on the radio or rebooting, wait for the radio bring up to complete, which you can follow using `tail -f /tmp/logs/radio_status`. Once you will see `[INFO] Radio bringup complete`, you can configure the RU via editing `/etc/ru_config.cfg`
After switching on the radio or rebooting, wait for the radio bring up to complete, which you can follow using `tail -f /tmp/logs/radio_status`. Once you will see `[INFO] Radio bringup complete`, you can configure the RU via editing `/etc/ru_config.cfg`
The OAI configuration file [`gnb.sa.band78.273prb.fhi72.4x4-liteon.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-liteon.conf) corresponds to:
- TDD pattern `DDDSU`, 2.5ms
- TDD pattern `DDDSU`, 2.5ms
- Bandwidth 100MHz
- Bandwidth 100MHz
-Default MTU is 1500
-MTU 1500 (the above mentioned LITEON version doesn't support jumbo frames)
SSH to the unit as user `user`. Write `enable` in the terminal to enter the configuration console; the password should be in the user guide. Use the command `show oru-status` to check the RU status. The output should be similar to:
#### RU configuration
SSH to the unit as user `user`. Write `enable` in the terminal to enter the configuration console; the password should be in the user guide. Use the command `show oru-status` to check the RU status. The output should be similar to:
```bash
```bash
# show oru-status
# show oru-status
Sync State : SYNCHRONIZED
Sync State : SYNCHRONIZED
RF State : Ready
RF State : Ready
DPD : Ready
DPD : Ready
DuConnected : notReady
```
```
Once the RU is PTP synced, and RF state and DPD are `Ready`, write `configure` in the terminal to set:
Also, you can use `show running-config` to display the current RU configuration.
Once the RU is PTP synced, and RF state and DPD are `Ready`, write `configure terminal` to set:
- Center frequency
- Center frequency
- Bandwidth
- Bandwidth
- Compression Bitwidth
- Compression Bitwidth
- TX/RX attenuation
- TX/RX attenuation
To configure 4TX and 4RX antennas, you have to repeat the below steps after every reboot, so don't restart the RU after entering below commands:
After each reboot, the PRACH has to be manually configured.
To do so, please login to RU as user `root` and run below commands:
```bash
```bash
devmem 0x80001014 32 0x00050004
devmem 0x80001014 32 0x00050004
devmem 0x80001018 32 0x00070006
devmem 0x80001018 32 0x00070006
devmem 0x8000201C 32 0x00000001
devmem 0x8000201C 32 0x00000001
```
```
If you want to set MTU size to 9000 then use the below command:
If you have RU version that supports jumbo frames, please enable it as:
```bash
```bash
devmem 0x8000200C 32 0x00000001
devmem 0x8000200C 32 0x00000001
```
```
### VVDN LPRU
### VVDN LPRU
**Version 3.x**
The OAI configuration file [`gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf) corresponds to:
- TDD pattern `DDDSU`, 2.5ms
- TDD pattern `DDDSU`, 2.5ms
- Bandwidth 100MHz
- Bandwidth 100MHz
- MTU 9216 (this is the maximum we can configure on our switch)
- MTU 9600
- The OAI configuration file [`gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf) corresponds to below RU configuration.
#### RU configuration
Check in the RU user manual how to configure the center frequency. There are multiple ways to do it. We set the center frequency by editing `sysrepocfg` database. You can use `sysrepocfg --edit=vi -d running` to do the same. You can edit the `startup` database to make the center frequency change persistent.
Check in the RU user manual how to configure the center frequency. There are multiple ways to do it. We set the center frequency by editing `sysrepocfg` database. You can use `sysrepocfg --edit=vi -d running` to do the same. You can edit the `startup` database to make the center frequency change persistent.
...
@@ -607,13 +621,37 @@ Execute the below commands on every restart
...
@@ -607,13 +621,37 @@ Execute the below commands on every restart
```bash
```bash
xml_parser 4x4-config.xml
xml_parser 4x4-config.xml
## To enable prach compression
## To enable prach compression
mw.l a0010024 1919
mw.l a0010024 1919# format `<PRACH-comp-method><PRACH-compr-value><PUSCH-comp-method><PUSCH-compr-value>
## This will show the current configuration
## This will show the current configuration
/etc/scripts/lpru_configuration.sh
/etc/scripts/lpru_configuration.sh
## Edit the sysrepo to ACTIVATE the carrier when you want to use the RU
## Edit the sysrepo to ACTIVATE the carrier when you want to use the RU
## option 1 - activation by writing directly in register
The OAI configuration file [`gnb.sa.band78.273prb.fhi72.4x4-metanoia.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-metanoia.conf) corresponds to:
- TDD pattern `DDDSU`, 2.5ms (`DDDDDDDSUU`, 5ms, also supported)
- Bandwidth 100MHz
- 4TX4R
The RU configuration is stored in `/etc/rumanager.conf`. The required modifications:
**Beware in the following section to let in the range of isolated cores the parameters that should be (i.e. `L1s.L1_rx_thread_core`, `L1s.L1_tx_thread_core`, `RUs.ru_thread_core`, `fhi_72.io_core` and `fhi_72.worker_cores`)**
**Beware in the following section to let in the range of isolated cores the parameters that should be (i.e. `L1s.L1_rx_thread_core`, `L1s.L1_tx_thread_core`, `RUs.ru_thread_core`, `fhi_72.io_core` and `fhi_72.worker_cores`)**
Sample configuration files for OAI gNB, specific to the manufacturer of the radio unit, are available at:
Sample configuration files for OAI gNB, specific to the manufacturer of the radio unit, are available at:
1. LITE-ON RU: [`gnb.sa.band78.273prb.fhi72.4x4-liteon.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x4-liteon.conf)(band n78, 273 PRBs, 3.5GHz center freq, 4x4 antenna configuration with 9 bit I/Q samples (compressed) for PUSCH/PDSCH/PRACH, 2-layer DL MIMO, UL SISO)
1. LITEON RU:
2. Benetel 650 RU: [`gnb.sa.band78.273prb.fhi72.4x4-benetel650.conf`](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.273prb.fhi72.4x2-benetel650.conf)(band n78, 273 PRBs, 3.5GHz center freq, 4x2 antenna configuration with 9 bit I/Q samples (compressed) for PUSCH/PDSCH/PRACH, 2-layer DL MIMO, UL SISO)
Edit the sample OAI gNB configuration file and check following parameters:
Edit the sample OAI gNB configuration file and check following parameters:
...
@@ -848,16 +896,15 @@ Edit the sample OAI gNB configuration file and check following parameters:
...
@@ -848,16 +896,15 @@ Edit the sample OAI gNB configuration file and check following parameters:
*`fhi_72` (FrontHaul Interface) section: this config follows the structure
*`fhi_72` (FrontHaul Interface) section: this config follows the structure
that is employed by the xRAN library (`xran_fh_init` and `xran_fh_config`
that is employed by the xRAN library (`xran_fh_init` and `xran_fh_config`
structs in the code):
structs in the code):
*`dpdk_devices`: PCI addresses of NIC VFs binded to the DPDK (not the physical NIC but the VFs, use `lspci | grep Virtual`)
*`dpdk_devices`: PCI addresses of NIC VFs binded to the DPDK (not the physical NIC but the VFs, use `lspci | grep Virtual`) in the format `{VF-U-plane, VF-C-plane}`;
if one VF used per RU, U and C planes will share the same VF => depends on the RU capabilities
*`system_core`: absolute CPU core ID for DPDK control threads, it should be an isolated core, in our environment we are using CPU 0
*`system_core`: absolute CPU core ID for DPDK control threads, it should be an isolated core, in our environment we are using CPU 0
*`io_core`: absolute CPU core ID for XRAN library, it should be an isolated core, in our environment we are using CPU 4
*`io_core`: absolute CPU core ID for XRAN library, it should be an isolated core, in our environment we are using CPU 4
*`worker_cores`: array of absolute CPU core IDs for XRAN library, they should be isolated cores, in our environment we are using CPU 2
*`worker_cores`: array of absolute CPU core IDs for XRAN library, they should be isolated cores, in our environment we are using CPU 2
*`du_addr`: DU C- and U-plane MAC-addresses (format `UU:VV:WW:XX:YY:ZZ`,
*`ru_addr`: RU U- and C-plane MAC-addresses (format `UU:VV:WW:XX:YY:ZZ`, hexadecimal numbers)
hexadecimal numbers)
*`mtu`: Maximum Transmission Unit for the RU, specified by RU vendor; either 1500 or 9600 B (Jumbo Frames); if not set, 1500 is used
*`ru_addr`: RU C- and U-plane MAC-addresses (format `UU:VV:WW:XX:YY:ZZ`,
*`file_prefix` : used to specify a unique prefix for shared memory and files created by multiple DPDK processes; if not set, default value of `wls_0` is used
hexadecimal numbers)
*`mtu`: Maximum Transmission Unit for the RU, specified by RU vendor
*`dpdk_mem_size`: the huge page size that should be pre-allocated by DPDK
*`dpdk_mem_size`: the huge page size that should be pre-allocated by DPDK
_for NUMA node 0_; by default, this is 8192 MiB (corresponding to 8 huge
_for NUMA node 0_; by default, this is 8192 MiB (corresponding to 8 huge
pages à 1024 MiB each, see above). In the current implementation, you
pages à 1024 MiB each, see above). In the current implementation, you
...
@@ -874,17 +921,19 @@ Edit the sample OAI gNB configuration file and check following parameters:
...
@@ -874,17 +921,19 @@ Edit the sample OAI gNB configuration file and check following parameters:
*`iq_width_prach`: Width of PRACH IQ samples: if 16, no compression, if <16, applies
*`iq_width_prach`: Width of PRACH IQ samples: if 16, no compression, if <16, applies
compression
compression
*`prach_config`: PRACH-specific configuration
*`prach_config`: PRACH-specific configuration
*`eAxC_offset`: PRACH antenna offset
*`eAxC_offset`: PRACH antenna offset; if not set, default value of `N = max(Nrx,Ntx)` is used
*`kbar`: the PRACH guard interval, provided in RU
*`kbar`: the PRACH guard interval, provided in RU
Layer mapping (eAxC offsets) happens as follows:
Layer mapping (eAxC offsets) happens as follows:
- For PUSCH/PDSCH, the layers are mapped to `[0,1,...,N-1]` where `N` is the
- For PUSCH/PDSCH, the layers are mapped to `[0,1,...,Nrx-1]/[0,1,...,Ntx-1]` where `Nrx/Ntx` is the
respective RX/TX number of antennas.
respective RX/TX number of antennas.
- For PRACH, the layers are mapped to `[No,No+1,...No+N-1]` where No is the
- For PRACH, the layers are mapped to `[No,No+1,...No+Nrx-1]` where `No` is the
`fhi_72.fh_config.[0].prach_config.eAxC_offset` and `N` the number of receive
`fhi_72.fh_config.[0].prach_config.eAxC_offset`. Please be aware that the following equation must be fullfilled: `No >= max(Nrx,Ntx)`.
antennas.
**Note**
xRAN SRS reception is not supported.
- At the moment, OAI is compatible with CAT A O-RU only. Therefore, SRS is not supported.
- XRAN retreives DU MAC address with `rte_eth_macaddr_get()` function. Hence, `fhi_72.du_addr` parameter is not taken into account.
# Start and Operation of OAI gNB
# Start and Operation of OAI gNB
...
@@ -990,7 +1039,7 @@ Some caveats:
...
@@ -990,7 +1039,7 @@ Some caveats:
For two RUs each using a 4x4 configuration, make sure to configure the 8x8
For two RUs each using a 4x4 configuration, make sure to configure the 8x8
configuration, i.e., set `nb_tx` and `nb_rx` under `RUs` to 8 each (NOT two
configuration, i.e., set `nb_tx` and `nb_rx` under `RUs` to 8 each (NOT two
RUs!). Also, set the antenna port information as listed above, i.e.,
`RUs`!). Also, set the antenna port information as listed above, i.e.,
```
```
pdsch_AntennaPorts_XP = 2;
pdsch_AntennaPorts_XP = 2;
...
@@ -1004,11 +1053,10 @@ Next, configure the `fhi_72` section as indicated below:
...
@@ -1004,11 +1053,10 @@ Next, configure the `fhi_72` section as indicated below: