Run L1 and Testmac

Before you run L1, please make sure all the FH, WLS, and FAPI TM lib was built according to above relative chapters for each lib, or you can refer below quick build command to create these libs.

Build FH

under folder phy/fhi_lib:


Build WLS

under folder phy/wls_lib:: #./


under folder phy/fapi_5g/build:: #./

For the current O-RAN release, the L1 only has a binary image as well as the testmac which is an L2 test application, details of the L1 and testmac application are in

Download L1 and testmac

Download L1 and testmac through

CheckList Before Running the code

Before running the L1 and Testmac code make sure that you have built the wls_lib, FHI_lib and 5G_FAPI_TM using the instructions provided earlier in this document and in the order specified in this documentation.

Run L1 with testmac

Three console windows are needed, one for L1 app, one for FAPI TM, one for testmac. They need to run in the following order L1-> FAPI TM-> testmac. In each console window, the environment needs to be set using a shell script under folder phy/ example:

#source ./
  • Run L1 under folder FlexRAN/l1/bin/nr5g/gnb/l1 in timer mode using: -e
Note that the markups dpdkBasebandFecMode and dpdkBasebandDevice needs to be adjusted in the relevant phycfg.xml under folder

FlexRAN/l1/bin/nr5g/gnb/l1 before starting L1.
dpdkBasebandFecMode = 0 for LDPC Encoder/Decoder in software.
dpdkBasebandFecMode = 1 for LDPC Encoder/Decoder in FPGA.

  • Run FAPI TM under folder phy/fapi_5g/bin:

    #./ --cfg=oran_5g_fapi.cfg
  • Run testmac under folder FlexRAN/l1/bin/nr5g/gnb/testmac:


Once the application comes up, you will see a <TESTMAC> prompt. The same Unit tests can be run using the command:

  • run testtype numerology bandwidth testnum where

  • testtype is 0 (DL), 1 (UL) or 2 (FD)

  • numerology [0 -> 4], 0=15khz, 1=30khz, 2=60khz, 3=120khz, 4=240khz

  • bandwidth 5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 400 (in Mhz)

  • testnum is the Bit Exact TestNum. [1001 -> above]If this is left blank, then all tests under type testtype are run

testnum is always a 4 digit number. First digit represents the number of carriers to run. For example, to run Test Case 5 for Uplink Rx mu=3, 100Mhz for 1 carrier, the command would be: run 1 3 100 1005 All the pre-defined test cases for the current O-RAN Release are defined in the Test Cases section in and also in the Test Cases section of this document. If the user wants to run more slots (than specified in test config file) or change the mode or change the TTI interval of the test, then the command phystart can be used as follows:

  • phystart mode interval num_tti

  • mode is 4 (ORAN compatible Radio) or 1 (Timer)

  • interval is the TTI duration scaled as per Numerology (only used in timer mode).

    • So if Numerology is 3 and this parameter is set to 1, then the interval will be programmed to 0.125 ms.

    • If this is set to 10, then interval is programmed to 1.25ms

  • num_tti is the total number of TTIs to run the test.

    • If 0, then the test config file defines how many slots to run.

    • If a non zero number, then test is run for these many slots.

    • If the num_tti is more than the number of slots in config file, then the configuration is repeated till end of test.

    • So if num_tti=200 and num_slot from config file is 10, then the 10 slot configs are repeated 20 times in a cyclic fashion.

  • The default mode set at start of testmac is (phystart 1 10 0). So it is timer mode at 10ms TTI intervals running for duration specified in each test config file

  • Once user manually types the phystart command on the l2 console, then all subsequent tests will use this phystart config till user changes it or testmac is restarted.

  • If user wants to run a set of tests which are programmed in a cfg file (for example tests_customer.cfg):

    ./ –testfile=tests_customer.cfg


    #./ --testfile=oran_bronze_rel_fec_sw.cfg
  • This will run all the tests that are listed in the config file. Please see the tests_customer.cfg present in the release for example of how to program the tests