Amarisoft

Amarisoft gNB and Benetel RAN650 n77u RU integration Guide

This guide describes method of employing Benetel RAN650 RU with Amarisoft Callbox using Open RAN 7.2 interface.

In this guide, we assume that Amarisoft Callbox gNB is initially in its default configuration, while Benetel RAN650 RU’s configuration file is as presented in Appendix A.

Table of Contents

Hardware requirements

Any other Benetel RAN650 outdoor RU and RAN550 indoor RU in any frequency band variant can also be used. Please ensure configuration scripts settings correctly reflect your setup, in particular the frequency channel and RU TX power parameters (RAN650 up to 37dBm, RAN550 up to 24dBm).

The presented example utilizes LSS-C3 architecture, as shown in the figure below.

Obraz 1

In our setup, we have employed a shieldbox environment for UE devices, connecting the Radio Unit to antennas inside it using RF cabling and a 20 dB RF attenuator.

Intended 5G network parameters

The procedure is described assuming the following values of crucial 5G NR network cell parameters:

Amarisoft Callbox operating system and network stack configuration

In preparation for running the Callbox software gNB employing an O-RAN driver to communicate with a Radio Unit (RU) using a 10 Gigabit Ethernet link, we need to ensure correct configuration of a network interface.

First we need to identify the network interface connecting our computer to a fronthaul network device. For that purpose we can use ip link command displaying a list of network interfaces. If an Ethernet interface is configured to be active (UP in <...> section), it will display either LOWER_UP (link is connected and active) or NO-CARRIER (link is not connected), which can be used to identify the correct interface.

In case of Intel E810-C NIC its 4 network interfaces will be displayed as shown below:

7: ens1f1np0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 50:7c:6f:2c:f4:18 brd ff:ff:ff:ff:ff:ff
    altname enp138s0f2np0
    altname enx507c6f2cf418
8: ens1f1np1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 50:7c:6f:2c:f4:19 brd ff:ff:ff:ff:ff:ff
    altname enp138s0f1np1
    altname enx507c6f2cf419
9: ens1f2np2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 50:7c:6f:2c:f4:1a brd ff:ff:ff:ff:ff:ff
    altname enp138s0f2np2
    altname enx507c6f2cf41a
10: ens1f1np3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
    link/ether 50:7c:6f:2c:f4:1b brd ff:ff:ff:ff:ff:ff
    altname enp138s0f2np3
    altname enx507c6f2cf41b

In this case, the active interface is ens1f1np0, as it displays both LOWER_UP and state UP. Please note the MAC address of your own interface, as you will be required to substitute it for the example one in many of subsequent steps.

As this interface will be used to support Synchronization Plane (S-Plane), it requires hardware support of Precision Time Protocol (PTP). To verify this capability, we use ethtool -T ens1f1np0 command.

Time stamping parameters for ens1f1np0:
Capabilities:
        hardware-transmit
        software-transmit
        hardware-receive
        software-receive
        software-system-clock
        hardware-raw-clock
PTP Hardware Clock: 4
Hardware Transmit Timestamp Modes:
        off
        on
Hardware Receive Filter Modes:
        none
        all

To indicate the required PTP support, the result should include hardware-transmit, hardware-receive and hardware-raw-clock capabilities, and PTP Hardware Clock must indicate a specific number (instead of “none”). As can be seen above, our chosen interface supports the necessary functionalities.

Having confirmed suitability of the chosen interface we proceed with its configuration. As a first, optional step, we can change the interface name, to facilitate further configuration. For that purpose we need to create a following file, substituting a MAC address of your interface:

/etc/systemd/network/70-fhaul1.link

[Match]
MACAddress=50:7c:6f:2c:f4:18

[Link]
Name=fhaul1

This will result in the interface matching the supplied MAC (in our case ens1f1np0) to be renamed to fhaul1.

As the default IP address of Benetel RAN650 RU is 10.10.0.100/8, we need to assign an appropriate IP address to fhaul1 interface. To prevent routing disruptions in case our system already contains 10.0.0.0/8 networks reachable by a default route, we will assign a 10.10.0.1 address with a 24 bit mask – it will allow IP connectivity between the gNB computer and RU, without redirecting unwanted traffic to the interface.

In our example, the IP connectivity with RU will only be used for management using SSH protocol. The communication between gNB and RU will be conducted using eCPRI over Layer 2 transport (directly using Ethernet frames).

Due to large amount of data exchanged when using wide radio bandwidth the Maximum Transmission Unit (MTU) of the fhaul1 interface needs to be increased from the default 1500 B to a higher value. We need to take into account, that the s72 communication driver we are going to use supports messages of up to 9000 B, so preferably it should be a value capable of accommodating such messages. However, we should make sure, that such an MTU size is supported by all intermediary network devices between gNB and RU. In our case a FibroLAN uFalcon MX/G switch supports up to 10240 B, so we are going to set the MTU to a maximum value selectable for Intel E810 NIC under Linux OS: 9216 B.

The addressing and MTU changes can be done at runtime using the following commands:

ip address add 10.10.0.1/24 dev fhaul1
ip link set fhaul1 mtu 9216

However, if we want the changes to persist, we need to create an appropriate connection definition for NetworkManager which Fedora 42 uses to manage network configuration. For this purpose we will create a following file, substituting MAC address of your fhaul1 interface in the mac-address field:

/etc/NetworkManger/system-connections/fhaul1.nmconnection

[connection]
id=fhaul1
type=ethernet
interface-name=fhaul1
autoconnect=yes
autoconnect-priority=-999

[ethernet]
mac-address=50:7c:6f:2c:f4:18
mtu=9216

[ipv4]
method=manual
address1=10.10.0.1/24

[ipv6]
method=disabled

After creating the file, the command nmcli connection reload will cause the configuration to be loaded and applied. The same configuration can be achieved using command line tools such as nmcli, without the need to edit configuration files (such approach is employed below, during configuration of a VLAN interface) which are created automatically – we have employed both approaches for illustration purposes.

Having finished network configuration, we can test IP connectivity with RU using ping 10.10.0.100 (default IP address of Benetel RAN650 RU). If the connectivity is confirmed, we can also attempt to login. For help with first login into RU, please contact Benetel Support.

While the SSH communication with RAN650 RU is conducted using untagged Ethernet frames, O-RAN User and Control Plane connectivity between gNB and RU requires use of Ethernet frames tagged with VLAN ID defined in /etc/ru_config.cfg configuration file of RU (parameters: u_plane_du_vlan_uplink, u_plane_du_vlan_downlink, c_plane_du_vlan) – by default all use VLAN ID 3. To satisfy this requirement, we are going to create a VLAN interface using fhaul1 interface as a parent. To make it persistent across reboots, we create a new NetworkManager connection:

nmcli con add type vlan con-name fhaul1.3 dev fhaul1 id 3 ifname fhaul1.3 ipv4.method disabled ipv6.method disabled

Apart from the above configuration of the fronthaul network interface, we must also ensure that the operating system is configured for real-time operation, minimizing and keeping latency of process execution and network access constant. For this purpose, we:

  1. Disable NIC adaptive interrupt moderation to ensure predictable response times of our Intel E810 NIC:
ethtool -C fhaul1 adaptive-tx off
ethtool -C fhaul1 adaptive-rx off
  1. Ensure there is minimal delay in reception of incoming network data:
ethtool -C fhaul1 rx-usecs 0
  1. Allow real-time tasks to operate without OS-induced limits:
sysctl -w kernel.sched_rt_runtime_us=-1

These commands need to be executed after each system restart, so it is advised to include them as a shell script run automatically after system boot. The operation (3) can also be made permanent by creating a file containing appropriate value assignment in /etc/sysctl.d directory:
echo "kernel.sched_rt_runtime_us=-1" > /etc/sysctl.d/99-rt_runtime.conf

Configuration of network device(s)

As we are using a network device for the connection between gNB and RU, we need to configure it to forward both untagged frames and frames tagged with VLAN ID 3 between ports to which these devices are connected. The specifics depend on the exact model of the switch – below we provide configuration screens for FibroLAN uFalcon-MX/G. In the example gNB is connected to port 7 and RU to port 8. Port 6 is used to manage the device.

Obraz 1

Time synchronization (S-Plane) configuration

An O-RAN fronthaul communication requires precise time synchronization, which is the main task for Synchronization Plane (S-Plane). In our example, we are employing a Lower Layer Split Configuration 3 (LLS-C3), in which both RU and gNB (or more precisely Distributed Unit of O-RAN gNB) obtains time synchronization from the fronthaul transport network. In our case the source of synchronization is the FibroLAN uFalcon-MX/G functioning as both Ethernet transport switch and PTP Grandmaster.

PTP Grandmaster (PTP GM) configuration

The FibroLAN device has been configured to obtain time synchronization from GNSS system, as shown below.

Obraz 1

The device is further configured (as can be seen in the figure below):

Furthermore, note that the Dom field (identifying PTP Domain) is set to 24 – this value needs to be consistent in all devices intended to synchronize using this PTP GM.

Obraz 1

Amarisoft Callbox S-Plane configuration

To synchronize the software Amarisoft Callbox gNB to the external PTP time source with precision sufficient for O-RAN fronthaul operation we need to synchronize NIC hardware clock to PTP GM and then synchronize system real-time clock to NIC hardware clock.

The PTP synchronization of NIC hardware clock is provided by linuxptp package. It can easily be installed using Fedora package manager:

dnf install linuxptp

The service is configured by editing /etc/ptp4l.conf file, which should include a configuration similar to the following:

[global]
domainNumber            24
clientOnly              0
time_stamping           hardware
logging_level           6
summary_interval        0

[fhaul1]
network_transport       L2

Please note that the domainNumber is set to 24 (in accordance with PTP GM configuration) and time_stamping field indicates hardware synchronization. Additionally, there is a section with the same name as our fronthaul interface (its presence will enable PTP operation on this interface) providing additional (interface specific) configuration – in this case indicating that PTP synchronization should use Layer 2 transport.

If there is a need to provide additional command line parameters when starting the ptp4l service, they can be provided in /etc/sysconfig/ptp4l file.

Having configured the PTP service, we need to start it and ensure that it will start automatically after reboots: systemctl enable --now ptp4l

As the service is now running, we can use journalctl -fu ptp4l command to monitor its activity. We should observe decreasing values of rms and max fields indicating improving synchronization between NIC and PTP GM. The values should be as small as possible, below 90 ns. Significantly changing or high values indicate problems with synchronization.

Jul 17 20:42:47 oran-gnb systemd[1]: Started ptp4l.service - Precision Time Protocol (PTP) service.
Jul 17 20:42:47 oran-gnb ptp4l[22650]: [19455.779] selected /dev/ptp4 as PTP clock
Jul 17 20:42:47 oran-gnb ptp4l[22650]: [19455.808] port 1 (fhaul1): INITIALIZING to LISTENING on INIT_COMPLETE
Jul 17 20:42:47 oran-gnb ptp4l[22650]: [19455.808] port 0 (/var/run/ptp4l): INITIALIZING to LISTENING on INIT_COMPLETE
Jul 17 20:42:47 oran-gnb ptp4l[22650]: [19455.808] port 0 (/var/run/ptp4lro): INITIALIZING to LISTENING on INIT_COMPLETE
Jul 17 20:42:48 oran-gnb ptp4l[22650]: [19457.371] port 1 (fhaul1): new foreign master 000580.fffe.084918-8
Jul 17 20:42:52 oran-gnb ptp4l[22650]: [19461.365] selected best master clock 000580.fffe.084918
Jul 17 20:42:52 oran-gnb ptp4l[22650]: [19461.365] port 1 (fhaul1): LISTENING to UNCALIBRATED on RS_SLAVE
Jul 17 20:42:54 oran-gnb ptp4l[22650]: [19463.131] port 1 (fhaul1): minimum delay request interval 2^-4
Jul 17 20:42:54 oran-gnb ptp4l[22650]: [19463.329] port 1 (fhaul1): UNCALIBRATED to SLAVE on MASTER_CLOCK_SELECTED
Jul 17 20:42:55 oran-gnb ptp4l[22650]: [19463.999] rms   10 max   18 freq  -1981 +/-  14 delay    14 +/-   0
Jul 17 20:42:56 oran-gnb ptp4l[22650]: [19464.895] rms    8 max   11 freq  -1963 +/-   7 delay    15 +/-   0
Jul 17 20:42:57 oran-gnb ptp4l[22650]: [19465.799] rms    5 max    6 freq  -1956 +/-   1 delay    16 +/-   0
Jul 17 20:42:58 oran-gnb ptp4l[22650]: [19466.695] rms    3 max    5 freq  -1955 +/-   2 delay    15 +/-   0
Jul 17 20:42:59 oran-gnb ptp4l[22650]: [19467.603] rms    2 max    5 freq  -1963 +/-   2 delay    16 +/-   0
Jul 17 20:43:00 oran-gnb ptp4l[22650]: [19468.507] rms    1 max    2 freq  -1960 +/-   2 delay    15 +/-   0
Jul 17 20:43:01 oran-gnb ptp4l[22650]: [19469.407] rms    2 max    4 freq  -1964 +/-   3 delay    16 +/-   1
Jul 17 20:43:01 oran-gnb ptp4l[22650]: [19470.315] rms    1 max    3 freq  -1965 +/-   2 delay    16 +/-   1
Jul 17 20:43:02 oran-gnb ptp4l[22650]: [19471.211] rms    1 max    2 freq  -1964 +/-   1 delay    14 +/-   0
Jul 17 20:43:03 oran-gnb ptp4l[22650]: [19472.108] rms    1 max    2 freq  -1965 +/-   2 delay    16 +/-   1
Jul 17 20:43:04 oran-gnb ptp4l[22650]: [19473.003] rms    2 max    4 freq  -1960 +/-   2 delay    14 +/-   0
Jul 17 20:43:05 oran-gnb ptp4l[22650]: [19473.899] rms    1 max    2 freq  -1959 +/-   2 delay    15 +/-   0
Jul 17 20:43:06 oran-gnb ptp4l[22650]: [19474.795] rms    1 max    2 freq  -1960 +/-   2 delay    14 +/-   0
Jul 17 20:43:07 oran-gnb ptp4l[22650]: [19475.691] rms    2 max    4 freq  -1962 +/-   3 delay    14 +/-   1
Jul 17 20:43:08 oran-gnb ptp4l[22650]: [19476.587] rms    2 max    4 freq  -1964 +/-   2 delay    16 +/-   0
Jul 17 20:43:09 oran-gnb ptp4l[22650]: [19477.491] rms    1 max    2 freq  -1963 +/-   2 delay    15 +/-   1

With the NIC hardware clock synchronized to PTP GM, we need to synchronize gNB system real-time clock to NIC clock. For this purpose, we use a phc2sys service, which is also part of linux-ptp package. Its configuration file /etc/sysconfig/phc2sys should include the following options:

OPTIONS="-a -n 24 -r -m"

They will allow the service to autoconfigure with ptp4l, use PTP domain 24 (as defined in PTP GM and ptp4l service), update the system real-time clock and provide logs for monitoring.

Similarly to ptp4l service – starting the phc2sys service and configuring it to autostart can be done by command: systemctl enable --now phc2sys, after which we can verify results of synchronization by using command: journalctl -fu phc2sys

Jul 17 20:54:03 oran-gnb systemd[1]: Started phc2sys.service - Synchronize system clock or PTP hardware clock (PHC).
Jul 17 20:54:04 oran-gnb phc2sys[1415]: phc2sys[81.128]: Waiting for ptp4l...
Jul 17 20:54:04 oran-gnb phc2sys[1415]: [81.128] Waiting for ptp4l...
Jul 17 20:54:06 oran-gnb phc2sys[1415]: phc2sys[83.129]: reconfiguring after port state change
Jul 17 20:54:06 oran-gnb phc2sys[1415]: phc2sys[83.130]: selecting fhaul1 for synchronization
Jul 17 20:54:06 oran-gnb phc2sys[1415]: [83.129] reconfiguring after port state change
Jul 17 20:54:06 oran-gnb phc2sys[1415]: [83.130] selecting fhaul1 for synchronization
Jul 17 20:54:11 oran-gnb phc2sys[1415]: phc2sys[88.131]: port 507c6f.fffe.2cf418-1 changed state
Jul 17 20:54:11 oran-gnb phc2sys[1415]: phc2sys[88.131]: reconfiguring after port state change
Jul 17 20:54:11 oran-gnb phc2sys[1415]: phc2sys[88.131]: selecting fhaul1 as domain source clock
Jul 17 20:54:11 oran-gnb phc2sys[1415]: phc2sys[88.131]: selecting CLOCK_REALTIME for synchronization
Jul 17 20:54:11 oran-gnb phc2sys[1415]: phc2sys[88.131]: CLOCK_REALTIME phc offset -335568337 s0 freq      -0 delay    687
Jul 17 20:54:11 oran-gnb phc2sys[1415]: [88.131] port 507c6f.fffe.2cf418-1 changed state
Jul 17 20:54:11 oran-gnb phc2sys[1415]: [88.131] reconfiguring after port state change
Jul 17 20:54:11 oran-gnb phc2sys[1415]: [88.131] selecting fhaul1 as domain source clock
Jul 17 20:54:11 oran-gnb phc2sys[1415]: [88.131] selecting CLOCK_REALTIME for synchronization
Jul 17 20:54:11 oran-gnb phc2sys[1415]: [88.131] CLOCK_REALTIME phc offset -335568337 s0 freq      -0 delay    687
Jul 17 20:54:12 oran-gnb phc2sys[1415]: phc2sys[89.131]: CLOCK_REALTIME phc offset -335688095 s1 freq -119727 delay    697
Jul 17 20:54:12 oran-gnb phc2sys[1415]: [89.131] CLOCK_REALTIME phc offset -335688095 s1 freq -119727 delay    697
Jul 17 20:54:13 oran-gnb phc2sys[1415]: phc2sys[90.132]: CLOCK_REALTIME phc offset    122094 s2 freq   +2367 delay    696
Jul 17 20:54:13 oran-gnb phc2sys[1415]: [90.132] CLOCK_REALTIME phc offset    122094 s2 freq   +2367 delay    696
Jul 17 20:54:14 oran-gnb phc2sys[1415]: phc2sys[91.132]: CLOCK_REALTIME phc offset    133900 s2 freq  +50801 delay    696
Jul 17 20:54:14 oran-gnb phc2sys[1415]: [91.132] CLOCK_REALTIME phc offset    133900 s2 freq  +50801 delay    696
Jul 17 20:54:15 oran-gnb phc2sys[1415]: phc2sys[92.132]: CLOCK_REALTIME phc offset     78684 s2 freq  +35755 delay    696
Jul 17 20:54:15 oran-gnb phc2sys[1415]: [92.132] CLOCK_REALTIME phc offset     78684 s2 freq  +35755 delay    696
Jul 17 20:54:16 oran-gnb phc2sys[1415]: phc2sys[93.132]: CLOCK_REALTIME phc offset     28542 s2 freq   +9218 delay    696
Jul 17 20:54:16 oran-gnb phc2sys[1415]: [93.132] CLOCK_REALTIME phc offset     28542 s2 freq   +9218 delay    696
Jul 17 20:54:17 oran-gnb phc2sys[1415]: phc2sys[94.132]: CLOCK_REALTIME phc offset      4119 s2 freq   -6642 delay    696
Jul 17 20:54:17 oran-gnb phc2sys[1415]: [94.132] CLOCK_REALTIME phc offset      4119 s2 freq   -6642 delay    696
Jul 17 20:54:18 oran-gnb phc2sys[1415]: phc2sys[95.133]: CLOCK_REALTIME phc offset     -3019 s2 freq  -12545 delay    697
Jul 17 20:54:18 oran-gnb phc2sys[1415]: [95.133] CLOCK_REALTIME phc offset     -3019 s2 freq  -12545 delay    697
Jul 17 20:54:19 oran-gnb phc2sys[1415]: phc2sys[96.133]: CLOCK_REALTIME phc offset     -3451 s2 freq  -13882 delay    701
Jul 17 20:54:19 oran-gnb phc2sys[1415]: [96.133] CLOCK_REALTIME phc offset     -3451 s2 freq  -13882 delay    701
Jul 17 20:54:20 oran-gnb phc2sys[1415]: phc2sys[97.133]: CLOCK_REALTIME phc offset     -2483 s2 freq  -13950 delay    697
Jul 17 20:54:20 oran-gnb phc2sys[1415]: [97.133] CLOCK_REALTIME phc offset     -2483 s2 freq  -13950 delay    697
Jul 17 20:54:21 oran-gnb phc2sys[1415]: phc2sys[98.133]: CLOCK_REALTIME phc offset     -1561 s2 freq  -13773 delay    702
Jul 17 20:54:21 oran-gnb phc2sys[1415]: [98.133] CLOCK_REALTIME phc offset     -1561 s2 freq  -13773 delay    702
Jul 17 20:54:22 oran-gnb phc2sys[1415]: phc2sys[99.133]: CLOCK_REALTIME phc offset      -885 s2 freq  -13565 delay    705
Jul 17 20:54:22 oran-gnb phc2sys[1415]: [99.133] CLOCK_REALTIME phc offset      -885 s2 freq  -13565 delay    705
Jul 17 20:54:23 oran-gnb phc2sys[1415]: phc2sys[100.134]: CLOCK_REALTIME phc offset      -428 s2 freq  -13373 delay    697
Jul 17 20:54:23 oran-gnb phc2sys[1415]: [100.134] CLOCK_REALTIME phc offset      -428 s2 freq  -13373 delay    697
Jul 17 20:54:24 oran-gnb phc2sys[1415]: phc2sys[101.134]: CLOCK_REALTIME phc offset      -160 s2 freq  -13234 delay    701
Jul 17 20:54:24 oran-gnb phc2sys[1415]: [101.134] CLOCK_REALTIME phc offset      -160 s2 freq  -13234 delay    701
Jul 17 20:54:25 oran-gnb phc2sys[1415]: phc2sys[102.134]: CLOCK_REALTIME phc offset       -13 s2 freq  -13135 delay    605
Jul 17 20:54:25 oran-gnb phc2sys[1415]: [102.134] CLOCK_REALTIME phc offset       -13 s2 freq  -13135 delay    605
Jul 17 20:54:26 oran-gnb phc2sys[1415]: phc2sys[103.134]: CLOCK_REALTIME phc offset        19 s2 freq  -13107 delay    611
Jul 17 20:54:26 oran-gnb phc2sys[1415]: [103.134] CLOCK_REALTIME phc offset        19 s2 freq  -13107 delay    611
Jul 17 20:54:27 oran-gnb phc2sys[1415]: phc2sys[104.134]: CLOCK_REALTIME phc offset         9 s2 freq  -13111 delay    697
Jul 17 20:54:27 oran-gnb phc2sys[1415]: [104.134] CLOCK_REALTIME phc offset         9 s2 freq  -13111 delay    697

As before, we should observe decreasing values of the offset field, which should follow constraints similar to rms/max fields of ptp4l service log. Additionally, there should be “s2” indicator (locked state) present, confirming synchronization between NIC and OS clocks.

As the system real-time clock is now synchronized using ptp4l/phc2sys, disable any Network Time Protocol synchronization services to prevent conflicts – e.g. chronyd service: systemctl disable --now chronyd

Benetel RAN650 RU S-Plane configuration

If the PTP GM is configured as described before, the RU synchronization should happen automatically. The synchronization process should detect the PTP GM and enter SLAVE state.

You can observe synchronization progress using tail -F /var/log/pcm4l command and confirm if RU is in locked sync state (cat /var/syncmon/sync-state returns 0).

RE::SyncAnalysis: 2026-07-17 19:10:00 023014240 ns [3, Tracker#0] (3253) Tracker run mode: 'Converging' to 'Statistics Collecting'     3159.
RE::SyncAnalysis: 2026-07-17 19:10:00 025403560 ns [2, Supervisor] (3066) LO state: 'Lock Acquisition' to 'Frequency Locked'    Event: 'LO frequency locked'.
RE::Debug: 2026-07-17 19:10:00 028294280 ns [2, Supervisor] Enter frequency locked state.
RE::Debug: 2026-07-17 19:10:00 034425520 ns [2, Supervisor] Set warm start DCO valid to true
RE::Debug: 2026-07-17 19:10:00 035351520 ns [2, Supervisor] Tracker#0:
RE::Debug: 2026-07-17 19:10:00 037256260 ns [2, Supervisor]     Master port ID: 00:05:80:ff:fe:08:49:18.7
RE::Debug: 2026-07-17 19:10:00 038309420 ns [2, Supervisor]     Current reference master: Yes
RE::Debug: 2026-07-17 19:10:00 038923200 ns [2, Supervisor]     Freq locked: Yes
RE::Debug: 2026-07-17 19:10:00 040162220 ns [2, Supervisor]     Time locked: No
RE::SyncAnalysis: 2026-07-17 19:10:00 040831980 ns [2, Supervisor] (3066) LO state: 'Frequency Locked' to 'Time Locked'    Event: 'LO time locked'.
RE::Debug: 2026-07-17 19:10:00 044396960 ns [2, Supervisor] Enter time locked state
RE::SyncAnalysis: 2026-07-17 19:10:00 046390780 ns [2, Supervisor] (3563) Holdover Qualification Timeout: 0 seconds.
RE::Debug: 2026-07-17 19:10:00 050363500 ns [2, Supervisor] Tracker#0:
RE::Debug: 2026-07-17 19:10:00 051891100 ns [2, Supervisor]     Master port ID: 00:05:80:ff:fe:08:49:18.7
RE::Debug: 2026-07-17 19:10:00 053951100 ns [2, Supervisor]     Current reference master: Yes
RE::Debug: 2026-07-17 19:10:00 054536280 ns [2, Supervisor]     Freq locked: Yes
RE::Debug: 2026-07-17 19:10:00 057257800 ns [2, Supervisor]     Time locked: Yes
RE::SyncAnalysis: 2026-07-17 19:10:00 057732920 ns [0, Main] (3564) Holdover In-Spec Qualified.
RE::SyncAnalysis: 2026-07-17 19:10:45 363635172 ns [3, Tracker#0] (3240) offset: 0.0 ns    delay: 77.0 ns
RE::SyncAnalysis: 2026-07-17 19:10:49 879657623 ns [3, Tracker#0] (3240) offset: 0.5 ns    delay: 77.5 ns
RE::SyncAnalysis: 2026-07-17 19:10:54 371630758 ns [3, Tracker#0] (3240) offset: 0.5 ns    delay: 76.5 ns
RE::SyncAnalysis: 2026-07-17 19:10:58 863804114 ns [3, Tracker#0] (3240) offset: 0.5 ns    delay: 77.5 ns
RE::SyncAnalysis: 2026-07-17 19:11:03 359711532 ns [3, Tracker#0] (3240) offset: 1.0 ns    delay: 76.0 ns
RE::SyncAnalysis: 2026-07-17 19:11:07 875705505 ns [3, Tracker#0] (3240) offset: 1.0 ns    delay: 77.0 ns
RE::SyncAnalysis: 2026-07-17 19:11:12 371684061 ns [3, Tracker#0] (3240) offset: 1.0 ns    delay: 77.0 ns

root@ran650-n77-986:~# cat /var/syncmon/sync-state
0

Benetel RAN650 Radio Unit configuration

In this example we are going to configure RAN650 RU manually, without using O-RAN Management Plane (M-Plane). To do so, we connect to RU by means of SSH protocol, using its default 10.10.0.100 IP address. For help with first login into RU, please contact Benetel Support.

root@oran-gnb:~# ssh root@10.10.0.100
root@10.10.0.100's password:
Last login: Fri Jul 17 18:56:59 2026 from 10.10.0.1
 ____                  _       _
|  _ \                | |     | |
| |_) | ___ _ __   ___| |_ ___| |
|  _ < / _ \ '_ \ / _ \ __/ _ \ |
| |_) |  __/ | | |  __/ ||  __/ |
|____/ \___|_| |_|\___|\__\___|_|

       OpenRAN Radio Units.
      Opening Possibilities.

Use 'benetel-help' for a list of
useful commands.
root@ran650-n77-986:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 70:b3:d5:e1:5c:a7 brd ff:ff:ff:ff:ff:ff
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop qlen 1000
    link/sit 0.0.0.0 brd 0.0.0.0

Following the successful login, we use ip link command to display network interfaces of the RU and note a MAC address of eth0 (its fronthaul interface), as it will be requited during gNB configuration.

Most of RU configuration parameters required for successfully connecting to an Amarisoft Callbox gNB can be found in /etc/ru_config.cfg file. Changes made in this file require reboot to take effect and are persistent across reboots. To edit the file use vi /etc/ru_config.cfg command.

First we are going to configure parameters required for establishing U/C-Plane eCPRI communication:

MAC addresses of DU (in our case Callbox gNB) interfaces for respectively C-Plane and U-Plane communication. In our example we use the same interface for both, so the address will be the same – the address of fhaul1 interface (e.g. 50:7c:6f:2c:f4:18).

Allow us to define VLAN ID for RU to use for respectively U-Plane Uplink/Downlink and C-Plane communication. With our default configuration utilizing a shared U/C-Plane VLAN, all these parameters are set to 3, which we have already taken into account when configuring OS VLAN interface,

Controls logical content of eCPRI messages, allowing it use timing reference information per slot or per symbol. Should be kept at the default (false) value for compatibility reasons.

Having configured DU-RU communication-related settings, we proceed with configuration of parameters related to specifics of our intended 5G NR cell. As we are (see parameters section) configuring a TDD MIMO 4x4 cell of 100 MHz radio bandwidth, with a center frequency of 3950.40 MHz, we are will use the following parameters of /etc/ru_config.cfg file:

Controls support for various MIMO modes. In our case we set it to 1_2_3_4_4x4 to allow the intended 4x4 mode of operation.

Allows selection between short and long Physical Random Access Channel preamble format. We keep the default short value, as the short format is the preferred choice for both small cells and TDD mode of operation.

Selects the center frequency for the cell to use. Should be provided precisely in Hz. In our case that results in 3950400000 value. To easily obtain a frequency based on an ARFCN value a tool such as https://5g-tools.com/5g-nr-arfcn-calculator/ can be used.

Controls the radio bandwidth used by the cell in Hz. Refer to comment in configuration file to check which values are allowed. In our case we use the default 100000000 (100 MHz).

Two fields that describe the TDD structure of communication within a 5G NR frame, by specifying a sequence of downlink (D), uplink (U) and special/flexible slots (S). Ensure the configuration corresponds to you planned TDD radio cell configuration and the configuration of gNB.

The default configuration of tdd_pattern1: DDDD tdd_pattern_2: DDDSUU (giving priority to downlink transmission) will be used in our case.

Describes the sequence of symbols within special/flexible (S) slots. Downlink (D), uplink (U) and Guard (G) symbols can be specified. Once again, we use the default DDDDDDGGGGUUUU for this parameter.

Controls the output power in dBm. In case of RAN650 n77u the maximum is 35 dBm which can be reduced by as much as 20 dB, resulting in minimum possible setting of 15 dBm. The value must be written with 6 digits after the decimal dot (e.g. 24.000000).

Amarisoft CallBox gNB configuration

Amarisoft Callbox gNB implementation is capable of interfacing with O-RAN RU using S72 driver – it allows the gNB to perform the role of O-RAN CU and DU elements and use 10 Gigabit Ethernet Interface as fronthaul eCPRI connection to RU.

In the following description we assume that an Amarisoft Callbox software containing the S72 driver has been installed in /root directory of an operating system prepared as previously described. The initial configuration is assumed to be default, post-install one.

We are going to base our gNB configuration on the example gnb-sa.cfg included in Callbox installation, so the first step is to copy (or link) this file as a current configuration (by default /root/enb/config/enb.cfg – the example file is in the same directory).

To use the s72 driver instead of the default Software Defined Radio board, we need to edit the new enb.cfg file and replace its rf_driver section as shown below:

rf_driver: {
    name: "s72",
    rf_ports: [{
      transport: "ethernet",
      bind_interface: "fhaul1.3",
      remote_addr: "70:b3:d5:e1:5c:a7",
      max_pdu_size: 9000,

      t1a_min_cp_dl: 419,
      t1a_max_cp_dl: 470,

      t1a_min_cp_ul: 390,
      t1a_max_cp_ul: 405,

      t1a_min_up_dl: 294,
      t1a_max_up_dl: 345,

      ta3_max: 160,
      ta3_min:  152,
    },
    ],
  },

The name field indicates the driver to use (s72), while rf_ports subsection provides the configuration necessary for communication with a specific RU:

Selects the transport protocol to use for communication with RU. Configure transport as ”ethernet” to use Layer 2 eCPRI transport.

The name of the VLAN interface to be used for U/C-Plane communication. In tour example fhaul1.3 VLAN interface has been configured for this role.

The address of the connected RU. As we are using Layer 2 transport, it is a MAC address of its fronthaul interface (eth0, as we noted earlier).

The maximum eCPRI message size in bytes. As our NIC and network devices support a maximum MTU of 9216 B we can use a maximum value supported by the s72 driver here: 9000.

t1a_min_cp_ul, t1a_max_cp_ul
t1a_min_up_dl, t1a_max_up_dl
ta3_max, ta3_min

Timing values describing a profile of an RU, used by a gNB to take into account time required by operations performed by RU – they should be set according to RU specification (specific model and firmware version). The values included in the example are for Benetel RAN650 n77u V2.1.0. Misconfiguration will cause the messages exchanged between gNB and RU to be rejected as arriving too early or too late to be used.

Next, replace rf_ports section with one specific to s72 driver, as shown below:

   rf_ports: [
      {
        s72: {
          rtc_id: 0, 
          ud_comp_hdr: 0x91, /* 0x00 (raw 16 bit) or 0x81 (BF8) 0x91 (BF9)*/
          port_mapping_dl:[0,1,2,3],
          port_mapping_prach:[4,5,6,7],
          port_mapping_ul:[0,1,2,3],
          gen_prb0: true,
        },
        tx_gain_offset: -14, // Set the TX digital gain. The default value is -14 dB
    },
   ],

As we have only one radio device used in our setup, the rf_ports section consists of a single (s72) subsection providing additional configuration necessary for its integration with the gNB:

Identifier of the particular RU. Set to default value of 0.

Selects compression method to use. Only static mode (where both gNB and RU need to be specifically configured to use a particular algorithm) is supported. As described before, for compatibility with RAN650 RU we select value 0x91 indicating BF9 compression.

Describes mapping between RU physical antennas and logical RU port identifiers for downlink (port_mapping_dl), uplink (port_mapping_ul) and PRACH channel (port_mapping_prach).

The array size corresponds to a number of antennas gNB is configured to utilize for the specific communication direction (downlink and uplink). The PRACH array size is the same as the size of uplink array.

Specific values should be taken from the RU documentation and they depend on selected MIMO mode.

Alternatively, in case of RAN650 RU, they can be obtained directly from the RU, after its mimo_mode parameter has been configured and the RU restarted. The information can be found in the /etc/eaxc.xml file: each of array positions corresponds to an “<antenna antenna-id=…>” node, while values for downlink, uplink and PRACH can be found in “<ru-port-id>” elements of “<eaxc-id type=”downlink>”, “<eaxc-id type=”uplink>” and “<eaxc-id type=”prach>” sub-nodes respectively.

The 100 MHz MIMO 4x4 SCS 30 kHz mode of operation allows continuous reservations of up to 273 Physical Resource Blocks (PRBs), while the standard message format has only a single byte (values 0-255) for describing the number of continuously assigned PRBs. To prevent the necessity of using two allocation messages (allocation fragmentation), setting gen_prb0 parameter to true allows gNB to use the value of 0 to indicate an allocation of all 273 PRBs (full grant).

Sets the TX digital gain, which should be set high, but low enough to prevent saturation. Generally it can be left on its default value of -14 for less than 8 TX antennas and -17 dB for 8 or more TX antennas, however its correct setting is expected to be RU model-dependent.

Having the above, driver-related configuration prepared, we can proceed to configure parameters describing a 5G NR cell.

First, set the correct values of the following preprocessor directives, which define variables which can be used in multiple places in the configuration file:

The above definitions are used as a conditions in other preprocessor directives, controlling which blocks of configuration file are actually used or as values directly provided to various configuration parameters.

Regardless of the optional use of the above definitions in our configuration file, below is the list of parameters, which need to be configured for the gNB to operate correctly RAN650 RU.

radio bandwidth in MHz – in our case 100, consistent with the value of bandwidth_hz RU parameter.

number of antennas used for downlink transmission – in this example 4, consistent with mimo_mode of the RU.

number of antennas used for uplink transmission – in this example 4, consistent with mimo_mode of the RU.

this parameter informs the gNB of the power at which RU will transmit the reference signal (SSB block power), used by UEs to estimate path loss and perform power control procedures. Such information must be explicitly provided here when using O-RAN split 7.2 due to relocation of low-level PHY functions to the RU. The value depends on the number of factors (total RU TX power, number independent radio chains, cell radio bandwidth, SCS) and can be calculated using tools such as https://5g-tools.com/5g-nr-ssb-sss-epre-power-calculator/. The calculated value may require finetuning, depending on specifics of the employed propagation environment.

Incorrect selection of the value will lead to incorrect operation of UE power control mechanism results in their erratic behavior or inability to connect (initiated but unfinished RRC session establishment procedures).

In our case, with the configured 24 dBm power, MIMO 4x4 operation, 100 MHz BW and 30 kHz SCS, the calculated value for this parameter is -11.

specifies 5G NR frequency band of the cell. In our case it is n77 band, corresponding with capabilities of a RAN650 RU n77u model.

a center frequency of the cell, in a 5G NR ARFCN format. The ARFCN value converted to frequency in Hz must match exactly the information entered in centre_frequency_hz parameter of RU. In our case we use ARFCN of 663360, corresponding to a frequency of 3950.40 MHz.

The values of frequency, band and ARFCN can be calculated using a number of tools, for example https://5g-tools.com/5g-nr-arfcn-calculator/

frequency width of subcarriers – an important parameter impacting both frequency-domain and time-domain frame structure, as well as transmission characteristics of a network cell. We use a 30 kHz value – a popular choice for n77 frequency band.

Ensure values provided here correspond to these configured in tdd_pattern_1 and tdd_pattern_2 parameters of your RU (as defined in its /etc/ru_config.cfg file):

The default RAN650 RU configuration described before (pattern1: DDDD, pattern2: DDDSUU, special_slot_symbols: DDDDDDGGGGUUUU) corresponds to dl_slots: 7, dl_symbols: 6, ul_symbols: 4, ul_slots: 2. Period of 5 ms is recommended.

an identifier describing a set of PRACH parameters – consult the documentation of the RU and use a value compatible with your TDD pattern/periodicity defined in tdd_ul_dl_config section (RACH opportunity assignment must correspond with an uplink slot) and with a short PRACH preamble of type B4. In our case a value of 159 fulfills these requirements.

Startup and verification of operation

With the above configuration prepared, the gNB and other Callbox elements (5G Core, IMS, etc.) can be started by starting an lte service: systemctl start lte

As the lte service executes Callbox elements (including gNB) in virtual terminals created by the screen command, when the service is running (which can be verified using systemctl status lte command), we can use screen -x lte to access their interactive prompts.

The environment invoked by using screen command displays a numbered list of virtual terminals at the bottom of the screen. The currently displayed terminal can be selected by using Ctlr+A,1 (press Ctrl+A followed by pressing 1). The Ctrl+A,D sequence will allow us to leave screen environment.

To verify gNB operation we need to select terminal named ENB (most often it is a terminal number 1). If the gNB started successfully, information about radio band/frequency and number of RX/TX antennas used by our cell will be displayed. In case of any formal configuration errors, appropriate messages will also be displayed here.

RF0: sample_rate=122.880 MHz dl_freq=3950.400 MHz ul_freq=3950.400 MHz (band n77) dl_ant=4 ul_ant=4
(enb)
(enb) log file.rotate=300M,file.path=/var/log/lte/,file.rotate=#2M

The ENB terminal provides us with interactive prompt (enb) of the gNB process, which we can use to request additional information about the 5G NR cell by issuing command: cell and cell phy.

(enb) cell
[gnb0012345] PLMN=00101 gNB_ID=0x12345
Cell    RAT BAND      TAC dl_arfcn  pci prach_seq dl_gain ul_dis plmn
0x001    NR  n77 0x000064   663360  500         1     0.0      N 00101

(enb) cell phy
[gnb0012345] PLMN=00101 gNB_ID=0x12345
--------Global-------- -----------DL-------------- -----------UL---------- -----SSB---
Cell    RAT BAND  BW P   ARFCN ANT NL SCS  QAM POW   ARCFN ANT NL SCS  QAM   ARFCN SCS
0x001    NR  n77 100 0  663360   4  4  30  256 -10  663360   4  4  30  256  660672  30

The above results confirm our configuration: a 5G NR (RAT) cell, in n77 band (BAND), 100 MHz bandwidth (BW) at 663360 ARFCN with 30 kHz Subcarrier Spacing (SCS), using 4 antennas in uplink and downlink (ANT). There is also information about network (PLMN) and gNB (gNB_ID) identifier, as well as information about ARFCN (calculated by gNB) on which System Synchronization Block, crucial in network detection/ue registration process, is transmitted (SSB ARFCN).

Overall configuration and statistics of radio driver operation, can be displayed using rf_info command. As we are using s72 driver, it should display its configuration we provided in enb.cfg file (e.g. fronhaul interface/address and configured RU timing profile), as well as statistics of eCPRI traffic exchanged between gNB and RU over the fronthaul network.

(enb) rf_info
TRX API version 15
 Chan Port Gain(dB)   Freq(MHz)
  TX0    0      0.0 3950.400000
  TX1    0      0.0 3950.400000
  TX2    0      0.0 3950.400000
  TX3    0      0.0 3950.400000
  RX0    0      0.0 3950.400000
  RX1    0      0.0 3950.400000
  RX2    0      0.0 3950.400000
  RX3    0      0.0 3950.400000
Sample format: tx=CF32 rx=CF32
TRX split 7.2 example version 2026-06-12
Clock factor:   1
Epoch:          1784501582s
TAI offset:     37s
Apha offset:    0
Beta offset:    0
RF port #0
  PDU max size: 9000
  Ethernet mode
    Interface:  fhaul1.3
    Destination 70:b3:d5:e1:5c:a7
  RX FIFO:
    Bitrate:  1.586gbps
    Packets:  30.400kpps
    Size:     9088
    Count:    461 (11%)
  TX FIFO: UP
      Bitrate:  5.108gbps
      Packets:  83.198kpps
      Size:     9088
      Count:    923 (35%)
      T1A max:  345us
      T1A min:  294us
  TX FIFO: CP-DL
      Bitrate:  2mbps
      Packets:  6.400kpps
      Size:     9088
      Count:    115 (17%)
      T1A max:  470us
      T1A min:  419us
  TX FIFO: CP-UL
      Bitrate:  877kbps
      Packets:  2.800kpps
      Size:     9088
      Count:    115 (6%)
      T1A max:  405us
      T1A min:  390us
  Local SOF:    931.0.1
  Ta3 max:      160us
  Ta3 min:      152us
  Numa node:    0

Crucial information regarding the correctness of eCPRI communication between gNB and RU can be obtained using command t s72.

(enb) t s72
Press [return] to stop the trace
     --User------------------------------------------------- - Slots - ----
Cell  total  type1 type3 error   inv  miss  late early  lost skip past  err
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0
   1  60800  51200  9600     0     0     0     0     0     0    0    0    0

The command displays a trace showing the total number of received, valid eCPRI messages (total) also divided into eCPRI type1 and eCPRI type3 messages. These values should remain constant, barring reconfiguration of the system or errors in communication. Such errors can be caused by a number of conditions and are counted in remaining columns:

Even a relatively small number of errors in fronthaul communication will result in degradation of communication performance , while a high, persistent error count clearly indicates a critical error in configuration (e.g. consistent number of MIMO layers between gNB and RU), loss of time synchronization or processing performance issues. These problems can be located at gNB, RU or fronthaul network devices.

Similar information can also be obtained for RU. After connecting to RU using SSH and logging in, a kpi.sh command will display a trace of RU fronthaul timing statistics (similar to the trace provided by t s72 command of a gNB).

root@ran650-n77-986:~# kpi.sh
 SAMPLE_TIME     | RX_TOTAL | RX_ON_TIME | RX_EARLY | RX_LATE  | RX_ON_TIME_C | RX_EARLY_C | RX_LATE_C | TX_TOTAL | RX_CORRUPT
 22:54:29.133939 | 92396    | 83197      | 0        | 0        | 9199         | 0          | 0         | 30402    | 0
 22:54:30.134020 | 92392    | 83193      | 0        | 0        | 9199         | 0          | 0         | 30409    | 0
 22:54:31.134084 | 92394    | 83194      | 0        | 0        | 9199         | 0          | 0         | 30398    | 0
 22:54:32.134156 | 92393    | 83194      | 0        | 0        | 9203         | 0          | 0         | 30409    | 0
 22:54:33.134225 | 92393    | 83194      | 0        | 0        | 9199         | 0          | 0         | 30406    | 0
 22:54:34.134318 | 92395    | 83192      | 0        | 0        | 9199         | 0          | 0         | 30408    | 0
 22:54:35.134373 | 92394    | 83195      | 0        | 0        | 9203         | 0          | 0         | 30406    | 0
 22:54:36.134458 | 92392    | 83193      | 0        | 0        | 9199         | 0          | 0         | 30400    | 0
 22:54:37.134495 | 92404    | 83196      | 0        | 0        | 9199         | 0          | 0         | 30403    | 0
 22:54:38.134556 | 92404    | 83202      | 0        | 0        | 9199         | 0          | 0         | 30406    | 0

The trace shows a total number of received (RX_TOTAL) and transmitted (TX_TOTAL) eCPRI messages, including both valid and invalid ones. RX_ON_TIME and RX_ON_TIME_C columns show number of respectively user and control plane messages received within expected time window. Messages which arrived outside the expected time window are counted in RX_EARLY and RX_LATE columns for user plane and RX_EARLY_C and RX_LATE_C columns for control plane messages. RX_CORRUPT column shows number of received messages which do not follow configured compression settings.

As in case of gNB eCPRI trace, incidental errors can occur, but consistent increase of error counters indicates either configuration or performance issue which needs to be corrected.

If remaining elements of the Callbox system, such as the network core with its UE database, are configured, Commercial-of-the-Shelf (COTS) UEs should be able to connect using our described gNB-RU configuration. A number of such devices have been verified to operate correctly – starting from phones/tablets, through network devices such as routers and ending with 5G modems intended for embedded use: Samsung Galaxy S23+, Samsung Galaxy Tab S8 Ultimate 5G, Google Pixel 7, CrossCall Core-Z5, OnePlus 11, Milesight UF31-554AE, CPX801, Advantech ICR-4400, Mikrotik RB953GS + RM502Q-AE module, Raspberry Pi + SIM8262E module, and Amarisoft Simbox UE emulator. Such a range of UE types and models allow us to confirm the compatibility of the system with general COTS UE devices.

Of course, the performance of various UEs will likely be different, depending on their capabilities, such as support for higher-order modulations (e.g. 1024-QAM) or uplink MIMO. Below is an example UE trace (gNB command prompt, t command) for Samsing Galaxy S23+ phone (support up to 256-QAM and no uplink MIMO support), showing simultaneous uplink/downlink transmission exceeding, respectively 100 Mbps and 1.1 Gbps.

(enb) t
Press [return] to stop the trace
PRACH: cell=01 seq=7 ta=0 snr=15.0 dB
               ----DL----------------------- ----UL----------------------------------------------------
UE_ID  CL RNTI C cqi ri  mcs retx txok brate C  snr puc1  nl  mcs retx rxok brate     #its phr  pl   ta
    6 001 4606 1  15  2 19.0    2   18 18.5k 1 24.8    - 1.0 26.7    0   65 51.7k  1/2.1/4  34  -9  0.1
    6 001 4606 1  15  2 26.8    2   67  183k 1 28.4    - 1.0 27.0    2  116  122k  1/2.2/5  32  -9  0.0
    6 001 4606 1  14  2 25.5    1    4 4.11k 1 29.9    - 1.0 27.0    0   98 56.8k  2/2.0/3  32 -10  0.0
    6 001 4606 1  13  4 23.7   84  857  250M 1 24.7    - 1.0 25.3   58  311 33.1M  1/2.3/5  11 -10  0.0
    6 001 4606 1  13  4 23.2  247 2774 1.10G 1 24.8    - 1.0 24.3   68  732 99.7M  1/2.2/5  11 -11  0.1
    6 001 4606 1  13  4 23.5  261 2821 1.15G 1 24.5    - 1.0 24.3   65  735  100M  1/2.2/5  11 -11  0.1
    6 001 4606 1  13  4 22.8  259 2732 1.05G 1 24.5    - 1.0 24.4   67  733  100M  1/2.2/5  11 -10  0.1
    6 001 4606 1  13  4 22.9  256 2761 1.08G 1 24.9    - 1.0 24.5   65  735  101M  1/2.2/5  11 -10  0.1
    6 001 4606 1  13  4 22.8  234 2584  949M 1 24.5    - 1.0 24.6   67  733  101M  1/2.2/5  11 -10  0.1
    6 001 4606 1  15  2 23.8   16  224 68.2M 1 29.7    - 1.0 25.3   10  168 11.0M  1/2.1/5  32 -11  0.1

This trace shows a number of important information regarding UE connection with the 5G NR cell, such as: its identifier (UE_ID), reported downlink channel quality indicator (cqi) and modulation/coding scheme used (mcs), number of MIMO streams used (rank indicator, ri), as well as number of retransmissions (retx) and correctly transmitted blocks (txok). For uplink, there is modulation/coding scheme information (mcs), UE signal to noise ratio (snr) and retx/txok counters. For both uplink and downlink there are also bitrate field showing current throughput.

LLS-C1 Architecture Setup

In this architecture, the RU is directly connected to the Callbox's E810 NIC by a fiber link and the Callbox acts as the PTP Boundary Clock, providing clock and synchronization information to the RU. The Callbox itself is PTP synchronized to an external time source – for example the Fibrolan µFalcon-MX/G, acting as PTP Gandmaster for the setup.

The simplest form of LLS-C1 architecture, where the Callbox uses its Realtime Clock as a time source and acts as PTP Grandmaster itself is strongly discouraged – in most cases such a setup will not allow the RU to obtain a synchronization lock.

Obraz 1

This scenario requires configuration of PTP on the Callbox machine to be extended to include an additional network interface (named clock in the example below), but otherwise employs the same configuration as previously described LLS-C3 test setup.

[global]
domainNumber 24
clientOnly 0
time_stamping hardware
logging_level 6
summary_interval 0
 
[fhaul1]
network_transport L2

[clock]
network_transport L2

Appendix A: Benetel RAN650 n77u configuration file – ru_config.cfg

# Config file for Benetel RANx50 radio units
# Please place this file in /etc
# Please make sure that parameter values are modified after the = sign without any other format changes

# MIMO mode - the radio can operate in 1_3, 2_4, 1_2_3_4_4x2 or 1_2_3_4_4x4 mode
# For uncompressed mode use only 2x2 configuration (1_2 or 2_4)
# Variable name : mimo_mode
# Valid options : 1_3
#                 2_4
#                 1_2_3_4_4x2
#                 1_2_3_4_4x4
mimo_mode=1_2_3_4_4x4

# Downlink scaling in steps of 6 dB (0, 6, 12 and 18 can be set)
# Variable name : downlink_scaling
# Valid options : 0
#                 6
#                 12
#                 18
downlink_scaling=0

# Uplink scaling in steps of 6 dB (0, 6, 12 and 18 can be set)
# Variable name : downlink_scaling
# Valid options : 0
#                 6
#                 12
#                 18
ul_gain_correction=18

# PRACH format
# Variable name : prach_format
# Valid options : short
#                 long
prach_format=short

# PRACH frequncy offset dynamic (C-plane Type 3 freqOffset field) / static (using ru_config.cfg file)
# Dynamic LF PRACH is currently not supported
# Static SF PRACH is curently not supported
# Variable name : prach_freq_offset_dynamic
# Valid options : true
#                 false
prach_freq_offset_dynamic=true

# PRACH frequncy offset (in steps of one half the subcarrier spacings delta_f_Hz) for static configuration
# Currently supported for static LF PRACH configuration only.
# Variable name : prach_freq_offset
# Valid options : +-2*freq_offset_Hz/delta_f_Hz
prach_freq_offset=0

# O-RU Compression settings (note uncompressed mode is not supported when RU is in 4x2 or 4x4 mode)
# Variable name : compression
# Valid options : static_uncompressed
#                 dynamic_uncompressed
#                 static_compressed
#                 dynamic_compressed
compression=static_compressed

# Prach msg1 frequency start. Static (using ru_config.cfg file)
# Currently supported only for LF PRACH static configuration only.
# SF prach msg1FreqStart will read from C-Plane sectionType3 message
# Variable name : prach_msg1_freq_start
# Valid options : 0
#                 max = 270 (depending on PRACH format and bandwidth)
prach_msg1_freq_start=0

# Long form PRACH compression settings
# Variable name : lf_prach_compression_enable
# Valid options : true
#                 false
lf_prach_compression_enable=false #true

# C-Plane per-symbol workaround
# Variable name : cplane_per_symbol_workaround
# Valid options : enabled
#                 disabled
cplane_per_symbol_workaround=disabled

# CUPLANE dl couplling sectionID
# Variable name : cuplane_dl_coupling_sectionI
# Valid options : enabled
#                 disabled
cuplane_dl_coupling_sectionID=disabled

# # FlexRAN PRACH workaround (uncompressed PRACH w/ udCompHdr)
# Variable name : flexran_prach_workaround
# Valid options : enabled
#                 disabled
flexran_prach_workaround=disabled

# DPD reset timer
# Variable name : dpd_reset_timer
# Valid options : Time between DPD resets in seconds, eg. 43200 for 12 hours
dpd_reset_timer=43200

# C-Plane DU MAC address
# Variable name : c_plane_du_mac
# Valid options : A valid MAC address separated by semicolons eg. 00:11:22:33:44:67
c_plane_du_mac=50:7c:6f:2c:f4:18

# U-Plane DU MAC address
# Variable name : u_plane_du_mac
# Valid options : A valid MAC address separated by semicolons eg. 00:11:22:33:44:66
u_plane_du_mac=50:7c:6f:2c:f4:18 

# DU VLAN tag control information for uplink U-Plane traffic
# Variable name : u_plane_du_vlan_uplink
# Valid options : Hex number from 1 to fff
u_plane_du_vlan_uplink=3

# DU VLAN tag control information for downlink U-Plane traffic
# Variable name : u_plane_du_vlan_downlink
# Valid options : Hex number from 1 to fff
u_plane_du_vlan_downlink=3

# DU VLAN tag control information for C-Plane traffic
# Variable name : c_plane_du_vlan
# Valid options : Hex number from 1 to fff
c_plane_du_vlan=3

# TDD switching
# Variable name : tdd_switching
# Valid options : Contact Benetel support if changes needed
tdd_switching=1500

# RU bandwidth in Hz
# Variable name : bandwidth_hz
# Valid options : 10000000
#                 20000000
#                 40000000
#                 50000000
#                 60000000
#                 80000000
#                 90000000
#                 100000000
bandwidth_hz=100000000

# RU centre frequency in Hz
# Variable name : centre_frequency_hz
# Valid options : check frequency range in /tmp/logs/ru_information
centre_frequency_hz=3950400000

# RU Tx power in dBm
# Variable name : tx_power_dbm
# Valid options : check max output power in /tmp/logs/ru_information or User Guide. 
#                 Range varies between (max output power -20) and max output power
tx_power_dbm=24.000000

# Configuration of TDD pattern
# Variable name : tdd_pattern_1
#                 tdd_pattern_2
# Valid options : Maximum ten slots total, only characters D, S & U, all uppercase, must begin with Downlink slot and contain one or no Special slot.
# Please refer to User Guide for configurations of the required TDD pattern.
tdd_pattern_1=DDDD
tdd_pattern_2=DDDSUU

# Configuration of TDD special slots for TDD patterns (tdd_pattern_1, tdd_pattern_2)
# Variable name : special_slots_symbols
#                 special_slots_symbols1
#                 special_slots_symbols2
# Valid options : 14 symbols must be specified, only characters D (Downlink), G (Guard) and
#                   U (Uplink), all uppercase, must begin with Downlink.
#
#                 special_slots_symbols is a common configuration for both special slots
#                   located in tdd_pattern_1 or tdd_pattern_2.
#
#                 special_slots_symbols_1 corresponds to special slot in tdd_pattern_1.
#                 special_slots_symbols_2 corresponds to special slot in tdd_pattern_2.
#                 special_slots_symbols[1/2] parameters overwrite common configuration 
#                  specified by special_slots_symbols.
#                 Please refer to User Guide for configurations of the required special slot pattern.
special_slots_symbols=DDDDDDGGGGUUUU
# Configure below only when two special slots need to be configured using different symbol patterns
special_slots_symbols1=
special_slots_symbols2=

# LF PRACH SlotID_Flag
# Variable name : lf_prach_slot_id
# Valid options : 0 (LF Prach U-Plane packet Slot Id 0)
#                 1 (LF Prach U-Plane packet Slot Id 1)
lf_prach_slot_id=0

# DL_special slot tunning (Internal use)
# Variable name : dl_tuning_special_slot
# Valid range   : 0x0:0x13bc
dl_tuning_special_slot=0x13b6

# Configuration of FH C-plane timing reference point defined by ORAN specification
# Variable name : cplane_per_symbol_timing
# Valid options : false - C-plane per slot timing
#                        (C-plane timing reference point is a slot boundary where corresponding U-plane packets are transmitted)
#                 true - C-plane per symbol timing
#                        (C-plane timing reference point is the first corresponding U-plane symbol boundary)
#                 If not specified, default is false.
cplane_per_symbol_timing=false

# Fix for issues related to non-ideal timing in certain network/synchronization deployment scenarios (eg. C4)
# Variable name : non_ideal_c4_timing_enable
# Valid options : true
#                 false
non_ideal_c4_timing_enable=false

# Configure M-Plane array carriers activation behavior to align with v16.01 specification
# Variable name : m_plane_u_plane_config_v16
# Valid options : true
#                 false
m_plane_u_plane_config_v16=false

# Synchronous ethernet (syncE) enable
# Variable name : synce_enable
# Valid options : true
#                 false
#                 If not specified, default is false.
synce_enable=false