diff --git a/ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4.2L-metanoia.conf b/ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4.2L-metanoia.conf
new file mode 100644
index 0000000000..b2f0c2ac14
--- /dev/null
+++ b/ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4.2L-metanoia.conf
@@ -0,0 +1,254 @@
+Active_gNBs = ( "oai-du");
+# Asn1_verbosity, choice in: none, info, annoying
+Asn1_verbosity = "none";
+gNBs =
+(
+ {
+ ////////// Identification parameters:
+ gNB_ID = 0xe00;
+ gNB_name = "oai-du";
+ // Tracking area code, 0x0000 and 0xfffe are reserved values
+ tracking_area_code = 1;
+ plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); });
+ nr_cellid = 1;
+
+ ////////// Physical parameters:
+ pdsch_AntennaPorts_XP = 2;
+ pusch_AntennaPorts = 4;
+ pdsch_AntennaPorts_N1 = 2;
+ maxMIMO_layers = 2;
+ do_CSIRS = 1;
+ do_SRS = 0;
+ force_UL256qam_off = 1;
+
+ servingCellConfigCommon = (
+ {
+#spCellConfigCommon
+ physCellId = 0;
+# downlinkConfigCommon
+ #frequencyInfoDL
+ # this is 3300.24 + 134*12*30e3 = 3348.48 MHz (5G NR GSCN: 7741)
+ absoluteFrequencySSB = 649920; #JF maybe we should adjust a bit
+ dl_frequencyBand = 78;
+ # this is 3300.24 MHz
+ dl_absoluteFrequencyPointA = 646724;
+ #scs-SpecificCarrierList
+ dl_offstToCarrier = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ dl_subcarrierSpacing = 1;
+ dl_carrierBandwidth = 273;
+ #initialDownlinkBWP
+ #genericParameters
+ # this is RBstart=0,L=162 (275*(275-L+1))+(274-RBstart))
+ initialDLBWPlocationAndBandwidth = 1099;
+ #
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ initialDLBWPsubcarrierSpacing = 1;
+ #pdcch-ConfigCommon
+ initialDLBWPcontrolResourceSetZero = 12;
+ initialDLBWPsearchSpaceZero = 0;
+ #uplinkConfigCommon
+ #frequencyInfoUL
+ ul_frequencyBand = 78;
+ #scs-SpecificCarrierList
+ ul_offstToCarrier = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ ul_subcarrierSpacing = 1;
+ ul_carrierBandwidth = 273;
+ pMax = 20;
+ #initialUplinkBWP
+ #genericParameters
+ initialULBWPlocationAndBandwidth = 1099;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ initialULBWPsubcarrierSpacing = 1;
+ #rach-ConfigCommon
+ #rach-ConfigGeneric
+ prach_ConfigurationIndex = 148; # JF check this and other PRACH related params
+#prach_msg1_FDM
+#0 = one, 1=two, 2=four, 3=eight
+ prach_msg1_FDM = 0;
+ prach_msg1_FrequencyStart = 0;
+ zeroCorrelationZoneConfig = 12;
+ preambleReceivedTargetPower = -96;
+#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
+ preambleTransMax = 6;
+#powerRampingStep
+# 0=dB0,1=dB2,2=dB4,3=dB6
+ powerRampingStep = 1;
+#ra_ReponseWindow
+#1,2,4,8,10,20,40,80
+ ra_ResponseWindow = 5;
+#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
+#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
+#one (0..15) 4,8,12,16,...60,64
+ ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
+#ra_ContentionResolutionTimer
+#(0..7) 8,16,24,32,40,48,56,64
+ ra_ContentionResolutionTimer = 7;
+ rsrp_ThresholdSSB = 19;
+#prach-RootSequenceIndex_PR
+#1 = 839, 2 = 139
+ prach_RootSequenceIndex_PR = 2;
+ prach_RootSequenceIndex = 1;
+ # SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
+ #
+ msg1_SubcarrierSpacing = 1,
+# restrictedSetConfig
+# 0=unrestricted, 1=restricted type A, 2=restricted type B
+ restrictedSetConfig = 0,
+ msg3_DeltaPreamble = 1;
+ p0_NominalWithGrant = -90;
+# pucch-ConfigCommon setup :
+# pucchGroupHopping
+# 0 = neither, 1= group hopping, 2=sequence hopping
+ pucchGroupHopping = 0;
+ hoppingId = 40;
+ p0_nominal = -90;
+# ssb_PositionsInBurs_BitmapPR
+# 1=short, 2=medium, 3=long
+ ssb_PositionsInBurst_Bitmap = 1;
+# ssb_periodicityServingCell
+# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
+ ssb_periodicityServingCell = 2;
+# dmrs_TypeA_position
+# 0 = pos2, 1 = pos3
+ dmrs_TypeA_Position = 0;
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ subcarrierSpacing = 1;
+ #tdd-UL-DL-ConfigurationCommon
+# subcarrierSpacing
+# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
+ referenceSubcarrierSpacing = 1;
+ # pattern1
+ # dl_UL_TransmissionPeriodicity
+ # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
+ dl_UL_TransmissionPeriodicity = 5; #6;
+ nrofDownlinkSlots = 3; #7;
+ nrofDownlinkSymbols = 6;
+ nrofUplinkSlots = 1; #2;
+ nrofUplinkSymbols = 4;
+ ssPBCH_BlockPower = -10;
+ }
+ );
+ # ------- SCTP definitions
+ SCTP :
+ {
+ # Number of streams to use in input/output
+ SCTP_INSTREAMS = 2;
+ SCTP_OUTSTREAMS = 2;
+ };
+
+ ////////// AMF parameters:
+ amf_ip_address = ({ ipv4 = "172.21.6.103"; });
+
+ NETWORK_INTERFACES :
+ {
+ GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20";
+ GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20";
+ GNB_PORT_FOR_S1U = 2152; # Spec 2152
+ };
+ }
+);
+MACRLCs = (
+{
+ num_cc = 1;
+ tr_s_preference = "local_L1";
+ tr_n_preference = "local_RRC";
+ pusch_TargetSNRx10 = 220;
+ pucch_TargetSNRx10 = 220;
+ ul_bler_target_upper=.35;
+ ul_bler_target_lower=.15;
+ pusch_FailureThres = 100;
+ ul_max_mcs = 28;
+}
+);
+L1s = (
+{
+ num_cc = 1;
+ tr_n_preference = "local_mac";
+ prach_dtx_threshold = 130;
+ pucch0_dtx_threshold = 80;
+ pusch_dtx_threshold = 10;
+ max_ldpc_iterations = 10;
+ tx_amp_backoff_dB = 12; #9; needs to match O-RU configuration # JF important to check
+ L1_rx_thread_core = 3;
+ L1_tx_thread_core = 4; # relevant after merge of l1_tx_thread
+ phase_compensation = 0; # needs to match O-RU configuration # JF to be tested
+}
+);
+RUs = (
+{
+ local_rf = "no";
+ nb_tx = 4;
+ nb_rx = 4;
+ att_tx = 0
+ att_rx = 0;
+ bands = [78];
+ max_pdschReferenceSignalPower = -27;
+ max_rxgain = 75;
+ sf_extension = 0;
+ eNB_instances = [0];
+ ru_thread_core = 6;
+ sl_ahead = 10; #5;
+ ##beamforming 1x2 matrix: 1 layer x 2 antennas
+ bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000];
+ tr_preference = "raw_if4p5"; # important: activate FHI7.2
+ do_precoding = 0; # needs to match O-RU configuration
+}
+);
+
+security = {
+ # preferred ciphering algorithms
+ # the first one of the list that an UE supports in chosen
+ # valid values: nea0, nea1, nea2, nea3
+ ciphering_algorithms = ( "nea0" );
+
+ # preferred integrity algorithms
+ # the first one of the list that an UE supports in chosen
+ # valid values: nia0, nia1, nia2, nia3
+ integrity_algorithms = ( "nia2", "nia0" );
+
+ # setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
+ # what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
+ drb_ciphering = "yes";
+ drb_integrity = "no";
+};
+
+log_config :
+{
+ global_log_level ="info";
+ hw_log_level ="info";
+ phy_log_level ="info";
+ mac_log_level ="info";
+ rlc_log_level ="info";
+ pdcp_log_level ="info";
+ rrc_log_level ="info";
+ ngap_log_level ="info";
+ f1ap_log_level ="info";
+};
+
+fhi_72 = {
+ dpdk_devices = ("0000:c3:11.0", "0000:c3:11.1");
+ system_core = 0;
+ io_core = 1;
+ worker_cores = (2);
+ ru_addr = ("00:E0:0C:00:AE:06", "00:E0:0C:00:AE:06");
+ mtu = 9000;
+ fh_config = ({
+ T1a_cp_dl = (285, 470);
+ T1a_cp_ul = (285, 429);
+ T1a_up = (125, 350);
+ Ta4 = (110, 180);
+ ru_config = {
+ iq_width = 9;
+ iq_width_prach = 9;
+ };
+ });
+};
+
diff --git a/ci-scripts/xml_files/container_sa_fhi72_metanoia_up2_2x2.xml b/ci-scripts/xml_files/container_sa_fhi72_metanoia_up2_2x2.xml
new file mode 100644
index 0000000000..d75aa25120
--- /dev/null
+++ b/ci-scripts/xml_files/container_sa_fhi72_metanoia_up2_2x2.xml
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+ |
+ + OAI O-RAN 7.2 Front-haul Docker Compose + | +