diff --git a/doc/ORAN_FHI7.2_Tutorial.md b/doc/ORAN_FHI7.2_Tutorial.md index 1d7169f29f..5f95921a64 100644 --- a/doc/ORAN_FHI7.2_Tutorial.md +++ b/doc/ORAN_FHI7.2_Tutorial.md @@ -1243,8 +1243,8 @@ In OAI gNB, we support: ``` The reference specifications: -* `O-RAN.WG4.MP.0-v05.00` -* `O-RAN.WG4.MP-YANGs-v04.00` +* `O-RAN.WG4.MP.0-R004-v16.01` +* `O-RAN.WG4.MP-YANGs-R004-v16.01` ## M-plane prerequisites Before proceeding, please make sure you have a support for 7.2 interface, as described in [Prerequisites](#prerequisites). @@ -1366,7 +1366,7 @@ sudo ldconfig If you would like to install these libraries in the custom path, please replace `/usr/local` default path to e.g. `/opt/mplane-v2`. ## Benetel O-RU -Note: Only v1.2.2 RAN550 and RAN650 have been successfully tested. +Note: RAN550/650 v1.2.2 and v1.4.1 have been successfully tested. ### One time steps Connect to the RU as user `root`, enable the mplane service, and reboot: @@ -1400,6 +1400,8 @@ The reference DU configuration file for two Benetel RAN650: [gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650-mplane.conf](../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-du.sa.band77.273prb.fhi72.8x8-benetel650_650-mplane.conf) In order to run gNB/DU with M-plane, we need to modify Tx gain `att_tx` in RU section, as well as the `fhi_72` section in the configuration file. + +**Important note: Benetel v1.4.1 requires only one VF if the same VLAN tag is used for both C-/U-planes. Otherwise, C-plane will not be properly configured. Benetel v1.2.2 will receive the C-plane packets no matter the DU MAC address value.** Example for one RU: ```bash fhi_72 = { @@ -1573,14 +1575,14 @@ sequenceDiagram
-4x4 MIMO and 100MHz BW with Benetel 550 RU example run +4x4 MIMO and 100MHz BW with Benetel 550 RU v1.2.2 example run ``` [HW] [MPLANE] RPC request to RU "192.168.80.9" = with username "oranbenetel" and port ID "830". [HW] [MPLANE] Successfuly connected to RU "192.168.80.9" with username "oranbenetel" and port ID "830". [HW] [MPLANE] RPC request to RU "192.168.80.9" = operational datastore. [HW] [MPLANE] Successfully retrieved operational datastore from RU "192.168.80.9". -[HW] [MPLANE] RU is already PTP synchronized. +[HW] [MPLANE] RU is in "LOCKED" sync state. [HW] [MPLANE] RPC request to RU "192.168.80.9" = with stream "NETCONF" and filter "(null)". [HW] [MPLANE] RPC reply = OK. [HW] [MPLANE] Successfully subscribed to all notifications from RU "192.168.80.9". @@ -2223,6 +2225,861 @@ sequenceDiagram ```
+
+4x4 MIMO and 100MHz BW with Benetel 550 RU v1.4.1 example run + +``` +[HW] [MPLANE] RPC request to RU "192.168.81.4" = with username "oranbenetel" and port ID "830". +[HW] [MPLANE] Successfuly connected to RU "192.168.81.4" with username "oranbenetel" and port ID "830". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = operational datastore. +[HW] [MPLANE] Successfully retrieved operational datastore from RU "192.168.81.4". +[HW] [MPLANE] RU is already PTP synchronized. +[HW] [MPLANE] RPC request to RU "192.168.81.4" = with stream "NETCONF" and filter "(null)". +[HW] [MPLANE] RPC reply = OK. +[HW] [MPLANE] Successfully subscribed to all notifications from RU "192.168.81.4". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = " +65535 +65535 +". +[HW] [MPLANE] Successfully updated supervision timer to (65535+65535)[s] for RU "192.168.81.4". +[HW] [MPLANE] Watchdog timer answer: + 2025-08-29T06:49:32+02:00 + +[HW] [MPLANE] Interface MTU 1500 unreliable/not correctly reported by Benetel O-RU, hardcoding to 9600. +[HW] [MPLANE] IQ bitwidth 16 unreliable/not correctly reported by Benetel O-RU, hardcoding to 9. +[HW] [MPLANE] Storing the following information to forward to xran: + RU MAC address 70:b3:d5:e1:5b:81 + MTU 9600 + IQ bitwidth 9 + PRACH offset 4 + DU port bitmask 61440 + Band sector bitmask 3840 + CC ID bitmask 240 + RU port ID bitmask 15 + DU port ID 0 + Band sector ID 0 + CC ID 0 + RU port ID 0 + max Tx gain 24.0 +[HW] [MPLANE] Successfully retrieved all the U-plane info - interface name, TX/RX carrier names, and TX/RX endpoint names. +[HW] [MPLANE] Successfully retreived all performance measurement names. +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-yang-metadata". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "yang". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-inet-types". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-yang-types". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-yang-schema-mount". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-yang-structure-ext". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-datastores". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "sysrepo". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-netconf-acm". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-factory-default". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "sysrepo-factory-default". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-yang-library". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "sysrepo-monitoring". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "sysrepo-plugind". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-netconf". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-netconf-with-defaults". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-netconf-notifications". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-origin". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-netconf-monitoring". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "ietf-netconf-nmda". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = for module "nc-notifications". +[HW] [MPLANE] [LIBYANG] ERROR: Data model "notifications" not found in local searchdirs. (path: (null)). +[HW] [MPLANE] [LIBYANG] ERROR: Loading "notifications" module failed. (path: (null)). +[HW] [MPLANE] [LIBYANG] ERROR: Parsing module "nc-notifications" failed. (path: (null)). +[HW] [MPLANE] Unable to load module "nc-notifications" from RU "192.168.81.4". +[HW] [MPLANE] Unable to load all yang modules from operational datastore for RU "192.168.81.4". Using yang models present in "models" subfolder. +[HW] [MPLANE] Successfully loaded all yang modules for RU "192.168.81.4". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = : + + + INTERFACE_0 + ianaift:l2vlan + true + 70:b3:d5:e1:5b:81 + eth0 + 3 + + + + 10 + 10 + 10 + + RX_ON_TIME + false + RU + COUNT + + + RX_EARLY + false + RU + COUNT + + + RX_LATE + false + RU + COUNT + + + RX_TOTAL + false + RU + COUNT + + + RX_ON_TIME_C + false + RU + COUNT + + + RX_EARLY_C + false + RU + COUNT + + + RX_LATE_C + false + RU + COUNT + + + TX_TOTAL + false + RU + COUNT + + + + ETH-INTERFACE + + PLANE_0 + + INTERFACE_0 + + 70:b3:d5:e1:5b:81 + 3 + 00:11:22:33:44:66 + + + + + + + PdschLink0 + PLANE_0 + TxArray0 + LowLevelTxEndpoint0 + + + PdschLink1 + PLANE_0 + TxArray1 + LowLevelTxEndpoint1 + + + PdschLink2 + PLANE_0 + TxArray2 + LowLevelTxEndpoint2 + + + PdschLink3 + PLANE_0 + TxArray3 + LowLevelTxEndpoint3 + + + PuschLink0 + PLANE_0 + RxArray0 + LowLevelRxEndpoint0 + + + PrachLink0 + PLANE_0 + RxArray0 + LowLevelRxPrachEndpoint0 + + + PuschLink1 + PLANE_0 + RxArray1 + LowLevelRxEndpoint1 + + + PrachLink1 + PLANE_0 + RxArray1 + LowLevelRxPrachEndpoint1 + + + PuschLink2 + PLANE_0 + RxArray2 + LowLevelRxEndpoint2 + + + PrachLink2 + PLANE_0 + RxArray2 + LowLevelRxPrachEndpoint2 + + + PuschLink3 + PLANE_0 + RxArray3 + LowLevelRxEndpoint3 + + + PrachLink3 + PLANE_0 + RxArray3 + LowLevelRxPrachEndpoint3 + + + LowLevelTxEndpoint0 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + 61440 + 3840 + 240 + 15 + 0 + + + + LowLevelTxEndpoint1 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + 61440 + 3840 + 240 + 15 + 1 + + + + LowLevelTxEndpoint2 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + 61440 + 3840 + 240 + 15 + 2 + + + + LowLevelTxEndpoint3 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + 61440 + 3840 + 240 + 15 + 3 + + + + LowLevelRxEndpoint0 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 0 + + true + + + LowLevelRxPrachEndpoint0 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 4 + + true + + + LowLevelRxEndpoint1 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 1 + + true + + + LowLevelRxPrachEndpoint1 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 5 + + true + + + LowLevelRxEndpoint2 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 2 + + true + + + LowLevelRxPrachEndpoint2 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 6 + + true + + + LowLevelRxEndpoint3 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 3 + + true + + + LowLevelRxPrachEndpoint3 + + 9 + STATIC + + 193 + NORMAL + 352 + 288 + 0 + + KHZ_30 + 0 + + + 61440 + 3840 + 240 + 15 + 7 + + true + + + TxArray0 + 623334 + 3350010000 + 100000000 + ACTIVE + 24.0 + 0 + 0 + + + TxArray1 + 623334 + 3350010000 + 100000000 + ACTIVE + 24.0 + 0 + 0 + + + TxArray2 + 623334 + 3350010000 + 100000000 + ACTIVE + 24.0 + 0 + 0 + + + TxArray3 + 623334 + 3350010000 + 100000000 + ACTIVE + 24.0 + 0 + 0 + + + RxArray0 + 623334 + 3350010000 + 100000000 + ACTIVE + 0 + 0 + 0.0 + 0 + + + RxArray1 + 623334 + 3350010000 + 100000000 + ACTIVE + 0 + 0 + 0.0 + 0 + + + RxArray2 + 623334 + 3350010000 + 100000000 + ACTIVE + 0 + 0 + 0.0 + 0 + + + RxArray3 + 623334 + 3350010000 + 100000000 + ACTIVE + 0 + 0 + 0.0 + 0 + + + +[HW] [MPLANE] RPC reply = OK. +[HW] [MPLANE] Successfully edited the candidate datastore for RU "192.168.81.4". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = candidate datastore. +[HW] [MPLANE] RPC reply = OK. +[HW] [MPLANE] Successfully validated candidate datastore for RU "192.168.81.4". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = candidate datastore. +[HW] [MPLANE] RPC reply = OK. +[HW] [MPLANE] Successfully commited configuration into running datastore for RU "192.168.81.4". +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.335228846+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray0", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.368360865+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray1", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.414703766+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray2", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.452921618+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray3", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.471419021+00:00) +{ + "ietf-netconf-notifications:netconf-config-change": { + "changed-by": { + "username": "root", + "session-id": 0 + }, + "datastore": "running", + "edit": [ + { + "target": "/ietf-interfaces:interfaces/interface[name='INTERFACE_0']", + "operation": "create" + }, + { + "target": "/ietf-interfaces:interfaces/interface[name='INTERFACE_0']/name", + "operation": "create" + }, +... +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.678251110+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray0", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.715498360+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray1", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.830268973+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray2", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:19.853387657+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray3", + "state": "BUSY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.515262267+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray0", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.535692962+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray1", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.557423764+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray2", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.579066867+00:00) +{ + "o-ran-uplane-conf:rx-array-carriers-state-change": { + "rx-array-carriers": [ + { + "name": "RxArray3", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.604192995+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray0", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.629830498+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray1", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.651062685+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray2", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] Received notification from RU "192.168.81.4" at (2025-08-28T10:37:24.672865767+00:00) +{ + "o-ran-uplane-conf:tx-array-carriers-state-change": { + "tx-array-carriers": [ + { + "name": "TxArray3", + "state": "READY" + } + ] + } +} + +[HW] [MPLANE] RU "192.168.81.4" is now ready. +[HW] [MPLANE] RPC request to RU "192.168.81.4" = : + + 10 + 10 + 10 + + RX_ON_TIME + true + RU + COUNT + + + RX_EARLY + true + RU + COUNT + + + RX_LATE + true + RU + COUNT + + + RX_TOTAL + true + RU + COUNT + + + RX_ON_TIME_C + true + RU + COUNT + + + RX_EARLY_C + true + RU + COUNT + + + RX_LATE_C + true + RU + COUNT + + + TX_TOTAL + true + RU + COUNT + + + +[HW] [MPLANE] RPC reply = OK. +[HW] [MPLANE] Successfully edited the candidate datastore for RU "192.168.81.4". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = candidate datastore. +[HW] [MPLANE] RPC reply = OK. +[HW] [MPLANE] Successfully validated candidate datastore for RU "192.168.81.4". +[HW] [MPLANE] RPC request to RU "192.168.81.4" = candidate datastore. +[HW] [MPLANE] RPC reply = OK. +[HW] [MPLANE] Successfully commited configuration into running datastore for RU "192.168.81.4". +[HW] [MPLANE] Sucessfully activated PM after start-up procedure for RU "192.168.81.4". +``` +
Note: If you wish to run the fronthaul without M-plane, no need for recompilation, as the library `oran_fhlib_5g` already exists. The only mandatory step is to link `oran_fhlib_5g` to `oai_transpro` library.