From 42d03acdd1d57de32318dc585e194dca97ec4ba6 Mon Sep 17 00:00:00 2001 From: Carlos Giraldo Date: Thu, 5 Aug 2021 09:27:13 +0200 Subject: [PATCH] refactoring and updating docs --- docs/open5gs-and-oai-enb-usrp/oai-enb.yaml | 17 - .../register_subscriber.sh | 15 - .../gnb.band78.sa.fr1.106PRB.usrpn310.conf | 301 ++++++++++++ .../gnb.sa.band41.fr1.106PRB.usrpb210.conf | 31 +- .../gnb.sa.band78.fr1.106PRB.usrpb210.conf | 300 ++++++++++++ ...b.sa.band78.fr1.106PRB.usrpb210.sabox.conf | 329 +++++++++++++ .../README.md | 2 +- docs/open5gs-and-oai-usrp/config/enb/enb.env | 24 + docs/open5gs-and-oai-usrp/config/gnb/gnb.env | 8 + .../gnb.sa.band78.fr1.106PRB.usrpb210.conf | 300 ++++++++++++ .../config/open5gs}/mme.yaml | 0 .../epc.yaml | 0 docs/open5gs-and-oai-usrp/oai-enb.yaml | 11 + docs/open5gs-and-oai-usrp/oai-gnb.yaml | 12 + docs/open5gs-and-oai-usrp/open5gs-dbctl | 437 +++++++++++++++++ .../register_subscriber.sh | 23 + .../uhd_image_downloader.py | 0 docs/open5gs-and-srs-enb-usrp/README.md | 18 +- .../{srs-config => config/srs}/drb.conf | 0 .../{srs-config => config/srs}/enb.conf | 0 .../{srs-config => config/srs}/rr.conf | 0 .../{srs-config => config/srs}/sib.conf | 0 docs/open5gs-and-srs-enb-usrp/epc.yaml | 20 +- .../open5gs-config/mme.yaml | 37 -- docs/open5gs-and-srs-enb-usrp/open5gs-dbctl | 437 +++++++++++++++++ .../register_subscriber.sh | 29 +- docs/open5gs-and-srs-enb-usrp/srs-enb.yaml | 4 +- .../open5gs-and-srs-enb-usrp/ue_connected.jpg | Bin 0 -> 198886 bytes docs/open5gs-and-srslte.tgz | Bin 0 -> 1931 bytes docs/open5gs-and-srslte/README.md | 25 + docs/open5gs-and-srslte/configure_cgnat.sh | 4 - docs/open5gs-and-srslte/epc.yaml | 18 +- docs/open5gs-and-srslte/open5gs-dbctl | 437 +++++++++++++++++ .../open5gs-and-srslte/register_subscriber.sh | 26 +- docs/open5gs-and-srslte/srslte.yaml | 10 +- docs/open5gs-and-ueransim/1gnb-1ue.yaml | 25 - docs/open5gs-and-ueransim/1gnb-4ue.yaml | 27 -- docs/open5gs-and-ueransim/gnb.yaml | 11 + .../{2gnb-4ue.yaml => ues.yaml} | 0 multiarch.md | 5 + ...ckerfile.orig-enodeb => Dockerfile.enodeb} | 0 oai-enb/Makefile | 20 +- oai/Dockerfile.eNB.ubuntu18 | 122 +++++ oai/Dockerfile.gNB.ubuntu18 | 138 ++++++ oai/Dockerfile.lteUE.ubuntu18 | 107 +++++ oai/Dockerfile.nrUE.ubuntu18 | 120 +++++ oai/Makefile | 9 +- .../orig/generic-lte-epc/UE_config.xml | 112 +++++ .../orig/generic-lte-epc/benetel-4g.conf | 285 +++++++++++ .../orig/generic-lte-epc/benetel-5g.conf | 302 ++++++++++++ oai/configs/orig/generic-lte-epc/cu.lte.conf | 221 +++++++++ .../du.lte.band7.10MHz.if4p5.conf | 119 +++++ .../enb.band13.tm1.50PRB.emtc.conf | 454 ++++++++++++++++++ .../enb.band38.tm1.100PRB.usrpx310.conf | 195 ++++++++ .../enb.band38.tm1.25PRB.iris030.conf | 272 +++++++++++ .../enb.band38.tm1.usrpx310.conf | 195 ++++++++ .../enb.band42.tm1.25PRB.iris030.conf | 272 +++++++++++ .../generic-lte-epc/enb.band7.master.conf | 300 ++++++++++++ .../enb.band7.tm1.100PRB.usrpx310.conf | 229 +++++++++ .../enb.band7.tm1.25PRB.iris030.conf | 272 +++++++++++ .../enb.band7.tm1.25PRB.usrpb210.replay.conf} | 69 ++- .../enb.band7.tm1.50PRB.usrpb210-d2d.conf | 91 ++-- .../enb.band7.tm1.50PRB.usrpb210.conf | 315 ++++++++++++ ...band7.tm1.50PRB.usrpb210_ue_expansion.conf | 228 +++++++++ .../gnb.band257.tm1.32PRB.usrpn300.conf | 286 +++++++++++ .../gnb.band257.tm1.32PRB.usrpx300.conf | 270 +++++++++++ .../gnb.band257.tm1.66PRB.usrpn300.conf | 265 ++++++++++ .../gnb.band261.tm1.32PRB.usrpn300.conf | 285 +++++++++++ .../gnb.band66.tm1.106PRB.usrpn300.conf | 277 +++++++++++ .../gnb.band66.tm1.106PRB.usrpx300.conf | 277 +++++++++++ .../gnb.band78.106PRB.30kHz,usrpb2x0.conf | 279 +++++++++++ .../gnb.band78.106PRB.slave.conf | 280 +++++++++++ .../generic-lte-epc/gnb.band78.slave.conf | 280 +++++++++++ .../gnb.band78.tm1.106PRB.PTRS.usrpx300.conf | 324 +++++++++++++ .../gnb.band78.tm1.106PRB.usrpb210.conf | 273 +++++++++++ .../gnb.band78.tm1.106PRB.usrpn300.conf | 274 +++++++++++ .../gnb.band78.tm1.106PRB.usrpx300.conf | 275 +++++++++++ .../gnb.band78.tm1.217PRB.usrpn300.conf | 290 +++++++++++ .../gnb.band78.tm1.217PRB.usrpx300.conf | 265 ++++++++++ .../gnb.band78.tm1.24PRB.usrpb210.conf | 277 +++++++++++ .../gnb.band78.tm1.24PRB.usrpn300.conf | 275 +++++++++++ .../gnb.band78.tm1.24PRB.usrpx300.conf | 275 +++++++++++ .../gnb.band78.tm1.273PRB.usrpn300.conf | 266 ++++++++++ .../generic-lte-epc/oaiL1.nfapi.usrpb210.conf | 62 +++ .../generic-lte-epc/oaiL1.nfapi.usrpx300.conf | 46 ++ .../rcc.band38.tm1.if4p5.50PRB.lo.conf | 233 +++++++++ .../rcc.band7.tm1.50PRB.nfapi-STUB.conf | 218 +++++++++ .../rcc.band7.tm1.50PRB.nfapi.conf | 255 ++++++++++ .../rcc.band7.tm1.if4p5.50PRB.conf | 233 +++++++++ .../rcc.band7.tm1.if4p5.50PRB.lo.conf | 234 +++++++++ .../rcc.band78.tm1.106PRB.nfapi.conf | 291 +++++++++++ .../generic-lte-epc/rcc_b38_if5_ENDC.conf | 243 ++++++++++ .../orig/generic-lte-epc/rru.oaisim.conf | 46 ++ .../orig/generic-lte-epc/rru.oaisim.tdd.conf | 46 ++ .../generic-lte-epc/testing_eNB_band13.conf | 285 +++++++++++ .../orig/generic-lte-epc/testing_enb.conf | 286 +++++++++++ .../orig/generic-lte-epc/testing_gnb.conf | 295 ++++++++++++ .../generic-lte-epc/testing_gnb_24PRB.conf | 307 ++++++++++++ .../generic-lte-epc/testing_gnb_n310.conf | 282 +++++++++++ oai/configs/orig/generic-nr-5gc/cu_gnb.conf | 288 +++++++++++ oai/configs/orig/generic-nr-5gc/du_gnb.conf | 302 ++++++++++++ ...b.band78.tm1.106PRB.usrpn300.gtp-itti.conf | 304 ++++++++++++ .../gnb.sa.band41.fr1.106PRB.usrpb210.conf | 300 ++++++++++++ .../gnb.sa.band78.fr1.106PRB.usrpb210.conf | 300 ++++++++++++ ...b.sa.band78.fr1.106PRB.usrpb210.sabox.conf | 328 +++++++++++++ .../gnb.band261.tm1.32PRB.usrpn300.conf | 289 +++++++++++ .../gnb.band66.tm1.106PRB.usrpn300.conf | 278 +++++++++++ .../gnb.band78.nsa_2x2.106PRB.usrpn310.conf | 296 ++++++++++++ .../gnb.band78.sa.fr1.106PRB.usrpn310.conf | 301 ++++++++++++ .../gnb.band78.tm1.106PRB.usrpn300.conf | 277 +++++++++++ .../gnb.band78.tm1.fr1.106PRB.usrpb210.conf | 286 +++++++++++ .../gnb.band78.tm1.fr1.106PRB.usrpn310.conf | 295 ++++++++++++ oai/configs/templates/enb/cu.fdd.conf | 222 +++++++++ oai/configs/templates/enb/du.fdd.conf | 128 +++++ oai/configs/templates/enb/enb.fdd.conf | 282 +++++++++++ oai/configs/templates/enb/enb.tdd.conf | 235 +++++++++ oai/configs/templates/enb/rcc.if4p5.fdd.conf | 279 +++++++++++ oai/configs/templates/enb/rcc.if4p5.tdd.conf | 242 ++++++++++ oai/configs/templates/enb/rcc.nfapi.fdd.conf | 246 ++++++++++ oai/configs/templates/enb/rru.fdd.conf | 47 ++ oai/configs/templates/enb/rru.tdd.conf | 47 ++ .../gnb.sa.band78.fr1.106PRB.usrpb210.conf | 300 ++++++++++++ oai/{entrypoint.sh => custom_entrypoint.sh} | 0 oai/enb_entrypoint.sh | 102 ++++ oai/gnb_entrypoint.sh | 82 ++++ open5gs/Makefile | 26 +- open5gs/configs/open5gs/amf.yaml | 55 ++- open5gs/configs/open5gs/bsf.yaml | 11 + open5gs/configs/open5gs/mme.yaml | 12 +- open5gs/configs/orig/open5gs/bsf.yaml | 186 +++++++ open5gs/configs/orig/open5gs/nssf.yaml | 234 +++++++++ open5gs/configs/orig/open5gs/pcf.yaml | 186 +++++++ ueransim/Dockerfile | 4 +- ueransim/Makefile | 14 +- ...e_downloader.py => uhd_image_downloader.py | 0 135 files changed, 22477 insertions(+), 352 deletions(-) delete mode 100644 docs/open5gs-and-oai-enb-usrp/oai-enb.yaml delete mode 100755 docs/open5gs-and-oai-enb-usrp/register_subscriber.sh create mode 100644 docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.band78.sa.fr1.106PRB.usrpn310.conf rename oai/configs/gnb.sa.band78.fr1.106PRB.usrpb210.conf.tpl => docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band41.fr1.106PRB.usrpb210.conf (94%) create mode 100644 docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.conf create mode 100644 docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf rename docs/{open5gs-and-oai-enb-usrp => open5gs-and-oai-usrp}/README.md (89%) create mode 100644 docs/open5gs-and-oai-usrp/config/enb/enb.env create mode 100644 docs/open5gs-and-oai-usrp/config/gnb/gnb.env create mode 100644 docs/open5gs-and-oai-usrp/config/gnb/gnb.sa.band78.fr1.106PRB.usrpb210.conf rename docs/{open5gs-and-oai-enb-usrp/open5gs-config => open5gs-and-oai-usrp/config/open5gs}/mme.yaml (100%) rename docs/{open5gs-and-oai-enb-usrp => open5gs-and-oai-usrp}/epc.yaml (100%) create mode 100644 docs/open5gs-and-oai-usrp/oai-enb.yaml create mode 100644 docs/open5gs-and-oai-usrp/oai-gnb.yaml create mode 100755 docs/open5gs-and-oai-usrp/open5gs-dbctl create mode 100755 docs/open5gs-and-oai-usrp/register_subscriber.sh rename docs/{open5gs-and-oai-enb-usrp => open5gs-and-oai-usrp}/uhd_image_downloader.py (100%) rename docs/open5gs-and-srs-enb-usrp/{srs-config => config/srs}/drb.conf (100%) rename docs/open5gs-and-srs-enb-usrp/{srs-config => config/srs}/enb.conf (100%) rename docs/open5gs-and-srs-enb-usrp/{srs-config => config/srs}/rr.conf (100%) rename docs/open5gs-and-srs-enb-usrp/{srs-config => config/srs}/sib.conf (100%) delete mode 100644 docs/open5gs-and-srs-enb-usrp/open5gs-config/mme.yaml create mode 100755 docs/open5gs-and-srs-enb-usrp/open5gs-dbctl create mode 100644 docs/open5gs-and-srs-enb-usrp/ue_connected.jpg create mode 100644 docs/open5gs-and-srslte.tgz delete mode 100755 docs/open5gs-and-srslte/configure_cgnat.sh create mode 100755 docs/open5gs-and-srslte/open5gs-dbctl delete mode 100644 docs/open5gs-and-ueransim/1gnb-1ue.yaml delete mode 100644 docs/open5gs-and-ueransim/1gnb-4ue.yaml create mode 100644 docs/open5gs-and-ueransim/gnb.yaml rename docs/open5gs-and-ueransim/{2gnb-4ue.yaml => ues.yaml} (100%) create mode 100644 multiarch.md rename oai-enb/{Dockerfile.orig-enodeb => Dockerfile.enodeb} (100%) create mode 100644 oai/Dockerfile.eNB.ubuntu18 create mode 100644 oai/Dockerfile.gNB.ubuntu18 create mode 100644 oai/Dockerfile.lteUE.ubuntu18 create mode 100644 oai/Dockerfile.nrUE.ubuntu18 create mode 100644 oai/configs/orig/generic-lte-epc/UE_config.xml create mode 100644 oai/configs/orig/generic-lte-epc/benetel-4g.conf create mode 100644 oai/configs/orig/generic-lte-epc/benetel-5g.conf create mode 100644 oai/configs/orig/generic-lte-epc/cu.lte.conf create mode 100644 oai/configs/orig/generic-lte-epc/du.lte.band7.10MHz.if4p5.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band13.tm1.50PRB.emtc.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band38.tm1.100PRB.usrpx310.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band38.tm1.25PRB.iris030.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band38.tm1.usrpx310.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band42.tm1.25PRB.iris030.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band7.master.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band7.tm1.100PRB.usrpx310.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band7.tm1.25PRB.iris030.conf rename oai/configs/{enb.band7.tm1.25PRB.b210.conf.tpl => orig/generic-lte-epc/enb.band7.tm1.25PRB.usrpb210.replay.conf} (86%) rename docs/open5gs-and-oai-enb-usrp/oai-config/band7.tm1.25PRB.b210.conf => oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210-d2d.conf (84%) create mode 100644 oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210.conf create mode 100644 oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpx300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band257.tm1.66PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band261.tm1.32PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpx300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.30kHz,usrpb2x0.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.slave.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.slave.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpb210.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpx300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpx300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpb210.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpx300.conf create mode 100644 oai/configs/orig/generic-lte-epc/gnb.band78.tm1.273PRB.usrpn300.conf create mode 100644 oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpb210.conf create mode 100644 oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpx300.conf create mode 100644 oai/configs/orig/generic-lte-epc/rcc.band38.tm1.if4p5.50PRB.lo.conf create mode 100644 oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi-STUB.conf create mode 100644 oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi.conf create mode 100644 oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.conf create mode 100644 oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.lo.conf create mode 100644 oai/configs/orig/generic-lte-epc/rcc.band78.tm1.106PRB.nfapi.conf create mode 100644 oai/configs/orig/generic-lte-epc/rcc_b38_if5_ENDC.conf create mode 100644 oai/configs/orig/generic-lte-epc/rru.oaisim.conf create mode 100644 oai/configs/orig/generic-lte-epc/rru.oaisim.tdd.conf create mode 100644 oai/configs/orig/generic-lte-epc/testing_eNB_band13.conf create mode 100644 oai/configs/orig/generic-lte-epc/testing_enb.conf create mode 100644 oai/configs/orig/generic-lte-epc/testing_gnb.conf create mode 100644 oai/configs/orig/generic-lte-epc/testing_gnb_24PRB.conf create mode 100644 oai/configs/orig/generic-lte-epc/testing_gnb_n310.conf create mode 100644 oai/configs/orig/generic-nr-5gc/cu_gnb.conf create mode 100644 oai/configs/orig/generic-nr-5gc/du_gnb.conf create mode 100644 oai/configs/orig/generic-nr-5gc/gnb.band78.tm1.106PRB.usrpn300.gtp-itti.conf create mode 100644 oai/configs/orig/generic-nr-5gc/gnb.sa.band41.fr1.106PRB.usrpb210.conf create mode 100644 oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.conf create mode 100644 oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf create mode 100644 oai/configs/orig/gnb-image/gnb.band261.tm1.32PRB.usrpn300.conf create mode 100644 oai/configs/orig/gnb-image/gnb.band66.tm1.106PRB.usrpn300.conf create mode 100644 oai/configs/orig/gnb-image/gnb.band78.nsa_2x2.106PRB.usrpn310.conf create mode 100644 oai/configs/orig/gnb-image/gnb.band78.sa.fr1.106PRB.usrpn310.conf create mode 100644 oai/configs/orig/gnb-image/gnb.band78.tm1.106PRB.usrpn300.conf create mode 100644 oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpb210.conf create mode 100644 oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpn310.conf create mode 100644 oai/configs/templates/enb/cu.fdd.conf create mode 100644 oai/configs/templates/enb/du.fdd.conf create mode 100644 oai/configs/templates/enb/enb.fdd.conf create mode 100644 oai/configs/templates/enb/enb.tdd.conf create mode 100644 oai/configs/templates/enb/rcc.if4p5.fdd.conf create mode 100644 oai/configs/templates/enb/rcc.if4p5.tdd.conf create mode 100644 oai/configs/templates/enb/rcc.nfapi.fdd.conf create mode 100644 oai/configs/templates/enb/rru.fdd.conf create mode 100644 oai/configs/templates/enb/rru.tdd.conf create mode 100644 oai/configs/templates/gnb.sa.band78.fr1.106PRB.usrpb210.conf rename oai/{entrypoint.sh => custom_entrypoint.sh} (100%) create mode 100755 oai/enb_entrypoint.sh create mode 100755 oai/gnb_entrypoint.sh create mode 100644 open5gs/configs/open5gs/bsf.yaml create mode 100644 open5gs/configs/orig/open5gs/bsf.yaml create mode 100644 open5gs/configs/orig/open5gs/nssf.yaml create mode 100644 open5gs/configs/orig/open5gs/pcf.yaml rename docs/open5gs-and-srs-enb-usrp/uhd_image_downloader.py => uhd_image_downloader.py (100%) diff --git a/docs/open5gs-and-oai-enb-usrp/oai-enb.yaml b/docs/open5gs-and-oai-enb-usrp/oai-enb.yaml deleted file mode 100644 index 25fed8a..0000000 --- a/docs/open5gs-and-oai-enb-usrp/oai-enb.yaml +++ /dev/null @@ -1,17 +0,0 @@ -version: '3' -services: - enodeb: - image: openverso/oai-enb:1.2.2 - privileged: true - volumes: - - ./oai-config/band7.tm1.25PRB.b210.conf:/opt/oai/etc/band7.tm1.25PRB.b210.conf - - /dev/bus/usb:/dev/bus/usb - - ./uhd_images:/usr/share/uhd/images - cap_add: - - all - environment: - ENB_TEMPLATE_PATH: /opt/oai/etc/band7.tm1.25PRB.b210.conf - MME_HOSTNAME: mme - MCC: "901" - MNC: "70" - TAC: "1" \ No newline at end of file diff --git a/docs/open5gs-and-oai-enb-usrp/register_subscriber.sh b/docs/open5gs-and-oai-enb-usrp/register_subscriber.sh deleted file mode 100755 index 7a55a7f..0000000 --- a/docs/open5gs-and-oai-enb-usrp/register_subscriber.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -CONTAINER_NAME=open5gs-and-oai-enb-usrp_mongo_1 - -#IMSI_LIST="001010000000001 " -#KI=465B5CE8B199B49FAA5F0A2EE238A6BC -#OPC=E8ED289DEBA952E4283B54E88E6183CA - -IMSI_LIST="901700000039226 " -KI=491BB1C6E1179AED538028AE7AD525B3 -OPC=3B7FB099B3A6D16873B33F023B1679E9 - -for IMSI in $IMSI_LIST; do - docker exec $CONTAINER_NAME mongo --eval "db.subscribers.update({\"imsi\" : \"$IMSI\"}, { \$setOnInsert: {\"imsi\" : \"$IMSI\",\"subscribed_rau_tau_timer\": NumberInt(12),\"network_access_mode\": NumberInt(2),\"subscriber_status\": NumberInt(0),\"access_restriction_data\": NumberInt(32),\"slice\":[{\"sst\": NumberInt(1),\"default_indicator\":true,\"session\":[{\"name\":\"internet\",\"type\":NumberInt(3),\"pcc_rule\":[],\"ambr\":{\"uplink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)},\"downlink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)}},\"qos\":{\"index\":NumberInt(9),\"arp\":{\"priority_level\":NumberInt(8),\"pre_emption_capability\":NumberInt(1),\"pre_emption_vulnerability\":NumberInt(1)}}}]}],\"ambr\":{\"uplink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)},\"downlink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)}},\"security\":{\"k\":\"$KI\",\"amf\":\"8000\",\"op\":null,\"opc\":\"$OPC\"}}}, upsert=true);" open5gs -done diff --git a/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.band78.sa.fr1.106PRB.usrpn310.conf b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.band78.sa.fr1.106PRB.usrpn310.conf new file mode 100644 index 0000000..db190f1 --- /dev/null +++ b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.band78.sa.fr1.106PRB.usrpn310.conf @@ -0,0 +1,301 @@ +Active_gNBs = ( "gNB-Eurecom-DU"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-Eurecom-DU"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ + mcc = 208; + mnc = 99; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0x1; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + nr_cellid = 12345678L; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "CI_GNB_IP_ADDR"; + GNB_INTERFACE_NAME_FOR_NGU = "eth0"; + GNB_IPV4_ADDRESS_FOR_NGU = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 81; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + #clock_src = "external"; + sdr_addrs = "mgmt_addr=192.168.18.240,addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal" + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/gnb.sa.band78.fr1.106PRB.usrpb210.conf.tpl b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band41.fr1.106PRB.usrpb210.conf similarity index 94% rename from oai/configs/gnb.sa.band78.fr1.106PRB.usrpb210.conf.tpl rename to docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band41.fr1.106PRB.usrpb210.conf index e27b202..46c7393 100644 --- a/oai/configs/gnb.sa.band78.fr1.106PRB.usrpb210.conf.tpl +++ b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band41.fr1.106PRB.usrpb210.conf @@ -1,4 +1,4 @@ -Active_gNBs = ( "gNB-Eurecom-DU"); +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); # Asn1_verbosity, choice in: none, info, annoying Asn1_verbosity = "none"; @@ -7,10 +7,10 @@ gNBs = { ////////// Identification parameters: gNB_ID = 0xe00; - gNB_name = "gNB-Eurecom-DU"; + gNB_name = "gNB-Eurecom-5GNRBox"; // Tracking area code, 0x0000 and 0xfffe are reserved values - tracking_area_code = ${TAC}; + tracking_area_code = 1; plmn_list = ({ mcc = ${MCC}; mnc = ${MNC}; @@ -52,10 +52,10 @@ gNBs = # downlinkConfigCommon #frequencyInfoDL # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) - absoluteFrequencySSB = 641280; - dl_frequencyBand = 78; + absoluteFrequencySSB = 518670; + dl_frequencyBand = 41; # this is 3600 MHz - dl_absoluteFrequencyPointA = 640008; + dl_absoluteFrequencyPointA = 514854; #scs-SpecificCarrierList dl_offstToCarrier = 0; # subcarrierSpacing @@ -84,7 +84,7 @@ gNBs = #uplinkConfigCommon #frequencyInfoUL - ul_frequencyBand = 78; + ul_frequencyBand = 41; #scs-SpecificCarrierList ul_offstToCarrier = 0; # subcarrierSpacing @@ -142,7 +142,7 @@ gNBs = initialULBWPk2_1 = 6; # used for mixed slot initialULBWPmappingType_1 = 1; - initialULBWPstartSymbolAndLength_1 = 69; # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 initialULBWPk2_2 = 7; # used for Msg.3 during RA initialULBWPmappingType_2 = 1; @@ -204,7 +204,7 @@ gNBs = ////////// MME parameters: - amf_ip_address = ( { ipv4 = "${AMF_ADDR}"; + amf_ip_address = ( { ipv4 = "192.168.70.132"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -225,11 +225,14 @@ gNBs = ); MACRLCs = ( - { - num_cc = 1; - tr_s_preference = "local_L1"; - tr_n_preference = "local_RRC"; - } + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } ); L1s = ( diff --git a/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.conf b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.conf new file mode 100644 index 0000000..58dc237 --- /dev/null +++ b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.conf @@ -0,0 +1,300 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ + mcc = ${MCC}; + mnc = ${MNC}; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0x1; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + nr_cellid = 12345678L; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "192.168.70.132"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "${CTRL_BIND_INTERFACE}"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "${CTRL_BIND_ADDR}"; + GNB_INTERFACE_NAME_FOR_NGU = "${DATA_BIND_INTERFACE}"; + GNB_IPV4_ADDRESS_FOR_NGU = "${DATA_BIND_ADDR}"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf new file mode 100644 index 0000000..cf800f5 --- /dev/null +++ b/docs/open5gs-and-oai-gnb-usrp/gnb-config/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf @@ -0,0 +1,329 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ + mcc = ${MCC}; + mnc = ${MNC}; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0xd143a5; // 0 false, else true + } + ); + + }); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "192.168.5.233"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "CI_FR1_CTL_ENB_IP_ADDR"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "{$CTRL_BIND_INTERFACE}"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "{$CTRL_BIND_ADDR}"; + GNB_INTERFACE_NAME_FOR_NGU = "{$DATA_BIND_INTERFACE}"; + GNB_IPV4_ADDRESS_FOR_NGU = "{$DATA_BIND_ADDR}"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "{$DATA_BIND_ADDR}"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/docs/open5gs-and-oai-enb-usrp/README.md b/docs/open5gs-and-oai-usrp/README.md similarity index 89% rename from docs/open5gs-and-oai-enb-usrp/README.md rename to docs/open5gs-and-oai-usrp/README.md index b7ab7e8..6ef72af 100644 --- a/docs/open5gs-and-oai-enb-usrp/README.md +++ b/docs/open5gs-and-oai-usrp/README.md @@ -16,7 +16,7 @@ Register subscriber in epc with `/register_subscriber.sh`. # Download uhd_images -python3 uhd_image_downloader.py -i ./uhd_images +python3 ../../uhd_image_downloader.py -i ../../uhd_images # Deployment RAN (enodeB) diff --git a/docs/open5gs-and-oai-usrp/config/enb/enb.env b/docs/open5gs-and-oai-usrp/config/enb/enb.env new file mode 100644 index 0000000..9fb6a75 --- /dev/null +++ b/docs/open5gs-and-oai-usrp/config/enb/enb.env @@ -0,0 +1,24 @@ +USE_B2XX=true +USE_FDD_MONO=true +DL_FREQUENCY_IN_MHZ=2685 +ENB_NAME=Gradiant +ENB_S1C_IF_NAME=eth0 +#ENB_S1C_IP_ADDRESS@ +ENB_S1U_IF_NAME=eth0 +#ENB_S1U_IP_ADDRESS@ +ENB_X2_IF_NAME=eth0 +#ENB_X2_IP_ADDRESS@ +FLEXRAN_ENABLED=false +FLEXRAN_INTERFACE_NAME=eth0 +FLEXRAN_IPV4_ADDRESS=0.0.0.0 +MCC=901 +#MME_S1C_IP_ADDRESS@ +MME_S1C_HOSTNAME=mme +MNC=70 +MNC_LENGTH=2 +NB_PRB=25 +NID_CELL=0 +RRC_INACTIVITY_THRESHOLD=30 +TAC=1 +UL_FREQUENCY_OFFSET_IN_MHZ=120 +UTRA_BAND_ID=7 diff --git a/docs/open5gs-and-oai-usrp/config/gnb/gnb.env b/docs/open5gs-and-oai-usrp/config/gnb/gnb.env new file mode 100644 index 0000000..b5d08f8 --- /dev/null +++ b/docs/open5gs-and-oai-usrp/config/gnb/gnb.env @@ -0,0 +1,8 @@ +CONFIG_TEMPLATE=/gnb.sa.band78.fr1.106PRB.usrpb210.conf +GNB_NG_IF_NAME=eth0 +GNB_NGU_IF_NAME=eth0 +AMF_NG_HOSTNAME=amf +MCC=901 +MNC=70 +MNC_LENGTH=2 +TAC=1 diff --git a/docs/open5gs-and-oai-usrp/config/gnb/gnb.sa.band78.fr1.106PRB.usrpb210.conf b/docs/open5gs-and-oai-usrp/config/gnb/gnb.sa.band78.fr1.106PRB.usrpb210.conf new file mode 100644 index 0000000..b73064b --- /dev/null +++ b/docs/open5gs-and-oai-usrp/config/gnb/gnb.sa.band78.fr1.106PRB.usrpb210.conf @@ -0,0 +1,300 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ({ + mcc = @MCC@; + mnc = @MNC@; + mnc_length = @MNC_LENGTH@; + snssaiList = ( + { + sst = 1; + sd = 0x1; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + nr_cellid = 12345678L; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "@AMF_NG_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "@GNB_NG_IF_NAME@"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "@GNB_NG_IP_ADDRESS@"; + GNB_INTERFACE_NAME_FOR_NGU = "@GNB_NGU_IF_NAME@"; + GNB_IPV4_ADDRESS_FOR_NGU = "@GNB_NGU_IP_ADDRESS@"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/docs/open5gs-and-oai-enb-usrp/open5gs-config/mme.yaml b/docs/open5gs-and-oai-usrp/config/open5gs/mme.yaml similarity index 100% rename from docs/open5gs-and-oai-enb-usrp/open5gs-config/mme.yaml rename to docs/open5gs-and-oai-usrp/config/open5gs/mme.yaml diff --git a/docs/open5gs-and-oai-enb-usrp/epc.yaml b/docs/open5gs-and-oai-usrp/epc.yaml similarity index 100% rename from docs/open5gs-and-oai-enb-usrp/epc.yaml rename to docs/open5gs-and-oai-usrp/epc.yaml diff --git a/docs/open5gs-and-oai-usrp/oai-enb.yaml b/docs/open5gs-and-oai-usrp/oai-enb.yaml new file mode 100644 index 0000000..a03a8ad --- /dev/null +++ b/docs/open5gs-and-oai-usrp/oai-enb.yaml @@ -0,0 +1,11 @@ +version: '3' +services: + enodeb: + image: official-oai-enb:2021.w31 + privileged: true + volumes: + - /dev/bus/usb:/dev/bus/usb + env_file: + - enb.env + cap_add: + - all diff --git a/docs/open5gs-and-oai-usrp/oai-gnb.yaml b/docs/open5gs-and-oai-usrp/oai-gnb.yaml new file mode 100644 index 0000000..9f9197f --- /dev/null +++ b/docs/open5gs-and-oai-usrp/oai-gnb.yaml @@ -0,0 +1,12 @@ +version: '3' +services: + enodeb: + image: openverso/oai-gnb:2021.w31 + privileged: true + volumes: + - /dev/bus/usb:/dev/bus/usb + - ./config/gnb/gnb.sa.band78.fr1.106PRB.usrpb210.conf:/gnb.sa.band78.fr1.106PRB.usrpb210.conf + env_file: + - gnb.env + cap_add: + - all diff --git a/docs/open5gs-and-oai-usrp/open5gs-dbctl b/docs/open5gs-and-oai-usrp/open5gs-dbctl new file mode 100755 index 0000000..01c20af --- /dev/null +++ b/docs/open5gs-and-oai-usrp/open5gs-dbctl @@ -0,0 +1,437 @@ +#!/bin/bash + +version=0.9.1 + +display_help() { + echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)" + echo "COMMANDS:" >&2 + echo " add {imsi key opc}: adds a user to the database with default values" + echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE" + echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns" + echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn" + echo " remove {imsi}: removes a user from the database" + echo " reset: WIPES OUT the database and restores it to an empty default" + echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user" + echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user" + echo " type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6" + echo " help: displays this message and exits" + echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only" +} + + +if [ "$#" -lt 1 ]; then + display_help + exit 1 +fi + +if [ "$1" = "help" ]; then + display_help + exit 1 +fi + +if [ "$1" = "add" ]; then + if [ "$#" -eq 4 ]; then + IMSI=$2 + KI=$3 + OPC=$4 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + if [ "$#" -eq 5 ]; then + IMSI=$2 + IP=$3 + KI=$4 + OPC=$5 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\"" + exit 1 +fi + +if [ "$1" = "addT1" ]; then + if [ "$#" -eq 4 ]; then + IMSI=$2 + KI=$3 + OPC=$4 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet1\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet2\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + if [ "$#" -eq 5 ]; then + IMSI=$2 + IP=$3 + KI=$4 + OPC=$5 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet1\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet2\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\"" + exit 1 +fi + +if [ "$1" = "remove" ]; then + if [ "$#" -ne 2 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\"" + exit 1 + fi + + IMSI=$2 + mongo --eval "db.subscribers.remove({\"imsi\": \"$IMSI\"});" open5gs + exit 0 +fi + +if [ "$1" = "reset" ]; then + if [ "$#" -ne 1 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\"" + exit 1 + fi + + mongo --eval "db.subscribers.remove({});" open5gs + exit 0 +fi + +if [ "$1" = "static_ip" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\"" + exit 1 + fi + IMSI=$2 + IP=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr\": \"$IP\" }});" open5gs + exit 0 +fi + +if [ "$1" = "static_ip6" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\"" + exit 1 + fi + IMSI=$2 + IP=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr6\": \"$IP\" }});" open5gs + exit 0 +fi + +if [ "$1" = "type" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\"" + exit 1 + fi + IMSI=$2 + TYPE=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" open5gs + exit 0 +fi + +display_help diff --git a/docs/open5gs-and-oai-usrp/register_subscriber.sh b/docs/open5gs-and-oai-usrp/register_subscriber.sh new file mode 100755 index 0000000..4bc070a --- /dev/null +++ b/docs/open5gs-and-oai-usrp/register_subscriber.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +MONGO_CONTAINER=open5gs-and-oai-usrp_mongo_1 + +: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.9.1) +COMMANDS: + add {imsi key opc}: adds a user to the database with default values + add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE + addT1 {imsi key opc}: adds a user to the database with 3 differents apns + addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn + remove {imsi}: removes a user from the database + reset: WIPES OUT the database and restores it to an empty default + static_ip {imsi ip4}: adds a static IP assignment to an already-existing user + static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user + type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6 + help: displays this message and exits + default values are as follows: APN "internet", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only +' + +docker cp open5gs-dbctl $MONGO_CONTAINER:/ + +docker exec -ti $MONGO_CONTAINER /open5gs-dbctl add 901700000039226 491BB1C6E1179AED538028AE7AD525B3 3B7FB099B3A6D16873B33F023B1679E9 + diff --git a/docs/open5gs-and-oai-enb-usrp/uhd_image_downloader.py b/docs/open5gs-and-oai-usrp/uhd_image_downloader.py similarity index 100% rename from docs/open5gs-and-oai-enb-usrp/uhd_image_downloader.py rename to docs/open5gs-and-oai-usrp/uhd_image_downloader.py diff --git a/docs/open5gs-and-srs-enb-usrp/README.md b/docs/open5gs-and-srs-enb-usrp/README.md index 901ee11..a615461 100644 --- a/docs/open5gs-and-srs-enb-usrp/README.md +++ b/docs/open5gs-and-srs-enb-usrp/README.md @@ -16,7 +16,7 @@ Register subscriber in ngc with `/register_subscriber.sh`. # Download uhd_images -python3 uhd_image_downloader.py -i ./uhd_images +python3 ../../uhd_image_downloader.py -i ../../uhd_images # Deployment RAN (enodeB) @@ -26,8 +26,20 @@ Deploy with docker-compose -f srs-enb.yaml up -d ``` + +# Test + +To test ue connectivity use a commercial smartphone, insert the SIM card previously registered in the EPC and connect to the "internet" apn. + +ue_connected.jpg + + +# Clean Up + Undeploy with: ``` -docker-compose -f srs-enb.yaml down -``` +docker-compose -f srslte.yaml down +docker-compose -f epc.yaml down -v + +``` \ No newline at end of file diff --git a/docs/open5gs-and-srs-enb-usrp/srs-config/drb.conf b/docs/open5gs-and-srs-enb-usrp/config/srs/drb.conf similarity index 100% rename from docs/open5gs-and-srs-enb-usrp/srs-config/drb.conf rename to docs/open5gs-and-srs-enb-usrp/config/srs/drb.conf diff --git a/docs/open5gs-and-srs-enb-usrp/srs-config/enb.conf b/docs/open5gs-and-srs-enb-usrp/config/srs/enb.conf similarity index 100% rename from docs/open5gs-and-srs-enb-usrp/srs-config/enb.conf rename to docs/open5gs-and-srs-enb-usrp/config/srs/enb.conf diff --git a/docs/open5gs-and-srs-enb-usrp/srs-config/rr.conf b/docs/open5gs-and-srs-enb-usrp/config/srs/rr.conf similarity index 100% rename from docs/open5gs-and-srs-enb-usrp/srs-config/rr.conf rename to docs/open5gs-and-srs-enb-usrp/config/srs/rr.conf diff --git a/docs/open5gs-and-srs-enb-usrp/srs-config/sib.conf b/docs/open5gs-and-srs-enb-usrp/config/srs/sib.conf similarity index 100% rename from docs/open5gs-and-srs-enb-usrp/srs-config/sib.conf rename to docs/open5gs-and-srs-enb-usrp/config/srs/sib.conf diff --git a/docs/open5gs-and-srs-enb-usrp/epc.yaml b/docs/open5gs-and-srs-enb-usrp/epc.yaml index f873529..0b7949d 100644 --- a/docs/open5gs-and-srs-enb-usrp/epc.yaml +++ b/docs/open5gs-and-srs-enb-usrp/epc.yaml @@ -5,38 +5,36 @@ services: environment: MONGO_INITDB_DATABASE: open5gs webui: - image: openverso/open5gs-webui:2.2.3 + image: openverso/open5gs-webui:2.3.2 restart: on-failure environment: DB_URI: mongodb://mongo/open5gs ports: - 3000:3000 nrf: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: open5gs-nrfd restart : on-failure smf: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: open5gs-smfd restart : on-failure mme: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: open5gs-mmed restart: on-failure ports: - 36412:36412 - volumes: - - ./open5gs-config/mme.yaml:/opt/open5gs/etc/open5gs/mme.yaml sgwc: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: open5gs-sgwcd restart : on-failure sgwu: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: open5gs-sgwud restart : on-failure upf: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: ["open5gs-upfd"] cap_add: - all @@ -45,13 +43,13 @@ services: ports: - 2152:2152 pcrf: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: ["open5gs-pcrfd"] environment: DB_URI: mongodb://mongo/open5gs restart: on-failure hss: - image: openverso/open5gs:2.2.3 + image: openverso/open5gs:2.3.2 command: open5gs-hssd environment: DB_URI: mongodb://mongo/open5gs diff --git a/docs/open5gs-and-srs-enb-usrp/open5gs-config/mme.yaml b/docs/open5gs-and-srs-enb-usrp/open5gs-config/mme.yaml deleted file mode 100644 index a2a1377..0000000 --- a/docs/open5gs-and-srs-enb-usrp/open5gs-config/mme.yaml +++ /dev/null @@ -1,37 +0,0 @@ -### For reference, see `/opt/open5gs/etc/orig/open5gs/` -mme: - freeDiameter: mme.conf - s1ap: - gtpc: - gummei: - plmn_id: - mcc: "901" - mnc: "70" - mme_gid: 2 - mme_code: 1 - tai: - plmn_id: - mcc: "901" - mnc: "70" - tac: "0001" - security: - integrity_order : [ EIA2, EIA1, EIA0 ] - ciphering_order : [ EEA0, EEA1, EEA2 ] - network_name: - full: Open5GS - mme_name: open5gs-mme0 - -sgwc: - gtpc: - - name: sgwc -smf: - gtpc: - - name: smf - -parameter: - -max: - -pool: - -sctp: \ No newline at end of file diff --git a/docs/open5gs-and-srs-enb-usrp/open5gs-dbctl b/docs/open5gs-and-srs-enb-usrp/open5gs-dbctl new file mode 100755 index 0000000..01c20af --- /dev/null +++ b/docs/open5gs-and-srs-enb-usrp/open5gs-dbctl @@ -0,0 +1,437 @@ +#!/bin/bash + +version=0.9.1 + +display_help() { + echo "open5gs-dbctl: Open5GS Database Configuration Tool ($version)" + echo "COMMANDS:" >&2 + echo " add {imsi key opc}: adds a user to the database with default values" + echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE" + echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns" + echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn" + echo " remove {imsi}: removes a user from the database" + echo " reset: WIPES OUT the database and restores it to an empty default" + echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user" + echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user" + echo " type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6" + echo " help: displays this message and exits" + echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only" +} + + +if [ "$#" -lt 1 ]; then + display_help + exit 1 +fi + +if [ "$1" = "help" ]; then + display_help + exit 1 +fi + +if [ "$1" = "add" ]; then + if [ "$#" -eq 4 ]; then + IMSI=$2 + KI=$3 + OPC=$4 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + if [ "$#" -eq 5 ]; then + IMSI=$2 + IP=$3 + KI=$4 + OPC=$5 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\"" + exit 1 +fi + +if [ "$1" = "addT1" ]; then + if [ "$#" -eq 4 ]; then + IMSI=$2 + KI=$3 + OPC=$4 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet1\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet2\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + if [ "$#" -eq 5 ]; then + IMSI=$2 + IP=$3 + KI=$4 + OPC=$5 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet1\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet2\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\"" + exit 1 +fi + +if [ "$1" = "remove" ]; then + if [ "$#" -ne 2 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\"" + exit 1 + fi + + IMSI=$2 + mongo --eval "db.subscribers.remove({\"imsi\": \"$IMSI\"});" open5gs + exit 0 +fi + +if [ "$1" = "reset" ]; then + if [ "$#" -ne 1 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\"" + exit 1 + fi + + mongo --eval "db.subscribers.remove({});" open5gs + exit 0 +fi + +if [ "$1" = "static_ip" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\"" + exit 1 + fi + IMSI=$2 + IP=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr\": \"$IP\" }});" open5gs + exit 0 +fi + +if [ "$1" = "static_ip6" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\"" + exit 1 + fi + IMSI=$2 + IP=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr6\": \"$IP\" }});" open5gs + exit 0 +fi + +if [ "$1" = "type" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\"" + exit 1 + fi + IMSI=$2 + TYPE=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" open5gs + exit 0 +fi + +display_help diff --git a/docs/open5gs-and-srs-enb-usrp/register_subscriber.sh b/docs/open5gs-and-srs-enb-usrp/register_subscriber.sh index eac7f69..69ebf59 100755 --- a/docs/open5gs-and-srs-enb-usrp/register_subscriber.sh +++ b/docs/open5gs-and-srs-enb-usrp/register_subscriber.sh @@ -1,15 +1,24 @@ #!/bin/bash -CONTAINER_NAME=open5gs-and-srs-enb-usrp_mongo_1 +MONGO_CONTAINER=open5gs-and-srs-enb-usrp_mongo_1 -#IMSI_LIST="001010000000001 " -#KI=465B5CE8B199B49FAA5F0A2EE238A6BC -#OPC=E8ED289DEBA952E4283B54E88E6183CA +: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.9.1) +COMMANDS: + add {imsi key opc}: adds a user to the database with default values + add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE + addT1 {imsi key opc}: adds a user to the database with 3 differents apns + addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn + remove {imsi}: removes a user from the database + reset: WIPES OUT the database and restores it to an empty default + static_ip {imsi ip4}: adds a static IP assignment to an already-existing user + static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user + type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6 + help: displays this message and exits + default values are as follows: APN "internet", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only +' -IMSI_LIST="901700000039226 " -KI=491BB1C6E1179AED538028AE7AD525B3 -OPC=3B7FB099B3A6D16873B33F023B1679E9 +docker cp open5gs-dbctl $MONGO_CONTAINER:/ + +#SISMOCOM SIM1 +docker exec -ti $MONGO_CONTAINER /open5gs-dbctl add 901700000039226 491BB1C6E1179AED538028AE7AD525B3 3B7FB099B3A6D16873B33F023B1679E9 -for IMSI in $IMSI_LIST; do - docker exec $CONTAINER_NAME mongo --eval "db.subscribers.update({\"imsi\" : \"$IMSI\"}, { \$setOnInsert: {\"imsi\" : \"$IMSI\",\"subscribed_rau_tau_timer\": NumberInt(12),\"network_access_mode\": NumberInt(2),\"subscriber_status\": NumberInt(0),\"access_restriction_data\": NumberInt(32),\"slice\":[{\"sst\": NumberInt(1),\"default_indicator\":true,\"session\":[{\"name\":\"internet\",\"type\":NumberInt(3),\"pcc_rule\":[],\"ambr\":{\"uplink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)},\"downlink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)}},\"qos\":{\"index\":NumberInt(9),\"arp\":{\"priority_level\":NumberInt(8),\"pre_emption_capability\":NumberInt(1),\"pre_emption_vulnerability\":NumberInt(1)}}}]}],\"ambr\":{\"uplink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)},\"downlink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)}},\"security\":{\"k\":\"$KI\",\"amf\":\"8000\",\"op\":null,\"opc\":\"$OPC\"}}}, upsert=true);" open5gs -done diff --git a/docs/open5gs-and-srs-enb-usrp/srs-enb.yaml b/docs/open5gs-and-srs-enb-usrp/srs-enb.yaml index 59c95c6..ff2edbb 100644 --- a/docs/open5gs-and-srs-enb-usrp/srs-enb.yaml +++ b/docs/open5gs-and-srs-enb-usrp/srs-enb.yaml @@ -6,9 +6,9 @@ services: - enb privileged: true volumes: - - ./srs-config/:/etc/srslte/ + - ./config/srs/:/etc/srslte/ - /dev/bus/usb:/dev/bus/usb - - ./uhd_images:/usr/share/uhd/images + - ../../uhd_images:/usr/share/uhd/images cap_add: - all environment: diff --git a/docs/open5gs-and-srs-enb-usrp/ue_connected.jpg b/docs/open5gs-and-srs-enb-usrp/ue_connected.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c782fca66273634609a28d1e9207018f7775191d GIT binary patch literal 198886 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 E2YHuNR{#J2 literal 0 HcmV?d00001 diff --git a/docs/open5gs-and-srslte.tgz b/docs/open5gs-and-srslte.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b962fefaa1250e0fbcc556511fcd907ae9579e15 GIT binary patch literal 1931 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 RBqY8o{tJ|Wr&2 + echo " add {imsi key opc}: adds a user to the database with default values" + echo " add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE" + echo " addT1 {imsi key opc}: adds a user to the database with 3 differents apns" + echo " addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn" + echo " remove {imsi}: removes a user from the database" + echo " reset: WIPES OUT the database and restores it to an empty default" + echo " static_ip {imsi ip4}: adds a static IP assignment to an already-existing user" + echo " static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user" + echo " type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6" + echo " help: displays this message and exits" + echo " default values are as follows: APN \"internet\", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only" +} + + +if [ "$#" -lt 1 ]; then + display_help + exit 1 +fi + +if [ "$1" = "help" ]; then + display_help + exit 1 +fi + +if [ "$1" = "add" ]; then + if [ "$#" -eq 4 ]; then + IMSI=$2 + KI=$3 + OPC=$4 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + if [ "$#" -eq 5 ]; then + IMSI=$2 + IP=$3 + KI=$4 + OPC=$5 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\"" + exit 1 +fi + +if [ "$1" = "addT1" ]; then + if [ "$#" -eq 4 ]; then + IMSI=$2 + KI=$3 + OPC=$4 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet1\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet2\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + if [ "$#" -eq 5 ]; then + IMSI=$2 + IP=$3 + KI=$4 + OPC=$5 + + mongo --eval "db.subscribers.update( { \"imsi\" : \"$IMSI\" }, + { \$setOnInsert: + { + \"imsi\" : \"$IMSI\", + \"subscribed_rau_tau_timer\" : NumberInt(12), + \"network_access_mode\" : NumberInt(2), + \"subscriber_status\" : NumberInt(0), + \"access_restriction_data\" : NumberInt(32), + \"slice\" : + [{ + \"sst\" : NumberInt(1), + \"default_indicator\" : true, + \"_id\" : new ObjectId(), + \"session\" : + [{ + \"name\" : \"internet\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet1\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + },{ + \"name\" : \"internet2\", + \"type\" : NumberInt(3), + \"_id\" : new ObjectId(), + \"pcc_rule\" : [], + \"ue\" : + { + \"addr\" : \"$IP\", + }, + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"qos\" : + { + \"index\" : NumberInt(9), + \"arp\" : + { + \"priority_level\" : NumberInt(8), + \"pre_emption_capability\" : NumberInt(1), + \"pre_emption_vulnerability\" : NumberInt(1), + }, + }, + }], + }], + \"ambr\" : + { + \"uplink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3),}, + \"downlink\" : { \"value\": NumberInt(1), \"unit\" : NumberInt(3) }, + }, + \"security\" : + { + \"k\" : \"$KI\", + \"amf\" : \"8000\", + \"op\" : null, + \"opc\" : \"$OPC\" + }, + \"__v\" : 0 + }, + }, + upsert=true);" open5gs + exit 0 + fi + + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl add imsi key opc\"" + exit 1 +fi + +if [ "$1" = "remove" ]; then + if [ "$#" -ne 2 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl remove imsi\"" + exit 1 + fi + + IMSI=$2 + mongo --eval "db.subscribers.remove({\"imsi\": \"$IMSI\"});" open5gs + exit 0 +fi + +if [ "$1" = "reset" ]; then + if [ "$#" -ne 1 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl reset\"" + exit 1 + fi + + mongo --eval "db.subscribers.remove({});" open5gs + exit 0 +fi + +if [ "$1" = "static_ip" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip imsi ip\"" + exit 1 + fi + IMSI=$2 + IP=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr\": \"$IP\" }});" open5gs + exit 0 +fi + +if [ "$1" = "static_ip6" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl static_ip6 imsi ip\"" + exit 1 + fi + IMSI=$2 + IP=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.ue.addr6\": \"$IP\" }});" open5gs + exit 0 +fi + +if [ "$1" = "type" ]; then + if [ "$#" -ne 3 ]; then + echo "open5gs-dbctl: incorrect number of args, format is \"open5gs-dbctl type imsi type\"" + exit 1 + fi + IMSI=$2 + TYPE=$3 + + mongo --eval "db.subscribers.update({\"imsi\": \"$IMSI\"},{\$set: { \"slice.0.session.0.type\": NumberInt($TYPE) }});" open5gs + exit 0 +fi + +display_help diff --git a/docs/open5gs-and-srslte/register_subscriber.sh b/docs/open5gs-and-srslte/register_subscriber.sh index 4a6c0fb..cf1cad8 100755 --- a/docs/open5gs-and-srslte/register_subscriber.sh +++ b/docs/open5gs-and-srslte/register_subscriber.sh @@ -1,11 +1,23 @@ #!/bin/bash -CONTAINER_NAME=open5gs-and-srslte_mongo_1 +MONGO_CONTAINER=open5gs-and-srslte_mongo_1 -IMSI_LIST="001010000000001" -KI=465B5CE8B199B49FAA5F0A2EE238A6BC -OPC=E8ED289DEBA952E4283B54E88E6183CA +: 'open5gs-dbctl: Open5GS Database Configuration Tool (0.9.1) +COMMANDS: + add {imsi key opc}: adds a user to the database with default values + add {imsi ip key opc}: adds a user to the database with default values and a IPv4 address for the UE + addT1 {imsi key opc}: adds a user to the database with 3 differents apns + addT1 {imsi ip key opc}: adds a user to the database with 3 differents apns and the same IPv4 address for the each apn + remove {imsi}: removes a user from the database + reset: WIPES OUT the database and restores it to an empty default + static_ip {imsi ip4}: adds a static IP assignment to an already-existing user + static_ip6 {imsi ip6}: adds a static IPv6 assignment to an already-existing user + type {imsi type}: changes the PDN-Type of the first PDN: 0 = IPv4, 1 = IPv6, 2 = IPv4v6, 3 = v4 OR v6 + help: displays this message and exits + default values are as follows: APN "internet", dl_bw/ul_bw 1 Gbps, PGW address is 127.0.0.3, IPv4 only +' + +docker cp open5gs-dbctl $MONGO_CONTAINER:/ + +docker exec -ti $MONGO_CONTAINER /open5gs-dbctl add 901700000000001 465B5CE8B199B49FAA5F0A2EE238A6BC E8ED289DEBA952E4283B54E88E6183CA -for IMSI in $IMSI_LIST; do - docker exec $CONTAINER_NAME mongo --eval "db.subscribers.update({\"imsi\" : \"$IMSI\"}, { \$setOnInsert: {\"imsi\" : \"$IMSI\",\"subscribed_rau_tau_timer\": NumberInt(12),\"network_access_mode\": NumberInt(2),\"subscriber_status\": NumberInt(0),\"access_restriction_data\": NumberInt(32),\"slice\":[{\"sst\": NumberInt(1),\"default_indicator\":true,\"session\":[{\"name\":\"internet\",\"type\":NumberInt(3),\"pcc_rule\":[],\"ambr\":{\"uplink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)},\"downlink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)}},\"qos\":{\"index\":NumberInt(9),\"arp\":{\"priority_level\":NumberInt(8),\"pre_emption_capability\":NumberInt(1),\"pre_emption_vulnerability\":NumberInt(1)}}}]}],\"ambr\":{\"uplink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)},\"downlink\":{\"value\":NumberInt(1),\"unit\":NumberInt(3)}},\"security\":{\"k\":\"$KI\",\"amf\":\"8000\",\"op\":null,\"opc\":\"$OPC\"}}}, upsert=true);" open5gs -done diff --git a/docs/open5gs-and-srslte/srslte.yaml b/docs/open5gs-and-srslte/srslte.yaml index 9db96a7..d70430e 100644 --- a/docs/open5gs-and-srslte/srslte.yaml +++ b/docs/open5gs-and-srslte/srslte.yaml @@ -4,7 +4,7 @@ services: build: context: ../../srs-lte/ dockerfile: Dockerfile - image: openverso/srs-lte:20_04_1 + image: openverso/srs-lte:20_10_1 command: - enb privileged: true @@ -14,12 +14,14 @@ services: MME_HOSTNAME: mme ENB_HOSTNAME: enodeb UE_HOSTNAME: ue + MCC: "901" + MNC: "70" ue: build: context: ../../srs-lte/ dockerfile: Dockerfile - image: openverso/srs-lte:20_04_1 + image: openverso/srs-lte:20_10_1 command: - ue privileged: true @@ -28,8 +30,8 @@ services: environment: ENB_HOSTNAME: enodeb UE_HOSTNAME: ue - MCC: "001" - MNC: "01" + MCC: "901" + MNC: "70" MSISDN: "0000000001" KEY: "465B5CE8B199B49FAA5F0A2EE238A6BC" OPC: "E8ED289DEBA952E4283B54E88E6183CA" diff --git a/docs/open5gs-and-ueransim/1gnb-1ue.yaml b/docs/open5gs-and-ueransim/1gnb-1ue.yaml deleted file mode 100644 index 5361abe..0000000 --- a/docs/open5gs-and-ueransim/1gnb-1ue.yaml +++ /dev/null @@ -1,25 +0,0 @@ -version: '3' -services: - gnb1: - image: openverso/ueransim:3.2.2 - container_name: gnb1 - command: - - gnb - environment: - AMF_HOSTNAME: amf - GNB_HOSTNAME: gnb1 - ue: - image: openverso/ueransim:3.2.2 - command: - - ue - cap_add: - - all - privileged: true - environment: - GNB_HOSTNAME: gnb1 - APN: internet - MSISDN: '0000000001' - KEY: '465B5CE8B199B49FAA5F0A2EE238A6BC' - OP_TYPE: OPC - OP: 'E8ED289DEBA952E4283B54E88E6183CA' - \ No newline at end of file diff --git a/docs/open5gs-and-ueransim/1gnb-4ue.yaml b/docs/open5gs-and-ueransim/1gnb-4ue.yaml deleted file mode 100644 index e29657a..0000000 --- a/docs/open5gs-and-ueransim/1gnb-4ue.yaml +++ /dev/null @@ -1,27 +0,0 @@ -version: '3' -services: - gnb1: - image: openverso/ueransim:3.2.2 - container_name: gnb1 - command: - - gnb - environment: - AMF_HOSTNAME: amf - GNB_HOSTNAME: gnb1 - ue: - image: openverso/ueransim:3.2.2 - command: - - ue - - -n - - "4" - cap_add: - - all - privileged: true - environment: - GNB_HOSTNAME: gnb1 - APN: internet - MSISDN: '0000000001' - KEY: '465B5CE8B199B49FAA5F0A2EE238A6BC' - OP_TYPE: OPC - OP: 'E8ED289DEBA952E4283B54E88E6183CA' - diff --git a/docs/open5gs-and-ueransim/gnb.yaml b/docs/open5gs-and-ueransim/gnb.yaml new file mode 100644 index 0000000..de475d2 --- /dev/null +++ b/docs/open5gs-and-ueransim/gnb.yaml @@ -0,0 +1,11 @@ +version: '3' +services: + gnb1: + image: openverso/ueransim:3.3.2 + container_name: gnb1 + command: + - gnb + environment: + AMF_HOSTNAME: amf + GNB_HOSTNAME: gnb1 + \ No newline at end of file diff --git a/docs/open5gs-and-ueransim/2gnb-4ue.yaml b/docs/open5gs-and-ueransim/ues.yaml similarity index 100% rename from docs/open5gs-and-ueransim/2gnb-4ue.yaml rename to docs/open5gs-and-ueransim/ues.yaml diff --git a/multiarch.md b/multiarch.md new file mode 100644 index 0000000..ffabed1 --- /dev/null +++ b/multiarch.md @@ -0,0 +1,5 @@ +https://github.com/docker/buildx#building-multi-platform-images + +docker run --privileged --rm tonistiigi/binfmt --install all +docker buildx create --use +docker buildx install diff --git a/oai-enb/Dockerfile.orig-enodeb b/oai-enb/Dockerfile.enodeb similarity index 100% rename from oai-enb/Dockerfile.orig-enodeb rename to oai-enb/Dockerfile.enodeb diff --git a/oai-enb/Makefile b/oai-enb/Makefile index f4a3065..2e504a4 100644 --- a/oai-enb/Makefile +++ b/oai-enb/Makefile @@ -2,21 +2,9 @@ REGISTRY=docker.io IMAGE=openverso/oai-enb -TAG=1.2.2 +TAG=2021.w28 +PLATFORMS=linux/amd64 +#PLATFORMS=linux/amd64,linux/arm64 build: - docker build -t ${IMAGE}:${TAG} . - docker build -t ${IMAGE}:${TAG}-uhd-images . -f Dockerfile.uhd_images - -push: - echo "Pushing the images ${IMAGE} to ${REGISTRY}"; \ - echo "Insert credentials to registry: "; \ - docker --config=.docker login ${REGISTRY}; \ - docker tag ${IMAGE}:${TAG} ${REGISTRY}/${IMAGE}:${TAG}; \ - docker --config=.docker push ${REGISTRY}/${IMAGE}:${TAG}; \ - docker tag ${IMAGE}:${TAG}-uhd-images ${REGISTRY}/${IMAGE}:${TAG}-uhd-images; \ - docker --config=.docker push ${REGISTRY}/${IMAGE}:${TAG}-uhd-images; \ - - rm -r .docker - -all: build push + docker build -t ${IMAGE}:${TAG} --build-arg version=${TAG} -f Dockerfile.enodeb . --platform ${PLATFORMS} --push \ No newline at end of file diff --git a/oai/Dockerfile.eNB.ubuntu18 b/oai/Dockerfile.eNB.ubuntu18 new file mode 100644 index 0000000..c4deb6c --- /dev/null +++ b/oai/Dockerfile.eNB.ubuntu18 @@ -0,0 +1,122 @@ +FROM ubuntu:bionic AS enb-build + +ARG version=2021.w28 + +ENV VERSION=$version + +ARG NEEDED_GIT_PROXY +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +#install developers pkg/repo +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + #gcc needed for build_oai + build-essential \ + psmisc \ + git \ + xxd \ + #unzip is needed for protobuf + unzip + +# In some network environments, GIT proxy is required +RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi" + +RUN apt-get update && apt-get install git +#create the WORKDIR +WORKDIR /oai-ran +RUN git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git . +RUN git checkout $VERSION + +#run build_oai -I to get the builder image +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p log && \ + ./build_oai -I -w USRP + +#run build_oai to build the target image +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p log && \ + ./build_oai --eNB --ninja -w USRP --verbose-ci + +RUN apt-get install -y python3-pip && \ + pip3 install --ignore-installed pyyaml && \ + python3 ./docker/scripts/generateTemplate.py ./docker/scripts/enb_parameters.yaml + +#start from scratch for target executable +FROM ubuntu:bionic as oai-enb +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + software-properties-common \ + libsctp1 \ + libnettle6 \ + libblas3 \ + libatlas3-base \ + libconfig9 \ + openssl \ + net-tools \ + dnsutils \ + iputils-ping \ + iproute2 \ + iperf \ + libyaml-0-2 && \ + # Install UHD driver from ettus ppa + # At time of writing, it is 3.14 + add-apt-repository ppa:ettusresearch/uhd --yes && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + python \ + libusb-1.0-0 \ + libuhd003 \ + uhd-host && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /opt/oai-enb/bin +COPY --from=enb-build /oai-ran/targets/bin/lte-softmodem.Rel15 . +COPY --from=enb-build /oai-ran/docker/scripts/enb_entrypoint.sh entrypoint.sh + +WORKDIR /usr/local/lib/ +COPY --from=enb-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . +COPY --from=enb-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . +COPY --from=enb-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . +COPY --from=enb-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . +COPY --from=enb-build /oai-ran/targets/bin/libcoding.so . +COPY --from=enb-build /oai-ran/targets/bin/libparams_libconfig.so . +COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . +COPY --from=enb-build /oai-ran/cmake_targets/ran_build/build/liboai_iqplayer.so . +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" +RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" + +COPY --from=enb-build /usr/local/lib/libprotobuf-c.so.1 . + +RUN ldconfig + +# Copy the relevant configuration files for eNB +WORKDIR /opt/oai-enb/etc +COPY --from=enb-build /oai-ran/docker/etc . + +WORKDIR /opt/oai-enb + +# 2152 --> S1U, GTP/UDP +# 36412 --> S1C, SCTP/UDP +# 36422 --> X2C, SCTP/UDP +EXPOSE 2152/udp 36412/udp 36422/udp +#EXPOSE 22100/tcp # ? +#EXPOSE 50000/udp # IF5 / ORI (control) +#EXPOSE 50001/udp # IF5 / ECPRI (data) + +#This is a patch to support IP extraction from interface names and host names +COPY enb_entrypoint.sh /opt/oai-enb/bin/entrypoint.sh + +ENTRYPOINT ["/opt/oai-enb/bin/entrypoint.sh"] +CMD ["/opt/oai-enb/bin/lte-softmodem.Rel15", "-O", "/opt/oai-enb/etc/enb.conf"] + diff --git a/oai/Dockerfile.gNB.ubuntu18 b/oai/Dockerfile.gNB.ubuntu18 new file mode 100644 index 0000000..3e1a97e --- /dev/null +++ b/oai/Dockerfile.gNB.ubuntu18 @@ -0,0 +1,138 @@ +FROM ubuntu:bionic AS builder + +ARG version=2021.w28 + +ENV VERSION=$version + +ARG NEEDED_GIT_PROXY +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +#install developers pkg/repo +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + #gcc needed for build_oai + build-essential \ + psmisc \ + git \ + xxd \ + #unzip is needed for protobuf + unzip + +# In some network environments, GIT proxy is required +RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi" + +RUN apt-get update && apt-get install git +#create the WORKDIR +WORKDIR /oai-ran +RUN git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git . +RUN git checkout $VERSION + +#run build_oai -I to get the builder image +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p log && \ + ./build_oai -I -w USRP + +#run build_oai to build the target image +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p log && \ + ./build_oai --gNB --ninja -w USRP --verbose-ci + +#debug +RUN ldconfig -v +RUN ldd /oai-ran/targets/bin/nr-softmodem.Rel15 +RUN ls -lst /oai-ran/targets/bin +RUN ls -lst /oai-ran/cmake_targets/ran_build/build/*.so + +#start from scratch for target executable +FROM ubuntu:bionic as oai +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + software-properties-common \ + libsctp1 \ + libnettle6 \ + libblas3 \ + libatlas3-base \ + libconfig9 \ + openssl \ + net-tools \ + dnsutils \ + iproute2 \ + iputils-ping \ + libyaml-0-2 && \ + # Install UHD driver from ettus ppa + # At time of writing, it is 3.14 + add-apt-repository ppa:ettusresearch/uhd --yes && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + python \ + libusb-1.0-0 \ + libuhd003 \ + uhd-host && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /opt/oai/bin +COPY --from=builder /oai-ran/targets/bin/nr-softmodem.Rel15 . + +WORKDIR /usr/local/lib/ +COPY --from=builder /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . +COPY --from=builder /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . +COPY --from=builder /oai-ran/targets/bin/librfsimulator.so.Rel15 . +COPY --from=builder /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . +COPY --from=builder /oai-ran/targets/bin/libcoding.so . +COPY --from=builder /oai-ran/targets/bin/libparams_libconfig.so . +COPY --from=builder /oai-ran/cmake_targets/ran_build/build/libdfts.so . +COPY --from=builder /oai-ran/cmake_targets/ran_build/build/libldpc.so . +COPY --from=builder /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so . +COPY --from=builder /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so . +COPY --from=builder /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so . + +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" +RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" +COPY --from=builder /usr/local/lib/libprotobuf-c.so.1 . + +RUN ldconfig +#debug +#RUN ldd /opt/oai/bin/nr-softmodem.Rel15 +#RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15 +#RUN ldd /usr/local/lib/libtcp_bridge_oai.so.Rel15 +#RUN ldd /usr/local/lib/librfsimulator.so.Rel15 +#RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15 +#RUN ldd /usr/local/lib/libcoding.so +#RUN ldd /usr/local/lib/libparams_libconfig.so +#RUN ldd /usr/local/lib/libdfts.so +#RUN ldd /usr/local/lib/libldpc.so +#RUN ldd /usr/local/lib/libldpc_optim.so +#RUN ldd /usr/local/lib/libldpc_optim8seg.so +#RUN ldd /usr/local/lib/libldpc_orig.so + +# Copy the relevant configuration files for gNB +WORKDIR /opt/oai/etc +COPY --from=builder /oai-ran/ci-scripts/conf_files/gnb.* ./ + +WORKDIR /opt/oai +#EXPOSE 2152/udp # S1U, GTP/UDP +#EXPOSE 22100/tcp # ? +#EXPOSE 36412/udp # S1C, SCTP/UDP +#EXPOSE 36422/udp # X2C, SCTP/UDP +#EXPOSE 50000/udp # IF5 / ORI (control) +#EXPOSE 50001/udp # IF5 / ECPRI (data) + +#This is a patch to support IP extraction from interface names and host names +ENV IFACES="GNB_NG GNB_NGU" +ENV HOSTNAMES="AMF_NG " +ENV CONFIG_TEMPLATE="/opt/oai/etc/gnb.conf" +COPY gnb_entrypoint.sh /opt/oai/bin/entrypoint.sh + +CMD ["/opt/oai/bin/nr-softmodem", "-O", "/opt/oai/etc/gnb.conf"] +ENTRYPOINT ["/opt/oai/bin/entrypoint.sh"] diff --git a/oai/Dockerfile.lteUE.ubuntu18 b/oai/Dockerfile.lteUE.ubuntu18 new file mode 100644 index 0000000..c3e753d --- /dev/null +++ b/oai/Dockerfile.lteUE.ubuntu18 @@ -0,0 +1,107 @@ +FROM ubuntu:bionic AS enb-build + +ARG version=2021.w28 + +ENV VERSION=$version + +ARG NEEDED_GIT_PROXY +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +#install developers pkg/repo +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + #gcc needed for build_oai + build-essential \ + psmisc \ + git \ + xxd \ + #unzip is needed for protobuf + unzip + +# In some network environments, GIT proxy is required +RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi" + +RUN apt-get update && apt-get install git +#create the WORKDIR +WORKDIR /oai-ran +RUN git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git . +RUN git checkout $VERSION + +#run build_oai to build the target image +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p log && \ + ./build_oai --UE --ninja -w USRP --verbose-ci + +RUN apt-get install -y python3-pip && \ + pip3 install --ignore-installed pyyaml && \ + python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_parameters.yaml && \ + python3 ./docker/scripts/generateTemplate.py ./docker/scripts/lte_ue_sim_parameters.yaml + +#start from scratch for target executable +FROM ubuntu:bionic as oai-lte-ue +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + software-properties-common \ + libsctp1 \ + libnettle6 \ + liblapacke \ + libatlas3-base \ + libconfig9 \ + openssl \ + net-tools \ + dnsutils \ + iputils-ping \ + iproute2 \ + iperf \ + libyaml-0-2 && \ + # Install UHD driver from ettus ppa + # At time of writing, it is 3.14 + add-apt-repository ppa:ettusresearch/uhd --yes && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + python \ + libusb-1.0-0 \ + libuhd003 \ + uhd-host && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /opt/oai-lte-ue/bin +COPY --from=lte-ue-build /oai-ran/targets/bin/lte-uesoftmodem.Rel15 . +COPY --from=lte-ue-build /oai-ran/docker/scripts/lte_ue_entrypoint.sh entrypoint.sh +COPY --from=lte-ue-build /oai-ran/targets/bin/conf2uedata . +COPY --from=lte-ue-build /oai-ran/targets/bin/nvram . +COPY --from=lte-ue-build /oai-ran/targets/bin/usim . + +WORKDIR /usr/local/lib/ +COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . +COPY --from=lte-ue-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . +COPY --from=lte-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . +COPY --from=lte-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . +COPY --from=lte-ue-build /oai-ran/targets/bin/libcoding.so . +COPY --from=lte-ue-build /oai-ran/targets/bin/libparams_libconfig.so . +COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libSIMU.so . +COPY --from=lte-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" +RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" + +COPY --from=lte-ue-build /usr/local/lib/libprotobuf-c.so.1 . + +RUN ldconfig + +# Copy the relevant configuration files for UE +WORKDIR /opt/oai-lte-ue/etc +COPY --from=lte-ue-build /oai-ran/docker/etc . + +WORKDIR /opt/oai-lte-ue +CMD ["/opt/oai-lte-ue/bin/lte-uesoftmodem.Rel15"] +ENTRYPOINT ["/opt/oai-lte-ue/bin/entrypoint.sh"] diff --git a/oai/Dockerfile.nrUE.ubuntu18 b/oai/Dockerfile.nrUE.ubuntu18 new file mode 100644 index 0000000..e18b753 --- /dev/null +++ b/oai/Dockerfile.nrUE.ubuntu18 @@ -0,0 +1,120 @@ +FROM ubuntu:bionic AS enb-build + +ARG version=2021.w28 + +ENV VERSION=$version + +ARG NEEDED_GIT_PROXY +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +#install developers pkg/repo +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + #gcc needed for build_oai + build-essential \ + psmisc \ + git \ + xxd \ + #unzip is needed for protobuf + unzip + +# In some network environments, GIT proxy is required +RUN /bin/bash -c "if [[ -v NEEDED_GIT_PROXY ]]; then git config --global http.proxy $NEEDED_GIT_PROXY; fi" + +RUN apt-get update && apt-get install git +#create the WORKDIR +WORKDIR /oai-ran +RUN git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git . +RUN git checkout $VERSION + +#run build_oai to build the target image +RUN /bin/sh oaienv && \ + cd cmake_targets && \ + mkdir -p log && \ + ./build_oai --nrUE --ninja -w USRP --verbose-ci + +# debug +#RUN ldconfig -v +#RUN ldd /oai-ran/targets/bin/nr-uesoftmodem.Rel15 +#RUN ls -lst /oai-ran/targets/bin +#RUN ls -lst /oai-ran/cmake_targets/ran_build/build/*.so + +#start from scratch for target executable +FROM ubuntu:bionic as oai-nr-ue +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + software-properties-common \ + libsctp1 \ + libnettle6 \ + liblapacke \ + libatlas3-base \ + libconfig9 \ + openssl \ + net-tools \ + dnsutils \ + iputils-ping \ + iproute2 \ + libyaml-0-2 && \ + # Install UHD driver from ettus ppa + # At time of writing, it is 3.14 + add-apt-repository ppa:ettusresearch/uhd --yes && \ + apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install --yes \ + python \ + libusb-1.0-0 \ + libuhd003 \ + uhd-host && \ + rm -rf /var/lib/apt/lists/* + +WORKDIR /opt/oai-nr-ue/bin +COPY --from=nr-ue-build /oai-ran/targets/bin/nr-uesoftmodem.Rel15 . + +WORKDIR /usr/local/lib/ +COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_eth_transpro.so.Rel15 . +COPY --from=nr-ue-build /oai-ran/targets/bin/libtcp_bridge_oai.so.Rel15 . +COPY --from=nr-ue-build /oai-ran/targets/bin/librfsimulator.so.Rel15 . +COPY --from=nr-ue-build /oai-ran/targets/bin/liboai_usrpdevif.so.Rel15 . +COPY --from=nr-ue-build /oai-ran/targets/bin/libcoding.so . +COPY --from=nr-ue-build /oai-ran/targets/bin/libparams_libconfig.so . +COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libdfts.so . +COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc.so . +COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim.so . +COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_optim8seg.so . +COPY --from=nr-ue-build /oai-ran/cmake_targets/ran_build/build/libldpc_orig.so . +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_eth_transpro.so.Rel15 /usr/local/lib/liboai_transpro.so" +RUN /bin/bash -c "ln -s /usr/local/lib/liboai_usrpdevif.so.Rel15 /usr/local/lib/liboai_device.so" +RUN /bin/bash -c "ln -s /usr/local/lib/librfsimulator.so.Rel15 /usr/local/lib/librfsimulator.so" + +COPY --from=nr-ue-build /usr/local/lib/libprotobuf-c.so.1 . + +RUN ldconfig +#debug +#RUN ldd /opt/oai-nr-ue/bin/nr-uesoftmodem.Rel15 +#RUN ldd /usr/local/lib/liboai_eth_transpro.so.Rel15 +#RUN ldd /usr/local/lib/libtcp_bridge_oai.so.Rel15 +#RUN ldd /usr/local/lib/librfsimulator.so.Rel15 +#RUN ldd /usr/local/lib/liboai_usrpdevif.so.Rel15 +#RUN ldd /usr/local/lib/libcoding.so +#RUN ldd /usr/local/lib/libparams_libconfig.so +#RUN ldd /usr/local/lib/libdfts.so +#RUN ldd /usr/local/lib/libldpc.so +#RUN ldd /usr/local/lib/libldpc_optim.so +#RUN ldd /usr/local/lib/libldpc_optim8seg.so +#RUN ldd /usr/local/lib/libldpc_orig.so + +# Copy the relevant configuration files for eNB +WORKDIR /opt/oai-nr-ue/etc +COPY --from=nr-ue-build /oai-ran/ci-scripts/conf_files/ue.* . + +WORKDIR /opt/oai-nr-ue +#CMD ["/opt/oai-nr-ue/bin/nr-uesoftmodem", "-O", "/opt/oai-nr-ue/etc/enb.conf"] +#ENTRYPOINT ["/opt/oai-nr-ue/bin/entrypoint.sh"] +CMD ["sleep", "infinity"] diff --git a/oai/Makefile b/oai/Makefile index 087b5ac..7831ea0 100644 --- a/oai/Makefile +++ b/oai/Makefile @@ -2,7 +2,14 @@ REGISTRY=docker.io IMAGE=openverso/oai -TAG=2021.w30 +TAG=2021.w31 + +gnb: + docker build -t ${IMAGE}-gnb:${TAG} . --build-arg version=${TAG} -f Dockerfile.gNB.ubuntu18 --push + + +enb: + docker build -t ${IMAGE}-enb:${TAG} . --build-arg version=${TAG} -f Dockerfile.eNB.ubuntu18 --push build: docker build -t ${IMAGE}:${TAG} . diff --git a/oai/configs/orig/generic-lte-epc/UE_config.xml b/oai/configs/orig/generic-lte-epc/UE_config.xml new file mode 100644 index 0000000..c8d57f9 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/UE_config.xml @@ -0,0 +1,112 @@ + + + 4 + + + + + + + + + + + + + + + + + + + + + + 33 + + + + 38 + + + + 5 + + + + 7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/oai/configs/orig/generic-lte-epc/benetel-4g.conf b/oai/configs/orig/generic-lte-epc/benetel-4g.conf new file mode 100644 index 0000000..aab3876 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/benetel-4g.conf @@ -0,0 +1,285 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( { mcc = 222; mnc = 01; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF4p5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2655000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 100; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 90; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -10; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + //SSB central frequency of NR secondary cell group (for ENDC NSA) + nr_scg_ssb_freq = 640000; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "yes"; + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.196"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.18.196"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.1"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + prach_dtx_threshold = 150; + } +); + +RUs = ( + { + //local_if_name = "enp129s0f0"; + local_if_name = "dpdk"; + sdr_addrs = "softmodem -m 2048 -l 35 -n 2 -b 0000:81:00.3 --proc-type auto --file-prefix ggg -- -p 0x1"; + #sdr_addrs = "softmodem -l 8 -n 2 -- -p 0x2"; + #remote_address = "127.0.0.2"; + #local_address = "127.0.0.1"; + #local_portc = 50000; + #remote_portc = 50000; + #local_portd = 50001; + #remote_portd = 50001; + local_rf = "no" + tr_preference = "raw_if4p5" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + eNB_instances = [0]; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + #parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/benetel-5g.conf b/oai/configs/orig/generic-lte-epc/benetel-5g.conf new file mode 100644 index 0000000..b260eaa --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/benetel-5g.conf @@ -0,0 +1,302 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + #plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + plmn_list = ({mcc = 208; mnc = 99; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is is the central frequency of SSB + absoluteFrequencySSB = 640000; //641272 + dl_frequencyBand = 78; + # the carrier frequency is assumed to be in the middle of the carrier, i.e. dl_absoluteFrequencyPointA_kHz + dl_carrierBandwidth*12*SCS_kHz/2 + dl_absoluteFrequencyPointA = 638728; //640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 4; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 74; + zeroCorrelationZoneConfig = 13; + #preambleReceivedTargetPower = -118; + #preambleReceivedTargetPower = -104; + preambleReceivedTargetPower = -108; +#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 = 2; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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 = 1; + 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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + + msg3_DeltaPreamble = 1; + #p0_NominalWithGrant =-90; + p0_NominalWithGrant =-118; + +# pucch-ConfigCommon setup : +# pucchGroupHopping +# 0 = neither, 1= group hopping, 2=sequence hopping + pucchGroupHopping = 0; + hoppingId = 40; + #p0_nominal = -90; + p0_nominal = -118; +# ssb_PositionsInBurs_BitmapPR +# 1=short, 2=medium, 3=long + ssb_PositionsInBurst_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# 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 = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + #ssPBCH_BlockPower = 10; + ssPBCH_BlockPower = -35; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.150"; #"192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "127.0.0.1"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.187/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.187/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "no" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + //clock_src = "internal"; + clock_src = "external"; + + local_if_name = "dpdk"; + sdr_addrs = "softmodem -m 2048 -l 34 -n 3 -b 0000:81:00.2 --proc-type auto --file-prefix hhh -- -p 0x1"; + remote_address = "127.0.0.2"; + local_address = "127.0.0.1"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + tr_preference = "raw_if4p5" + + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + //parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_DISABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/cu.lte.conf b/oai/configs/orig/generic-lte-epc/cu.lte.conf new file mode 100644 index 0000000..38d3f5e --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/cu.lte.conf @@ -0,0 +1,221 @@ +Active_eNBs = ( "eNB-CU-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = ( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-CU-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( { mcc = 208; mnc = 95; mnc_length = 2; } ) + + nr_cellid = 12345678L + + tr_s_preference = "f1" + + local_s_if_name = "lo"; + remote_s_address = "192.168.12.4"; + local_s_address = "192.168.12.45"; + local_s_portc = 501; + remote_s_portc = 500; + local_s_portd = 601; + remote_s_portd = 600; + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNodeB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2665000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 50; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnable = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* + srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =; + */ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff= 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + /* + rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; + */ + + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( + { + ipv4 = "127.0.1.10"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : { + ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.1.30/24"; + ENB_INTERFACE_NAME_FOR_S1U = "lo"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.1.30/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.1.30/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +log_config = { + global_log_level = "info"; + global_log_verbosity = "medium"; + pdcp_log_level = "info"; + pdcp_log_verbosity = "high"; + rrc_log_level = "info"; + rrc_log_verbosity = "medium"; + flexran_agent_log_level = "info"; + flexran_agent_log_verbosity = "medium"; + gtp_log_level = "info"; + gtp_log_verbosity = "medium"; +}; + +NETWORK_CONTROLLER : { + FLEXRAN_ENABLED = "yes"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; diff --git a/oai/configs/orig/generic-lte-epc/du.lte.band7.10MHz.if4p5.conf b/oai/configs/orig/generic-lte-epc/du.lte.band7.10MHz.if4p5.conf new file mode 100644 index 0000000..8e786be --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/du.lte.band7.10MHz.if4p5.conf @@ -0,0 +1,119 @@ +Active_eNBs = ( "eNB-Eurecom-DU"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_CU_ID = 0xe00; + + eNB_name = "eNB-Eurecom-DU"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( { mcc = 208; mnc = 95; mnc_length = 2; } ) + + nr_cellid = 12345678L + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2665000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + } + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "f1"; + local_n_if_name = "lo"; + remote_n_address = "127.0.0.4"; + local_n_address = "127.0.0.3"; + local_n_portc = 500; + remote_n_portc = 501; + local_n_portd = 600; + remote_n_portd = 601; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes"; + nb_tx = 1; + nb_rx = 1; + att_tx = 10; + att_rx = 10; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + } +); + +log_config = { + global_log_level = "info"; + global_log_verbosity = "medium"; + hw_log_level = "info"; + hw_log_verbosity = "medium"; + phy_log_level = "info"; + phy_log_verbosity = "medium"; + mac_log_level = "info"; + mac_log_verbosity = "high"; + rlc_log_level = "info"; + rlc_log_verbosity = "medium"; + flexran_agent_log_level = "info"; + flexran_agent_log_verbosity = "medium"; +}; + +NETWORK_CONTROLLER : { + FLEXRAN_ENABLED = "yes"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; diff --git a/oai/configs/orig/generic-lte-epc/enb.band13.tm1.50PRB.emtc.conf b/oai/configs/orig/generic-lte-epc/enb.band13.tm1.50PRB.emtc.conf new file mode 100644 index 0000000..67044f3 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band13.tm1.50PRB.emtc.conf @@ -0,0 +1,454 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2;} ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNodeB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 13; + downlink_frequency = 751000000L; + uplink_frequency_offset = 31000000; + Nid_cell = 0; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 110; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 1; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = "n64"; #64 + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = "rf128"; #128 + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = "ms1000"; + ue_TimersAndConstants_t301 = "ms1000"; + ue_TimersAndConstants_t310 = "ms1000"; + ue_TimersAndConstants_t311 = "ms10000"; + ue_TimersAndConstants_n310 = "n20"; + ue_TimersAndConstants_n311 = "n1"; + ue_TransmissionMode = "tm1"; + + # eMTC Parameters + emtc_parameters : + { + eMTC_configured = 1; + #hyperSFN_r13 = 0; + #eDRX_Allowed_r13 = 0; + #q_QualMinRSRQ_CE_r13 = ; + + #SIB1 + schedulingInfoSIB1_BR_r13 = 4; + + #system_info_value_tag_SI = + #( + # { + # systemInfoValueTagSi_r13 = 0; + # } + #); + + cellSelectionInfoCE_r13 = "ENABLE"; + q_RxLevMinCE_r13 = -70; + bandwidthReducedAccessRelatedInfo_r13 = "ENABLE" + si_WindowLength_BR_r13 = "ms20"; #0 + si_RepetitionPattern_r13 = "everyRF"; #0 + + scheduling_info_br = + ( + { + si_Narrowband_r13 = 8; + si_TBS_r13 = 5; + } + ); + + fdd_DownlinkOrTddSubframeBitmapBR_r13 = "subframePattern40-r13"; + fdd_DownlinkOrTddSubframeBitmapBR_val_r13 = 0xFFFFFFFFFF; + startSymbolBR_r13 = 2; + si_HoppingConfigCommon_r13 = "off"; #1; # Note: 1==OFF ! + si_ValidityTime_r13 = "true"; #0 + + freqHoppingParametersDL_r13 = "DISABLE" + mpdcch_pdsch_HoppingNB_r13 = "nb2"; #0 + interval_DLHoppingConfigCommonModeA_r13 = "interval-FDD-r13" + interval_DLHoppingConfigCommonModeA_r13_val = 0; + interval_DLHoppingConfigCommonModeB_r13 = "interval-FDD-r13" + interval_DLHoppingConfigCommonModeB_r13_val = 0; + mpdcch_pdsch_HoppingOffset_r13 = 1; + + + # SIB23 + frame_type = "FDD"; + preambleTransMax_CE_r13 = 10; #6 + + rach_numberOfRA_Preambles = 60; #14 + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -110; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 64; + rach_maxHARQ_Msg3Tx = 4; + + # max size for this array is 4 + rach_CE_LevelInfoList_r13 = + ( + { + firstPreamble_r13 = 60; + lastPreamble_r13 = 63; + ra_ResponseWindowSize_r13 = 20; #0 + mac_ContentionResolutionTimer_r13 = 80; #0 + rar_HoppingConfig_r13 = "off"; #1; + } + ); + + # BCCH CONFIG + bcch_modificationPeriodCoeff = 2; + + #PCCH Config + pcch_default_PagingCycle = "rf128"; #128 + pcch_nB = "oneT"; + + #PRACH Config + prach_root = 89; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 1; + + #PDSCH Config Common + pdsch_referenceSignalPower = -27 + pdsch_p_b = 0; + + + # PUSCH Config Common + pusch_n_SB = 1; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_enable64QAM = "DISABLE"; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + + # PUCCH Config Common + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 32; + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + pucch_deltaF_Format1 = "deltaF0"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + msg3_delta_Preamble = 6; + + + prach_ConfigCommon_v1310 = "ENABLE"; + + mpdcch_startSF_CSS_RA_r13 = "fdd-r13"; + mpdcch_startSF_CSS_RA_r13_val = "v1"; #0 + prach_HoppingOffset_r13 = 0; + + + pdsch_maxNumRepetitionCEmodeA_r13 = "r16"; #0 + pusch_repetitionLevelCEmodeA_r13 = "l1"; #0 + #pdsch_maxNumRepetitionCEmodeB_r13 = "r384"; # NULL - 2 + + pusch_maxNumRepetitionCEmodeA_r13 = "r8"; #0 + #pusch_maxNumRepetitionCEmodeB_r13 = "r768"; #4 #NULL + #pusch_HoppingOffset_v1310 = 5; #NULL + + # max size for this array is 3 + rsrp_range_list = + ( + { + rsrp_range_br = 0; + } + ); + + # max size for this array is 4 + prach_parameters_ce_r13 = + ( + { + prach_config_index_br = 3; + prach_freq_offset_br = 2; + prach_StartingSubframe_r13 = 2; + maxNumPreambleAttemptCE_r13 = 10; #6 + numRepetitionPerPreambleAttempt_r13 = 1; #0 + mpdcch_NumRepetition_RA_r13 = 1; #0 + prach_HoppingConfig_r13 = 0; #1 + max_available_narrow_band = [3]; + } + ); + + n1PUCCH_AN_InfoList_r13 = + ( + { + pucch_info_value = 33; + } + ); + + + ue_TimersAndConstants_t300 = "ms1000"; + ue_TimersAndConstants_t301 = "ms400"; + ue_TimersAndConstants_t310 = "ms50"; + ue_TimersAndConstants_t311 = "ms30000"; + ue_TimersAndConstants_n310 = "n1"; + ue_TimersAndConstants_n311 = "n10"; + ue_TransmissionMode = "tm1"; + + pcch_config_v1310 : + { + paging_narrowbands_r13 = 1; + mpdcch_numrepetition_paging_r13 = "r1"; #0 + #nb_v1310 = "one256thT"; #2 + } + + + pucch_NumRepetitionCE_Msg4_Level0_r13 = "n1"; #0 + #pucch_NumRepetitionCE_Msg4_Level1_r13 = "n2"; #1 + #pucch_NumRepetitionCE_Msg4_Level2_r13 = "n16"; #2 + #pucch_NumRepetitionCE_Msg4_Level3_r13 = "n32"; #3 + + sib2_freq_hoppingParameters_r13 : + { + #sib2_mpdcch_pdsch_hoppingNB_r13 = "nb2"; #0 + #sib2_interval_DLHoppingConfigCommonModeA_r13 = "FDD"; # choice -> (0, FDD) (1, TDD) + #sib2_interval_DLHoppingConfigCommonModeA_r13_val = "int1"; + #sib2_interval_DLHoppingConfigCommonModeB_r13 = "FDD"; # choice -> (0, FDD) (1, TDD) + #sib2_interval_DLHoppingConfigCommonModeB_r13_val = "int2"; + + sib2_interval_ULHoppingConfigCommonModeA_r13 = "FDD"; # choice -> (0, FDD) (1, TDD) + sib2_interval_ULHoppingConfigCommonModeA_r13_val = "int4"; #2 +# sib2_interval_ULHoppingConfigCommonModeB_r13 = "FDD"; # choice -> (0, FDD) (1, TDD) +# sib2_interval_ULHoppingConfigCommonModeB_r13_val = "int2"; #0 + +# sib2_mpdcch_pdsch_hoppingOffset_r13 = 1; + } + + rach_preamblesGroupAConfig = "DISABLE"; + + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + + } + + + +} + + + + + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "127.0.0.3"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + + ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; + ENB_INTERFACE_NAME_FOR_S1U = "lo"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [13]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + } +); + +log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/enb.band38.tm1.100PRB.usrpx310.conf b/oai/configs/orig/generic-lte-epc/enb.band38.tm1.100PRB.usrpx310.conf new file mode 100644 index 0000000..e044c18 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band38.tm1.100PRB.usrpx310.conf @@ -0,0 +1,195 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 38; + downlink_frequency = 2600000000L; + uplink_frequency_offset = 0; + Nid_cell = 0; + N_RB_DL = 100; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 32; + rx_gain = 116; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -16; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -90; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -108; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); diff --git a/oai/configs/orig/generic-lte-epc/enb.band38.tm1.25PRB.iris030.conf b/oai/configs/orig/generic-lte-epc/enb.band38.tm1.25PRB.iris030.conf new file mode 100644 index 0000000..5a54762 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band38.tm1.25PRB.iris030.conf @@ -0,0 +1,272 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 38; + downlink_frequency = 2580000000L; + uplink_frequency_offset = 0; + Nid_cell = 10; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 52; # [~50 for DEV-FE, ~30 for CBRS-FE] + rx_gain = 115; # [115 for DEV-FE, 90 for CBRS-FE] + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 32; + pdsch_referenceSignalPower = -30; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -70; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -96; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "127.0.0.20"; + ipv6 = "fe80::d65d:dfff:fe1d:f4d4"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eno1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.10/8"; + ENB_INTERFACE_NAME_FOR_S1U = "enp5s0"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.10/8"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.10/8"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + #sdr_addrs = "RF3C000025"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/enb.band38.tm1.usrpx310.conf b/oai/configs/orig/generic-lte-epc/enb.band38.tm1.usrpx310.conf new file mode 100644 index 0000000..27826e5 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band38.tm1.usrpx310.conf @@ -0,0 +1,195 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 38; + downlink_frequency = 2600000000L; + uplink_frequency_offset = 0; + Nid_cell = 0; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 32; + rx_gain = 116; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -16; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -90; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -108; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); diff --git a/oai/configs/orig/generic-lte-epc/enb.band42.tm1.25PRB.iris030.conf b/oai/configs/orig/generic-lte-epc/enb.band42.tm1.25PRB.iris030.conf new file mode 100644 index 0000000..5df0f10 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band42.tm1.25PRB.iris030.conf @@ -0,0 +1,272 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 1; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 42; + downlink_frequency = 3500000000L; + uplink_frequency_offset = 0; + Nid_cell = 10; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 48; # [~50 for DEV-FE, ~30 for CBRS-FE] + rx_gain = 80; # [115 for DEV-FE, 90 for CBRS-FE] + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 32; + pdsch_referenceSignalPower = -30; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -70; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -96; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "127.0.0.20"; + ipv6 = "fe80::d65d:dfff:fe1d:f4d4"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eno1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.10/8"; + ENB_INTERFACE_NAME_FOR_S1U = "enp5s0"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.10/8"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.10/8"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 44; #apparently this is being used as tx_gain... + att_rx = 0; #apparently max_rxgain - att_rx -83 is what is used for rx_gain (at least for 5 MHz) + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 107; + eNB_instances = [0]; + #sdr_addrs = "RF3E000025"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/enb.band7.master.conf b/oai/configs/orig/generic-lte-epc/enb.band7.master.conf new file mode 100644 index 0000000..cb50ccc --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band7.master.conf @@ -0,0 +1,300 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe01; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 1; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "enp0s31f6"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.188/23"; + ENB_INTERFACE_NAME_FOR_S1U = "enp0s31f6"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.188/23"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.188/23"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + } +); + +DU = ( + { + DU_INTERFACE_NAME_FOR_F1U = "lo"; + DU_IPV4_ADDRESS_FOR_F1U = "127.0.0.1/16"; + DU_PORT_FOR_F1U = 22100; + F1_U_DU_TRANSPORT_TYPE = "TCP"; + } + ); + +CU = ( + { + CU_INTERFACE_NAME_FOR_F1U = "lo"; + CU_IPV4_ADDRESS_FOR_F1U = "127.0.0.1"; //Address to search the DU + CU_PORT_FOR_F1U = 22100; + F1_U_CU_TRANSPORT_TYPE = "TCP"; // One of TCP/UDP/SCTP + DU_TYPE = "LTE"; + }//, +// { +// CU_INTERFACE_NAME_FOR_F1U = "eth0"; +// CU_IPV4_ADDRESS_FOR_F1U = "10.64.93.142"; //Address to search the DU +// CU_PORT_FOR_F1U = 2211; +// F1_U_CU_TRANSPORT_TYPE = "TCP"; // One of TCP/UDP/SCTP +// DU_TYPE = "WiFi"; +// } + ); + + CU_BALANCING = "ALL"; + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/enb.band7.tm1.100PRB.usrpx310.conf b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.100PRB.usrpx310.conf new file mode 100644 index 0000000..245e4ec --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.100PRB.usrpx310.conf @@ -0,0 +1,229 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2680000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 100; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.148"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth6"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth6"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 116; + eNB_instances = [0]; + sdr_addrs = "type=x300"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="medium"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/enb.band7.tm1.25PRB.iris030.conf b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.25PRB.iris030.conf new file mode 100644 index 0000000..86b481f --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.25PRB.iris030.conf @@ -0,0 +1,272 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2660000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 10; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 52; # [~50 for DEV-FE, ~30 for CBRS-FE] + rx_gain = 115; # [115 for DEV-FE, 90 for CBRS-FE] + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 32; + pdsch_referenceSignalPower = -30; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -70; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -96; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "127.0.0.20"; + ipv6 = "fe80::d65d:dfff:fe1d:f4d4"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.10/8"; + ENB_INTERFACE_NAME_FOR_S1U = "lo"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.10/8"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.10/8"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + sdr_addrs = "RF3E000028"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/enb.band7.tm1.25PRB.b210.conf.tpl b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.25PRB.usrpb210.replay.conf similarity index 86% rename from oai/configs/enb.band7.tm1.25PRB.b210.conf.tpl rename to oai/configs/orig/generic-lte-epc/enb.band7.tm1.25PRB.usrpb210.replay.conf index fb8e1fc..1eb5da6 100644 --- a/oai/configs/enb.band7.tm1.25PRB.b210.conf.tpl +++ b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.25PRB.usrpb210.replay.conf @@ -13,14 +13,12 @@ eNBs = eNB_name = "eNB-Eurecom-LTEBox"; // Tracking area code, 0x0000 and 0xfffe are reserved values - tracking_area_code = ${TAC}; - plmn_list = ( { mcc = ${MCC}; mnc = ${MNC}; mnc_length = 2; } ); + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); tr_s_preference = "local_mac" - // In seconds - rrc_inactivity_threshold = 30; - ////////// Physical parameters: component_carriers = ( @@ -42,7 +40,7 @@ eNBs = nb_antennas_tx = 1; nb_antennas_rx = 1; tx_gain = 90; - rx_gain = 125; + rx_gain = 115; pbch_repetition = "FALSE"; prach_root = 0; prach_config_index = 0; @@ -174,7 +172,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "${MME_ADDR}"; + mme_ip_address = ( { ipv4 = "192.168.13.11"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -187,15 +185,18 @@ eNBs = enable_x2 = "no"; t_reloc_prep = 1000; /* unit: millisecond */ tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ NETWORK_INTERFACES : { - ENB_INTERFACE_NAME_FOR_S1_MME = "${CTRL_BIND_INTERFACE}"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "${CTRL_BIND_ADDR}"; - ENB_INTERFACE_NAME_FOR_S1U = "${DATA_BIND_INTERFACE}"; - ENB_IPV4_ADDRESS_FOR_S1U = "${DATA_BIND_ADDR}"; + ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.13.10/24"; + ENB_INTERFACE_NAME_FOR_S1U = "lo"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.13.10/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - ENB_IPV4_ADDRESS_FOR_X2C = "${CTRL_BIND_ADDR}"; + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.13.10/24"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } @@ -207,8 +208,6 @@ MACRLCs = ( tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; phy_test_mode = 0; - #puSch10xSnr = 160; - #puCch10xSnr = 160; } ); @@ -234,26 +233,25 @@ RUs = ( } ); -THREAD_STRUCT = ( - { - #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - #parallel_config = "PARALLEL_SINGLE_THREAD"; - parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; - #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" - worker_config = "WORKER_ENABLE"; - } -); - NETWORK_CONTROLLER : { FLEXRAN_ENABLED = "no"; - FLEXRAN_INTERFACE_NAME = "eth0"; - FLEXRAN_IPV4_ADDRESS = "CI_MME_IP_ADDR"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; FLEXRAN_PORT = 2210; FLEXRAN_CACHE = "/mnt/oai_agent_cache"; FLEXRAN_AWAIT_RECONF = "no"; }; +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); +/* log_config : { global_log_level ="info"; @@ -271,4 +269,23 @@ NETWORK_CONTROLLER : rrc_log_level ="info"; rrc_log_verbosity ="medium"; }; +*/ + + log_config : + { + global_log_level ="crit"; + global_log_verbosity ="crit"; + hw_log_level ="crit"; + hw_log_verbosity ="crit"; + phy_log_level ="crit"; + phy_log_verbosity ="crit"; + mac_log_level ="crit"; + mac_log_verbosity ="crit"; + rlc_log_level ="crit"; + rlc_log_verbosity ="crit"; + pdcp_log_level ="crit"; + pdcp_log_verbosity ="crit"; + rrc_log_level ="crit"; + rrc_log_verbosity ="crit"; + }; diff --git a/docs/open5gs-and-oai-enb-usrp/oai-config/band7.tm1.25PRB.b210.conf b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210-d2d.conf similarity index 84% rename from docs/open5gs-and-oai-enb-usrp/oai-config/band7.tm1.25PRB.b210.conf rename to oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210-d2d.conf index 116eec7..a929c43 100644 --- a/docs/open5gs-and-oai-enb-usrp/oai-config/band7.tm1.25PRB.b210.conf +++ b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210-d2d.conf @@ -1,4 +1,4 @@ -Active_eNBs = ( "eNB-Eurecom-LTEBox"); +Active_eNBs = ( "eNB_Eurecom_LTEBox"); # Asn1_verbosity, choice in: none, info, annoying Asn1_verbosity = "none"; @@ -10,17 +10,15 @@ eNBs = cell_type = "CELL_MACRO_ENB"; - eNB_name = "eNB-Eurecom-LTEBox"; + eNB_name = "eNB_Eurecom_LTEBox"; // Tracking area code, 0x0000 and 0xfffe are reserved values - tracking_area_code = ${TAC}; - plmn_list = ( { mcc = ${MCC}; mnc = ${MNC}; mnc_length = 2; } ); + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); tr_s_preference = "local_mac" - // In seconds - rrc_inactivity_threshold = 30; - ////////// Physical parameters: component_carriers = ( @@ -36,7 +34,7 @@ eNBs = downlink_frequency = 2685000000L; uplink_frequency_offset = -120000000; Nid_cell = 0; - N_RB_DL = 25; + N_RB_DL = 50; Nid_cell_mbsfn = 0; nb_antenna_ports = 1; nb_antennas_tx = 1; @@ -50,7 +48,7 @@ eNBs = prach_zero_correlation = 1; prach_freq_offset = 2; pucch_delta_shift = 1; - pucch_nRB_CQI = 0; + pucch_nRB_CQI = 1; pucch_nCS_AN = 0; pucch_n1_AN = 0; pdsch_referenceSignalPower = -27; @@ -105,40 +103,40 @@ eNBs = ue_TimersAndConstants_n310 = 20; ue_TimersAndConstants_n311 = 1; ue_TransmissionMode = 1; - + //Parameters for SIB18 - rxPool_sc_CP_Len = "normal"; - rxPool_sc_Period = "sf40"; - rxPool_data_CP_Len = "normal"; - rxPool_ResourceConfig_prb_Num = 20; - rxPool_ResourceConfig_prb_Start = 5; - rxPool_ResourceConfig_prb_End = 44; + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf80"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 3; + rxPool_ResourceConfig_prb_Start = 4; + rxPool_ResourceConfig_prb_End = 9; rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; - rxPool_ResourceConfig_offsetIndicator_choice = 0; - rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; - rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; - rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_offsetIndicator_choice = 3; + rxPool_ResourceConfig_subframeBitmap_present = "prBs16"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "1100110011001100"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 16; rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; /* rxPool_dataHoppingConfig_hoppingParameter = 0; rxPool_dataHoppingConfig_numSubbands = "ns1"; rxPool_dataHoppingConfig_rbOffset = 0; rxPool_commTxResourceUC-ReqAllowed = "TRUE"; -*/ +*/ // Parameters for SIB19 discRxPool_cp_Len = "normal" - discRxPool_discPeriod = "rf32" - discRxPool_numRetx = 1; + discRxPool_discPeriod = "rf64" + discRxPool_numRetx = 1; discRxPool_numRepetition = 2; - discRxPool_ResourceConfig_prb_Num = 5; - discRxPool_ResourceConfig_prb_Start = 3; - discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_prb_Num = 3; + discRxPool_ResourceConfig_prb_Start = 4; + discRxPool_ResourceConfig_prb_End = 5; discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; - discRxPool_ResourceConfig_offsetIndicator_choice = 0; - discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; - discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; - discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_offsetIndicator_choice = 4; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs16"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "1001100110011001"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 16; discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; - + } ); @@ -174,7 +172,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "${MME_ADDR}"; + mme_ip_address = ( { ipv4 = "127.0.0.3"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -187,15 +185,18 @@ eNBs = enable_x2 = "no"; t_reloc_prep = 1000; /* unit: millisecond */ tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ NETWORK_INTERFACES : { - ENB_INTERFACE_NAME_FOR_S1_MME = "${ENB_BIND_INTERFACE}"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "${ENB_BIND_ADDR}"; - ENB_INTERFACE_NAME_FOR_S1U = "${ENB_BIND_INTERFACE}"; - ENB_IPV4_ADDRESS_FOR_S1U = "${ENB_BIND_ADDR}"; + ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.4/24"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - ENB_IPV4_ADDRESS_FOR_X2C = "${ENB_BIND_ADDR}"; + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } @@ -206,9 +207,6 @@ MACRLCs = ( num_cc = 1; tr_s_preference = "local_L1"; tr_n_preference = "local_RRC"; - phy_test_mode = 0; - #puSch10xSnr = 160; - #puCch10xSnr = 160; } ); @@ -237,23 +235,12 @@ RUs = ( THREAD_STRUCT = ( { #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" - parallel_config = "PARALLEL_SINGLE_THREAD"; - #parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" worker_config = "WORKER_ENABLE"; } ); -NETWORK_CONTROLLER : -{ - FLEXRAN_ENABLED = "no"; - FLEXRAN_INTERFACE_NAME = "eth0"; - FLEXRAN_IPV4_ADDRESS = "CI_MME_IP_ADDR"; - FLEXRAN_PORT = 2210; - FLEXRAN_CACHE = "/mnt/oai_agent_cache"; - FLEXRAN_AWAIT_RECONF = "no"; -}; - log_config : { global_log_level ="info"; diff --git a/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210.conf b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210.conf new file mode 100644 index 0000000..43288ba --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210.conf @@ -0,0 +1,315 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "10.64.93.19"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eno1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "10.64.45.62/23"; + ENB_INTERFACE_NAME_FOR_S1U = "eno1"; + ENB_IPV4_ADDRESS_FOR_S1U = "10.64.45.62/23"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + } +); + +DU = ( + { + DU_INTERFACE_NAME_FOR_F1U = "lo"; + DU_IPV4_ADDRESS_FOR_F1U = "127.0.0.1/16"; + DU_PORT_FOR_F1U = 22100; + F1_U_DU_TRANSPORT_TYPE = "TCP"; + } + ); + +CU = ( + { + CU_INTERFACE_NAME_FOR_F1U = "lo"; + CU_IPV4_ADDRESS_FOR_F1U = "127.0.0.1"; //Address to search the DU + CU_PORT_FOR_F1U = 22100; + F1_U_CU_TRANSPORT_TYPE = "TCP"; // One of TCP/UDP/SCTP + DU_TYPE = "LTE"; + }//, +// { +// CU_INTERFACE_NAME_FOR_F1U = "eth0"; +// CU_IPV4_ADDRESS_FOR_F1U = "10.64.93.142"; //Address to search the DU +// CU_PORT_FOR_F1U = 2211; +// F1_U_CU_TRANSPORT_TYPE = "TCP"; // One of TCP/UDP/SCTP +// DU_TYPE = "WiFi"; +// } + ); + + CU_BALANCING = "ALL"; + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +/* +#example config for rfsimulator +rfsimulator : +{ + serveraddr = "enb"; + serverport = "4043"; + options = ("saviq"); + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; +*/ + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf new file mode 100644 index 0000000..92f2d4e --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/enb.band7.tm1.50PRB.usrpb210_ue_expansion.conf @@ -0,0 +1,228 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONE"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + ue_multiple_max = 20; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.19/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.19/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.19/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpn300.conf new file mode 100644 index 0000000..ef171bf --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpn300.conf @@ -0,0 +1,286 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 92; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is pointA + 23 PRBs@120kHz SCS (same as initial BWP) + absoluteFrequencySSB = 2071241; + dl_frequencyBand = 257; + # this is 27.900 GHz + dl_absoluteFrequencyPointA = 2070833; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 3; + dl_carrierBandwidth = 32; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=32 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 3; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_3 = 0; #for mixed slot + initialDLBWPmappingType_3 = 0; + initialDLBWPstartSymbolAndLength_3 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 261; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 3; + ul_carrierBandwidth = 32; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 3; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 52; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 7; +#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 = 3; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 7; +#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 = 3, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 4; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 3; + ssb_PositionsInBurst_Bitmap = 0x0001000100010001L; + +# 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 = 3; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 3; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 3; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; + if_freq = 5124520000L; + clock_src = "external"; + time_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpx300.conf b/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpx300.conf new file mode 100644 index 0000000..360b75c --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.32PRB.usrpx300.conf @@ -0,0 +1,270 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is pointA + 23 PRBs@120kHz SCS (same as initial BWP) + absoluteFrequencySSB = 2071241; + dl_frequencyBand = 257; + # this is 27.900 GHz + dl_absoluteFrequencyPointA = 2070833; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 3; + dl_carrierBandwidth = 32; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 3; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 257; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 3; + ul_carrierBandwidth = 32; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 3; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 52; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 7; +#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 = 3; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 7; +#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 = 3, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 4; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 3; + ssb_PositionsInBurst_Bitmap = 0x0001000100010001L; + +# 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 = 3; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 3; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 3; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; + if_freq = 5124520000L; + clock_src = "external"; + time_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.66PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.66PRB.usrpn300.conf new file mode 100644 index 0000000..e018aef --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band257.tm1.66PRB.usrpn300.conf @@ -0,0 +1,265 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is pointA + 23 PRBs@120kHz SCS (same as initial BWP) + absoluteFrequencySSB = 2078315; + dl_frequencyBand = 257; + # this is 27.900 GHz + dl_absoluteFrequencyPointA = 2077499; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 3; + dl_carrierBandwidth = 66; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 3; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot (but is not used here) + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 257; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 3; + ul_carrierBandwidth = 66; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 3; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot (not used here) + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + + 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_PR = 3; + 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 = 3; + + + #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 = 6; + nrofDownlinkSlots = 30; + nrofDownlinkSymbols = 0; + nrofUplinkSlots = 10; + nrofUplinkSymbols = 0; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "type=n300"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band261.tm1.32PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band261.tm1.32PRB.usrpn300.conf new file mode 100644 index 0000000..834060b --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band261.tm1.32PRB.usrpn300.conf @@ -0,0 +1,285 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 311; mnc = 480; mnc_length = 3;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is pointA + 23 PRBs@120kHz SCS (same as initial BWP) + absoluteFrequencySSB = 2071241; + dl_frequencyBand = 261; + # this is 27.900 GHz + dl_absoluteFrequencyPointA = 2070833; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 3; + dl_carrierBandwidth = 32; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=32 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 3; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 261; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 3; + ul_carrierBandwidth = 32; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 3; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 52; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 7; +#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 = 3; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 7; +#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 = 3, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 4; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 3; + ssb_PositionsInBurst_Bitmap = 0x0001000100010001L; + +# 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 = 3; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 3; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 3; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; + if_freq = 5124520000L; + clock_src = "external"; + time_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpn300.conf new file mode 100644 index 0000000..2028f40 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpn300.conf @@ -0,0 +1,277 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 2150 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 433096; + dl_frequencyBand = 66; + # this is 2150 MHz + dl_absoluteFrequencyPointA = 430000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 66; + ul_absoluteFrequencyPointA = 350000; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + # if_freq = 3700000000L; + # if_offset = 1000000; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpx300.conf b/oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpx300.conf new file mode 100644 index 0000000..35c4924 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band66.tm1.106PRB.usrpx300.conf @@ -0,0 +1,277 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 2150 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 433096; + dl_frequencyBand = 66; + # this is 2150 MHz + dl_absoluteFrequencyPointA = 430000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 66; + ul_absoluteFrequencyPointA = 350000; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "type=x300"; + clock_src = "external"; + # if_freq = 3700000000L; + # if_offset = 1000000; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.30kHz,usrpb2x0.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.30kHz,usrpb2x0.conf new file mode 100644 index 0000000..f90adae --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.30kHz,usrpb2x0.conf @@ -0,0 +1,279 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 10; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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; +#oneHalf (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 = 0; + # 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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.12.196"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.slave.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.slave.conf new file mode 100644 index 0000000..aa61153 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.106PRB.slave.conf @@ -0,0 +1,280 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.12.188"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "enp0s31f6"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.75/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.75/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.12.75/23"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.20.2,mgmt_addr=192.168.20.2"; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.slave.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.slave.conf new file mode 100644 index 0000000..a0ee7f8 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.slave.conf @@ -0,0 +1,280 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 642016; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 217; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13559; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot (but not used here) + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 217; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13559; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#oneHalf (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 +#0 = 839, 1 = 139 + prach_RootSequenceIndex_PR = 1; + 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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 63; # this is SS=7 L=5 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 91; # this is SS=7 L=7 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 15; + +# 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 = 6; + nrofDownlinkSlots = 2; + nrofDownlinkSymbols = 1; + nrofUplinkSlots = 7; + nrofUplinkSymbols = 7; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.12.188"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "enp0s31f6"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.75/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.75/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.12.75/23"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.20.2,mgmt_addr=192.168.20.2"; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf new file mode 100644 index 0000000..d08234a --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.PTRS.usrpx300.conf @@ -0,0 +1,324 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + + # downlinkConfigCommon + # frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; + # subcarrierSpacing + # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; + # subcarrierSpacing + # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_3 = 0; #for mixed slot + initialDLBWPmappingType_3 = 0; + initialDLBWPstartSymbolAndLength_3 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; + # subcarrierSpacing + # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; + # subcarrierSpacing + # 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; + #prach_msg1_FDM + #0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; + #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 = 4; + #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; + #oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + # Dedicated Serving Cell Configuration + servingCellConfigDedicated = ( + { + # DL PTRS related parameters. + # 3GPP TS 38.331 PTRS-DownlinkConfig + + # frequencyDensity value range: 1-276 + dl_ptrsFreqDensity0_0 = 25; + dl_ptrsFreqDensity1_0 = 75; + + # timeDensity value range: 0-29 + dl_ptrsTimeDensity0_0 = 2; + dl_ptrsTimeDensity1_0 = 4; + dl_ptrsTimeDensity2_0 = 10; + + # epre_Ratio + # 0 = "00", 1 = "01" in TS 38.214, table 4.1-2 + dl_ptrsEpreRatio_0 = 0; + + # resourceElementOffset + # 0 = offset01 1 = offset02, 2 = offset02 + # 3GPP TS 38.331 PTRS-DownlinkConfig; TS 38.211 sec. 7.4.1.2.2 + dl_ptrsReOffset_0 = 0; + + # UL PTRS related parameters. + # 3GPP TS 38.331 PTRS-UplinkConfig + + # frequencyDensity value range: 1-276 + ul_ptrsFreqDensity0_0 = 25; + ul_ptrsFreqDensity1_0 = 75; + + # timeDensity value range: 0-29 + ul_ptrsTimeDensity0_0 = 2; + ul_ptrsTimeDensity1_0 = 4; + ul_ptrsTimeDensity2_0 = 10; + + # resourceElementOffset + # 0 = offset01 1 = offset02, 2 = offset02 + # TS 38.331 PTRS-UplinkConfig; TS 38.211 sec. 6.4.1.2.2.1 + ul_ptrsReOffset_0 = 0; + + # maxNrofPorts + # 0 = n1, 1 = n2 + ul_ptrsMaxPorts_0 = 0; + + # ptrs-Power + # 0 = p00, 1 = p01, 2 = p10, 3 = p11 + #ul_ptrsPower_0 = 0; + } + ); + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "type=x300"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config : +{ + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpb210.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpb210.conf new file mode 100644 index 0000000..f22d5f7 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpb210.conf @@ -0,0 +1,273 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3; +#oneHalf (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 +#0 = 839, 1 = 139 + prach_RootSequenceIndex_PR = 1; + 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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + #bf_weights = [0x00007fff, 0x00007fff]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "type=b200"; + #clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpn300.conf new file mode 100644 index 0000000..b57cb00 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpn300.conf @@ -0,0 +1,274 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP), points to Subcarrier 0 of RB#10 of SSB block + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=33 (Start RB of SSB block),L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6358; #6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; #12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; # used for (full) DL slot + initialDLBWPmappingType_0 = 0; # 0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; # this is SS=1,L=13 + + initialDLBWPk0_1 = 0; # used for DL part mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; # this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6358;#6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for (full) UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for UL part mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 0x1; + +# 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 50; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + #bf_weights = [0x00007fff, 0x00007fff]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpx300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpx300.conf new file mode 100644 index 0000000..8621858 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.106PRB.usrpx300.conf @@ -0,0 +1,275 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP). points to Subcarrier 0 of RB#10 of SSB block + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=33 (Start RB of SSB block),L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6358; #6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6358; #6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; // -25 dBm/RE is the maximum measured power from USRP corresponding to att_tx = 0 dB + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + ##beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ##beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + # bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "type=x300"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpn300.conf new file mode 100644 index 0000000..335c3d9 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpn300.conf @@ -0,0 +1,290 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP). Points to Subcarrier 0 of RB#10 of SSB block + absoluteFrequencySSB = 642016;#642364; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 217; + #initialDownlinkBWP + #genericParameters + # this is RBstart=74 (Start RB of SSB block),L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13549; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 217; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13549; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; + +# ssb_periodicityServingCell +# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1 + ssb_periodicityServingCell = 1; + +# 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.12.108"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.188/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.188/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.12.188/23"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +#rfsimulator : +#{ +# serveraddr = "server"; +# serverport = "4043"; +# options = ("chanmod"); +# modelname = "AWGN"; +#}; + +log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpx300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpx300.conf new file mode 100644 index 0000000..bf75edc --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.217PRB.usrpx300.conf @@ -0,0 +1,265 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 642016; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 217; + #initialDownlinkBWP + #genericParameters + # this is RBstart=74,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13549; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 217; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13549; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 255; + +# 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + sdr_addrs = "type=x300"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpb210.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpb210.conf new file mode 100644 index 0000000..b4f40d2 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpb210.conf @@ -0,0 +1,277 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 640288; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 24; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_3 = 0; #for mixed slot + initialDLBWPmappingType_3 = 0; + initialDLBWPstartSymbolAndLength_3 = 57; #this is SS=1,L=5 + + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 24; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "type=b200"; + #"addr=192.168.18.207"; + #"addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpn300.conf new file mode 100644 index 0000000..639b118 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpn300.conf @@ -0,0 +1,275 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 640288; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 24; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_3 = 0; #for mixed slot + initialDLBWPmappingType_3 = 0; + initialDLBWPstartSymbolAndLength_3 = 57; #this is SS=1,L=5 + + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 24; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpx300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpx300.conf new file mode 100644 index 0000000..b93b530 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.24PRB.usrpx300.conf @@ -0,0 +1,275 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 640288; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 24; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_3 = 0; #for mixed slot + initialDLBWPmappingType_3 = 0; + initialDLBWPstartSymbolAndLength_3 = 57; #this is SS=1,L=5 + + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 24; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + sdr_addrs = "type=x300"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.273PRB.usrpn300.conf b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.273PRB.usrpn300.conf new file mode 100644 index 0000000..50276c3 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/gnb.band78.tm1.273PRB.usrpn300.conf @@ -0,0 +1,266 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 642016; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #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=74,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13549; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #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 = 13549; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 255; + +# 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpb210.conf b/oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpb210.conf new file mode 100644 index 0000000..b13962a --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpb210.conf @@ -0,0 +1,62 @@ +log_config = { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="debug"; + mac_log_verbosity ="medium"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="debug"; + rrc_log_verbosity ="full"; +}; + + +#L1s = ( +# { +# num_cc = 1; +# tr_n_preference = "nfapi"; +# local_n_if_name = "eno1"; +# remote_n_address = "192.168.1.28"; +# local_n_address = "192.168.1.74"; +# local_n_portc = 50000; +# remote_n_portc = 50001; +# local_n_portd = 50010; +# remote_n_portd = 50011; +# } +#); + + +L1s = ( + { + num_cc = 1; + tr_n_preference = "nfapi"; + #local_n_if_name = "enp0s31f6"; + #remote_n_address = "10.0.0.2"; + #local_n_address = "10.0.0.1"; + local_n_if_name = "lo"; + remote_n_address = "127.0.0.2"; + local_n_address = "127.0.0.1"; + local_n_portc = 50000; + remote_n_portc = 50001; + local_n_portd = 50010; + remote_n_portd = 50011; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 90 + att_rx = 0; + bands = [7,38,42,43]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + } +); diff --git a/oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpx300.conf b/oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpx300.conf new file mode 100644 index 0000000..5cfd4dc --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/oaiL1.nfapi.usrpx300.conf @@ -0,0 +1,46 @@ +log_config = { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="debug"; + mac_log_verbosity ="medium"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="debug"; + rrc_log_verbosity ="full"; +}; + + + +L1s = ( + { + num_cc = 1; + tr_n_preference = "nfapi"; + local_n_if_name = "lo"; + remote_n_address = "127.0.0.2"; // vnf addr + local_n_address = "127.0.0.1"; // pnf addr + local_n_portc = 50000; // pnf p5 port [!] + remote_n_portc = 50001; // vnf p5 port + local_n_portd = 50010; // pnf p7 port + remote_n_portd = 50011; // vnf p7 port + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + sdr_addrs = "type=x300"; // USRP type + } +); diff --git a/oai/configs/orig/generic-lte-epc/rcc.band38.tm1.if4p5.50PRB.lo.conf b/oai/configs/orig/generic-lte-epc/rcc.band38.tm1.if4p5.50PRB.lo.conf new file mode 100644 index 0000000..e05c64b --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rcc.band38.tm1.if4p5.50PRB.lo.conf @@ -0,0 +1,233 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF4p5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 1; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 38; + downlink_frequency = 2580000000L; + uplink_frequency_offset = 0; + Nid_cell = 0; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 32; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -104; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "127.0.0.3"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; + ENB_INTERFACE_NAME_FOR_S1U = "lo"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_if_name = "lo"; + remote_address = "127.0.0.2"; + local_address = "127.0.0.1"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "no" + tr_preference = "udp_if4p5" + nb_tx = 2 + nb_rx = 2 + att_tx = 0 + att_rx = 0; + eNB_instances = [0]; + is_slave = "no"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; diff --git a/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi-STUB.conf b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi-STUB.conf new file mode 100644 index 0000000..1ef71be --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi-STUB.conf @@ -0,0 +1,218 @@ +Active_eNBs = ( "eNB_Eurecom_LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + #N_RB_DL = 50; + N_RB_DL = 25; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 115; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + #pdsch_referenceSignalPower = -27; + pdsch_referenceSignalPower = -30; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + #rach_preambleInitialReceivedTargetPower = -108; + rach_preambleInitialReceivedTargetPower = -104; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.56.102"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "vboxnet0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.56.1/24"; + ENB_INTERFACE_NAME_FOR_S1U = "vboxnet0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.56.1/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.56.1/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + local_s_if_name = "eno1"; + remote_s_address = "10.0.0.2"; + #local_s_address = "192.168.1.78"; + local_s_address = "10.0.0.1"; + local_s_portc = 50001; + remote_s_portc = 50000; + local_s_portd = 50011; + remote_s_portd = 50010; + tr_s_preference = "nfapi"; + tr_n_preference = "local_RRC"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="debug"; + mac_log_verbosity ="high"; + rlc_log_level ="debug"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="high"; + }; + + diff --git a/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi.conf b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi.conf new file mode 100644 index 0000000..9ce9f28 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.50PRB.nfapi.conf @@ -0,0 +1,255 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + #ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + #ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; + #ENB_INTERFACE_NAME_FOR_S1U = "lo"; + #ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24"; + #ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + #ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; + #ENB_PORT_FOR_X2C = 36422; # Spec 36422 + + ENB_INTERFACE_NAME_FOR_S1_MME = "enp0s31f6"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.188/24"; + ENB_INTERFACE_NAME_FOR_S1U = "enp0s31f6"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.188/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.188/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + local_s_if_name = "lo:"; + remote_s_address = "127.0.0.1"; + local_s_address = "127.0.0.2"; + local_s_portc = 50001; + remote_s_portc = 50000; + local_s_portd = 50011; + remote_s_portd = 50010; + tr_s_preference = "nfapi"; + tr_n_preference = "local_RRC"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.conf b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.conf new file mode 100644 index 0000000..30cb852 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.conf @@ -0,0 +1,233 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF4p5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 100; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.19/24"; + ENB_INTERFACE_NAME_FOR_S1U = "eth0"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.19/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_if_name = "eth1"; + remote_address = "10.10.10.111"; + local_address = "10.10.10.153"; + local_portc = 50002; + remote_portc = 50002; + local_portd = 50003; + remote_portd = 50003; + local_rf = "no" + tr_preference = "udp_if4p5" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + eNB_instances = [0]; + is_slave = "no" + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; diff --git a/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.lo.conf b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.lo.conf new file mode 100644 index 0000000..519305b --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rcc.band7.tm1.if4p5.50PRB.lo.conf @@ -0,0 +1,234 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 208; mnc = 93; mnc_length = 2; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF4p5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2685000000L; + uplink_frequency_offset = -120000000; + Nid_cell = 0; + N_RB_DL = 50; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 2; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -104; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -108; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + mbms_dedicated_serving_cell = "ENABLE" + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "127.0.0.3"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; + ENB_INTERFACE_NAME_FOR_S1U = "lo"; + ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "127.0.0.2/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_if_name = "lo"; + remote_address = "127.0.0.2"; + local_address = "127.0.0.1"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "no" + tr_preference = "udp_if4p5" + nb_tx = 2 + nb_rx = 2 + att_tx = 0 + att_rx = 0; + eNB_instances = [0]; + is_slave = "no"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="debug"; + phy_log_verbosity ="medium"; + mac_log_level ="debug"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; diff --git a/oai/configs/orig/generic-lte-epc/rcc.band78.tm1.106PRB.nfapi.conf b/oai/configs/orig/generic-lte-epc/rcc.band78.tm1.106PRB.nfapi.conf new file mode 100644 index 0000000..e541607 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rcc.band78.tm1.106PRB.nfapi.conf @@ -0,0 +1,291 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + + ); + + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + + +MACRLCs = ( + { + num_cc = 1; + local_s_if_name = "lo:"; + remote_s_address = "127.0.0.1"; // pnf addr [!] + local_s_address = "127.0.0.2"; // vnf addr + local_s_portc = 50001; // vnf p5 port + remote_s_portc = 50000; // pnf p5 port [!] + local_s_portd = 50011; // vnf p7 port [!] + remote_s_portd = 50010; // pnf p7 port [!] + tr_s_preference = "nfapi"; + tr_n_preference = "local_RRC"; + } +) + + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/rcc_b38_if5_ENDC.conf b/oai/configs/orig/generic-lte-epc/rcc_b38_if5_ENDC.conf new file mode 100644 index 0000000..9b611b3 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rcc_b38_if5_ENDC.conf @@ -0,0 +1,243 @@ +Active_eNBs = ( "eNB_Eurecom_VCO_B38"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB_Eurecom_VCO_B38"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ( { mcc = 222; mnc = 01; mnc_length = 2; } ); + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 1; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 38; + downlink_frequency = 2585000000L; + uplink_frequency_offset = 0; + Nid_cell = 0; + N_RB_DL = 100; + Nid_cell_mbsfn = 0; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 5; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = 10; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -106; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.150"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; + t_dc_overall = 2000; + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "bond0"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.203/24"; + ENB_INTERFACE_NAME_FOR_S1U = "bond0"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.18.203/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.18.203/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + scheduler_mode = "fairRR"; + puSch10xSnr = 100; + puCch10xSnr = 100; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + prach_dtx_threshold = 150; + } +); + +RUs = ( + { + local_if_name = "bond0"; + remote_address = "192.168.18.222"; + local_address = "192.168.18.203"; + local_portc = 50000; + remote_portc = 55444; + local_portd = 52001; + remote_portd = 52183; + local_rf = "no" + tr_preference = "udp_ecpri_if5" + nb_tx = 1 + nb_rx = 1 + att_tx = 5 + att_rx = 0; + eNB_instances = [0]; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "127.0.0.1"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; diff --git a/oai/configs/orig/generic-lte-epc/rru.oaisim.conf b/oai/configs/orig/generic-lte-epc/rru.oaisim.conf new file mode 100644 index 0000000..3dc8e7d --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rru.oaisim.conf @@ -0,0 +1,46 @@ +RUs = ( + { + local_if_name = "lo"; + remote_address = "127.0.0.1" + local_address = "127.0.0.2"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "yes" + tr_preference = "udp_if4p5"; + nb_tx = 2; + nb_rx = 2; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + bands = [7,13]; + is_slave = "no"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; + diff --git a/oai/configs/orig/generic-lte-epc/rru.oaisim.tdd.conf b/oai/configs/orig/generic-lte-epc/rru.oaisim.tdd.conf new file mode 100644 index 0000000..494086d --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/rru.oaisim.tdd.conf @@ -0,0 +1,46 @@ +RUs = ( + { + local_if_name = "lo"; + remote_address = "127.0.0.1" + local_address = "127.0.0.2"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "yes" + tr_preference = "udp_if4p5"; + nb_tx = 1; + nb_rx = 1; + max_pdschReferenceSignalPower = -29; + max_rxgain = 120; + bands = [38]; + is_slave = "no"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; + diff --git a/oai/configs/orig/generic-lte-epc/testing_eNB_band13.conf b/oai/configs/orig/generic-lte-epc/testing_eNB_band13.conf new file mode 100644 index 0000000..1d8f61e --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/testing_eNB_band13.conf @@ -0,0 +1,285 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + ////////// Identification parameters: + eNB_ID = 0xe01; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( + { mcc = 311; mnc = 480; mnc_length = 3; } + ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + nb_antenna_ports = 1; + ue_TransmissionMode = 1; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 13; + downlink_frequency = 751000000L; + uplink_frequency_offset = 31000000; + Nid_cell = 0; + N_RB_DL = 25; //100; + Nid_cell_mbsfn = 0; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + prach_root = 0; + tx_gain = 90; + rx_gain = 115; + pbch_repetition = "FALSE"; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -26; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; +/* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; +*/ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + //SSB central frequency of NR secondary cell group (for ENDC NSA) + nr_scg_ssb_freq = 2071241; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + enable_measurement_reports = "yes"; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.199/24"; + + ENB_INTERFACE_NAME_FOR_S1U = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.18.199/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.18.199/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="debug"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +THREAD_STRUCT = ( + { + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + worker_config = "WORKER_ENABLE"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -26; + max_rxgain = 130; + eNB_instances = [0]; + clock_src = "external"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/testing_enb.conf b/oai/configs/orig/generic-lte-epc/testing_enb.conf new file mode 100644 index 0000000..6df2527 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/testing_enb.conf @@ -0,0 +1,286 @@ +Active_eNBs = ( "eNB-Eurecom-LTEBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + ////////// Identification parameters: + eNB_ID = 0xe01; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "eNB-Eurecom-LTEBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ( + { mcc = 222; mnc = 01; mnc_length = 2; } + ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + nb_antenna_ports = 1; + ue_TransmissionMode = 1; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = 7; + downlink_frequency = 2680000000L; //2655000000L; + uplink_frequency_offset = -120000000; + + Nid_cell = 0; + N_RB_DL = 25; //100; + Nid_cell_mbsfn = 0; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + prach_root = 0; + tx_gain = 90; + rx_gain = 115; + pbch_repetition = "FALSE"; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -29; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -96; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; +/* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; +*/ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + //SSB central frequency of NR secondary cell group (for ENDC NSA) + nr_scg_ssb_freq = 641272; + + } + ); + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + enable_measurement_reports = "yes"; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.199/24"; + + ENB_INTERFACE_NAME_FOR_S1U = "eth1"; + ENB_IPV4_ADDRESS_FOR_S1U = "192.168.18.199/24"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + + ENB_IPV4_ADDRESS_FOR_X2C = "192.168.18.199/24"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="debug"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +THREAD_STRUCT = ( + { + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + worker_config = "WORKER_ENABLE"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 118; + eNB_instances = [0]; + clock_src = "internal"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="high"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="high"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="high"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/orig/generic-lte-epc/testing_gnb.conf b/oai/configs/orig/generic-lte-epc/testing_gnb.conf new file mode 100644 index 0000000..7d21dce --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/testing_gnb.conf @@ -0,0 +1,295 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -100; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 24; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# 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 = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "192.168.69.131"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_NGU = "eth0"; + GNB_IPV4_ADDRESS_FOR_NGU = "192.168.18.198/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + //parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +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", "nea2" ); + + # preferred integrity algorithms + # the first one of the list that an UE supports in chosen + # valid values: nia0, nia1, nia2, nia3 + integrity_algorithms = ( "nia0" ); +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/testing_gnb_24PRB.conf b/oai/configs/orig/generic-lte-epc/testing_gnb_24PRB.conf new file mode 100644 index 0000000..463b7d6 --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/testing_gnb_24PRB.conf @@ -0,0 +1,307 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 12 PRBs@30kHz SCS + absoluteFrequencySSB = 640288; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 24; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=4 //5 (4 is for 43, 5 is for 57) + initialDLBWPstartSymbolAndLength_3 = 57; //43; //57; + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 24; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6325; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -100; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=13 + initialULBWPstartSymbolAndLength_0 = 41; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# 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 = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + //parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-lte-epc/testing_gnb_n310.conf b/oai/configs/orig/generic-lte-epc/testing_gnb_n310.conf new file mode 100644 index 0000000..767459a --- /dev/null +++ b/oai/configs/orig/generic-lte-epc/testing_gnb_n310.conf @@ -0,0 +1,282 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -90; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 24; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# 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 = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = 0; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.196/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.196/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.196/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + time_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-nr-5gc/cu_gnb.conf b/oai/configs/orig/generic-nr-5gc/cu_gnb.conf new file mode 100644 index 0000000..483fd34 --- /dev/null +++ b/oai/configs/orig/generic-nr-5gc/cu_gnb.conf @@ -0,0 +1,288 @@ +Active_gNBs = ( "gNB-CU-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; +Num_Threads_PUSCH = 8; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-CU-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + nr_cellid = 12345678L + + tr_s_preference = "f1" + + local_s_if_name = "lo"; + remote_s_address = "127.0.0.3"; + local_s_address = "127.0.0.4"; + local_s_portc = 501; + remote_s_portc = 500; + local_s_portd = 601; + remote_s_portd = 600; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +# RUs = ( +# { +# local_rf = "yes" +# nb_tx = 1 +# nb_rx = 1 +# att_tx = 0 +# att_rx = 0; +# bands = [7]; +# max_pdschReferenceSignalPower = -27; +# max_rxgain = 75; +# eNB_instances = [0]; +# ##beamforming 1x2 matrix: 1 layer x 2 antennas +# bf_weights = [0x00007fff, 0x0000]; +# ##beamforming 1x4 matrix: 1 layer x 4 antennas +# #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; +# ## beamforming 2x2 matrix: +# # bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; +# ## beamforming 4x4 matrix: +# #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + +# sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; +# clock_src = "external"; +# } +# ); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="debug"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="debug"; + rrc_log_verbosity ="medium"; + f1ap_log_level ="info"; + f1ap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-nr-5gc/du_gnb.conf b/oai/configs/orig/generic-nr-5gc/du_gnb.conf new file mode 100644 index 0000000..dcb3010 --- /dev/null +++ b/oai/configs/orig/generic-nr-5gc/du_gnb.conf @@ -0,0 +1,302 @@ +Active_gNBs = ( "gNB-Eurecom-DU"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; +Num_Threads_PUSCH = 8; + +gNBs = +( + { + ////////// Identification parameters: + gNB_CU_ID = 0xe00; + +# cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-DU"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + nr_cellid = 12345678L + +# tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "f1"; + local_n_if_name = "lo"; + remote_n_address = "127.0.0.4"; + local_n_address = "127.0.0.3"; + local_n_portc = 500; + remote_n_portc = 501; + local_n_portd = 600; + remote_n_portd = 601; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + ##beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ##beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + # bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="debug"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + f1ap_log_level ="debug"; + f1ap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-nr-5gc/gnb.band78.tm1.106PRB.usrpn300.gtp-itti.conf b/oai/configs/orig/generic-nr-5gc/gnb.band78.tm1.106PRB.usrpn300.gtp-itti.conf new file mode 100644 index 0000000..753bd0b --- /dev/null +++ b/oai/configs/orig/generic-nr-5gc/gnb.band78.tm1.106PRB.usrpn300.gtp-itti.conf @@ -0,0 +1,304 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 100; + + plmn_list = ({ + mcc = 208; + mnc = 93; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0x010203; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6366; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 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 = "192.168.199.223"; + ipv6 = "192:168:199::223"; + active = "yes"; + preference = "ipv4"; + } + ); + + + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_NG_AMF = "eno1"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.199.222/24"; + GNB_INTERFACE_NAME_FOR_NGU = "enx000ec6c0a3ac"; + GNB_IPV4_ADDRESS_FOR_NGU = "192.168.10.100/24"; + GNB_PORT_FOR_NGU = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.20.20/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="info"; + ngap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-nr-5gc/gnb.sa.band41.fr1.106PRB.usrpb210.conf b/oai/configs/orig/generic-nr-5gc/gnb.sa.band41.fr1.106PRB.usrpb210.conf new file mode 100644 index 0000000..1a28ebb --- /dev/null +++ b/oai/configs/orig/generic-nr-5gc/gnb.sa.band41.fr1.106PRB.usrpb210.conf @@ -0,0 +1,300 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ + mcc = 208; + mnc = 99; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0x1; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + nr_cellid = 12345678L; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 518670; + dl_frequencyBand = 41; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 514854; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 41; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "192.168.70.132"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.70.129/24"; + GNB_INTERFACE_NAME_FOR_NGU = "demo-oai"; + GNB_IPV4_ADDRESS_FOR_NGU = "192.168.70.129/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.conf b/oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.conf new file mode 100644 index 0000000..7180386 --- /dev/null +++ b/oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.conf @@ -0,0 +1,300 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ + mcc = 208; + mnc = 99; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0x1; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + nr_cellid = 12345678L; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "192.168.70.132"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.70.129/24"; + GNB_INTERFACE_NAME_FOR_NGU = "demo-oai"; + GNB_IPV4_ADDRESS_FOR_NGU = "192.168.70.129/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf b/oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf new file mode 100644 index 0000000..9892f97 --- /dev/null +++ b/oai/configs/orig/generic-nr-5gc/gnb.sa.band78.fr1.106PRB.usrpb210.sabox.conf @@ -0,0 +1,328 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ + mcc = 450; + mnc = 05; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0xd143a5; // 0 false, else true + } + ); + + }); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0; + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0; + initialDLBWPmappingType_1 = 0; + #this is SS=2,L=12 + initialDLBWPstartSymbolAndLength_1 = 53; + + initialDLBWPk0_2 = 0; + initialDLBWPmappingType_2 = 0; + #this is SS=1,L=12 + initialDLBWPstartSymbolAndLength_2 = 54; + + initialDLBWPk0_3 = 0; + initialDLBWPmappingType_3 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_3 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 55; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "192.168.5.233"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "CI_FR1_CTL_ENB_IP_ADDR"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.5.200/24"; + GNB_INTERFACE_NAME_FOR_NGU = "eth0"; + GNB_IPV4_ADDRESS_FOR_NGU = "192.168.5.200/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.5.200/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/gnb-image/gnb.band261.tm1.32PRB.usrpn300.conf b/oai/configs/orig/gnb-image/gnb.band261.tm1.32PRB.usrpn300.conf new file mode 100644 index 0000000..a4d9985 --- /dev/null +++ b/oai/configs/orig/gnb-image/gnb.band261.tm1.32PRB.usrpn300.conf @@ -0,0 +1,289 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 311; mnc = 480; mnc_length = 3;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is pointA + 23 PRBs@120kHz SCS (same as initial BWP) + absoluteFrequencySSB = 2071241; + dl_frequencyBand = 261; + # this is 27.900 GHz + dl_absoluteFrequencyPointA = 2070833; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 3; + dl_carrierBandwidth = 32; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=32 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 3; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_3 = 0; #for mixed slot + initialDLBWPmappingType_3 = 0; + initialDLBWPstartSymbolAndLength_3 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 261; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 3; + ul_carrierBandwidth = 32; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 8525; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 3; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 52; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 7; +#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR +#0=oneeighth,1=onefourth,2=half,3=one,4=two,5=four,6=eight,7=sixteen + ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 7; +#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 = 3, + +# restrictedSetConfig +# 0=unrestricted, 1=restricted type A, 2=restricted type B + restrictedSetConfig = 0, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 41; + + initialULBWPk2_1 = 6; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 14; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 3; + ssb_PositionsInBurst_Bitmap = 0x0001000100010001L; + +# 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 = 3; + + + #tdd-UL-DL-ConfigurationCommon +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + referenceSubcarrierSpacing = 3; + # pattern1 + # dl_UL_TransmissionPeriodicity + # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 + dl_UL_TransmissionPeriodicity = 3; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = 10; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.18.99"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "192.168.18.199"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.18.198/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.18.198/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "192.168.18.198/24"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 1; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2"; + if_freq = 5124520000L; + clock_src = "external"; + time_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/gnb-image/gnb.band66.tm1.106PRB.usrpn300.conf b/oai/configs/orig/gnb-image/gnb.band66.tm1.106PRB.usrpn300.conf new file mode 100644 index 0000000..1209a6f --- /dev/null +++ b/oai/configs/orig/gnb-image/gnb.band66.tm1.106PRB.usrpn300.conf @@ -0,0 +1,278 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 2150 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 433096; + dl_frequencyBand = 66; + # this is 2150 MHz + dl_absoluteFrequencyPointA = 430000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=0,L=50 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_3 = 0; #for mixed slot + initialDLBWPmappingType_3 = 0; + initialDLBWPstartSymbolAndLength_3 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 66; + ul_absoluteFrequencyPointA = 350000; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 13475; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1; + nb_rx = 1; + att_tx = 0; + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + ##beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ##beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + # bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + + sdr_addrs = "addr=192.168.10.2,mgmt_addr=192.168.10.2,second_addr=192.168.20.2"; + clock_src = "external"; + # if_freq = 3700000000L; + # if_offset = 1000000; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/gnb-image/gnb.band78.nsa_2x2.106PRB.usrpn310.conf b/oai/configs/orig/gnb-image/gnb.band78.nsa_2x2.106PRB.usrpn310.conf new file mode 100644 index 0000000..24dbdbd --- /dev/null +++ b/oai/configs/orig/gnb-image/gnb.band78.nsa_2x2.106PRB.usrpn310.conf @@ -0,0 +1,296 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({mcc = 208; mnc = 99; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 2; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -100; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 2; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 24; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# 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 = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "CI_FR1_CTL_ENB_IP_ADDR"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "CI_GNB_IP_ADDR"; + GNB_INTERFACE_NAME_FOR_NGU = "eth0"; + GNB_IPV4_ADDRESS_FOR_NGU = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + prach_dtx_threshold = 100; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 2 + nb_rx = 2 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; + eNB_instances = [0]; + bf_weights = [0x00007fff, 0x00007fff]; + #clock_src = "external"; + sdr_addrs = "mgmt_addr=192.168.18.240,addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal" + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + //parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +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", "nea2" ); + + # preferred integrity algorithms + # the first one of the list that an UE supports in chosen + # valid values: nia0, nia1, nia2, nia3 + integrity_algorithms = ( "nia0" ); +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/gnb-image/gnb.band78.sa.fr1.106PRB.usrpn310.conf b/oai/configs/orig/gnb-image/gnb.band78.sa.fr1.106PRB.usrpn310.conf new file mode 100644 index 0000000..db190f1 --- /dev/null +++ b/oai/configs/orig/gnb-image/gnb.band78.sa.fr1.106PRB.usrpn310.conf @@ -0,0 +1,301 @@ +Active_gNBs = ( "gNB-Eurecom-DU"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-Eurecom-DU"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({ + mcc = 208; + mnc = 99; + mnc_length = 2; + snssaiList = ( + { + sst = 1; + sd = 0x1; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + nr_cellid = 12345678L; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "CI_GNB_IP_ADDR"; + GNB_INTERFACE_NAME_FOR_NGU = "eth0"; + GNB_IPV4_ADDRESS_FOR_NGU = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 81; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + #clock_src = "external"; + sdr_addrs = "mgmt_addr=192.168.18.240,addr=192.168.10.2,second_addr=192.168.20.2,clock_source=internal,time_source=internal" + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/gnb-image/gnb.band78.tm1.106PRB.usrpn300.conf b/oai/configs/orig/gnb-image/gnb.band78.tm1.106PRB.usrpn300.conf new file mode 100644 index 0000000..8d32e8b --- /dev/null +++ b/oai/configs/orig/gnb-image/gnb.band78.tm1.106PRB.usrpn300.conf @@ -0,0 +1,277 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + + plmn_list = ({mcc = 208; mnc = 93; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641032; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=41,L=24 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -118; +#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 = 4; +#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; +#oneHalf (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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "192.168.12.26"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 1; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 50; + eNB_instances = [0]; + ## beamforming 1x2 matrix: 1 layer x 2 antennas + bf_weights = [0x00007fff, 0x0000]; + ## beamforming 1x4 matrix: 1 layer x 4 antennas + #bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000]; + ## beamforming 2x2 matrix: + #bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff]; + ## beamforming 4x4 matrix: + #bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff]; + + sdr_addrs = "addr=192.168.30.2,mgmt_addr=192.168.30.2,second_addr=192.168.50.2"; + clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + diff --git a/oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpb210.conf b/oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpb210.conf new file mode 100644 index 0000000..7a8e694 --- /dev/null +++ b/oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpb210.conf @@ -0,0 +1,286 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -100; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# 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 = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "CI_FR1_CTL_ENB_IP_ADDR"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "CI_GNB_IP_ADDR"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 6; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 3 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 111; + eNB_instances = [0]; +# clock_src = "external"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + //parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + +uicc: { +opc = "testopc"; +}; diff --git a/oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpn310.conf b/oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpn310.conf new file mode 100644 index 0000000..b981b27 --- /dev/null +++ b/oai/configs/orig/gnb-image/gnb.band78.tm1.fr1.106PRB.usrpn310.conf @@ -0,0 +1,295 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + + cell_type = "CELL_MACRO_GNB"; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = 1; + plmn_list = ({mcc = 222; mnc = 01; mnc_length = 2;}); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 31; //0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 84 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641272; //641032; #641968; 641968=start of ssb at 3600MHz + 82 RBs 641032=center of SSB at center of cell + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640000; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=84,L=13 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 0; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; + #initialULBWPmappingType + #0=typeA,1=typeB + initialDLBWPmappingType_0 = 0;#for DL slot + #this is SS=1,L=13 + initialDLBWPstartSymbolAndLength_0 = 40; + + initialDLBWPk0_1 = 0;#for mixed slot + initialDLBWPmappingType_1 = 0; + #this is SS=1,L=5 + initialDLBWPstartSymbolAndLength_1 = 57; + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 6368; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + preambleReceivedTargetPower = -90; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; //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, + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 2; + initialULBWPmappingType_0 = 1 + # this is SS=0 L=11 + initialULBWPstartSymbolAndLength_0 = 41; + + initialULBWPk2_1 = 2; + initialULBWPmappingType_1 = 1; + # this is SS=0 L=12 + initialULBWPstartSymbolAndLength_1 = 69; + + initialULBWPk2_2 = 7; + initialULBWPmappingType_2 = 1; + # this is SS=10 L=4 + initialULBWPstartSymbolAndLength_2 = 52; + + 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_PR = 2; + ssb_PositionsInBurst_Bitmap = 1; #0x80; + +# 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 = 6; + nrofDownlinkSlots = 7; //8; //7; + nrofDownlinkSymbols = 6; //0; //6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; //0; //4; + + ssPBCH_BlockPower = -15; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + ///X2 + enable_x2 = "yes"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + target_enb_x2_ip_address = ( + { ipv4 = "CI_FR1_CTL_ENB_IP_ADDR"; + ipv6 = "192:168:30::17"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : + { + + GNB_INTERFACE_NAME_FOR_S1_MME = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1_MME = "CI_GNB_IP_ADDR"; + GNB_INTERFACE_NAME_FOR_S1U = "eth0"; + GNB_IPV4_ADDRESS_FOR_S1U = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + GNB_IPV4_ADDRESS_FOR_X2C = "CI_GNB_IP_ADDR"; + GNB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 6; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 75; #114 + eNB_instances = [0]; + sdr_addrs = "addr=192.168.80.50" + clock_src = "internal" + + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_TRX_SPLIT"; + //parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + +uicc: { +opc = "testopc"; +}; diff --git a/oai/configs/templates/enb/cu.fdd.conf b/oai/configs/templates/enb/cu.fdd.conf new file mode 100644 index 0000000..1482bde --- /dev/null +++ b/oai/configs/templates/enb/cu.fdd.conf @@ -0,0 +1,222 @@ +Active_eNBs = ( "@ENB_NAME@"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = ( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "@ENB_NAME@"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ( { mcc = @MCC@; mnc = @MNC@; mnc_length = @MNC_LENGTH@; } ) + + nr_cellid = 12345678L + + tr_s_preference = "f1" + + local_s_if_name = "@F1_IF_NAME@"; + remote_s_address = "@F1_DU_IP_ADDRESS@"; + local_s_address = "@F1_CU_IP_ADDRESS@"; + local_s_portc = 501; + remote_s_portc = 500; + local_s_portd = 601; + remote_s_portd = 600; + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNodeB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = @UTRA_BAND_ID@; + downlink_frequency = @DL_FREQUENCY_IN_MHZ@000000L; + uplink_frequency_offset = -@UL_FREQUENCY_OFFSET_IN_MHZ@000000; + Nid_cell = @NID_CELL@; + N_RB_DL = @NB_PRB@; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -25; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnable = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* + srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =; + */ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff= 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + /* + rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; + */ + + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( + { + ipv4 = "@MME_S1C_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + NETWORK_INTERFACES : { + ENB_INTERFACE_NAME_FOR_S1_MME = "@S1C_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "@F1_CU_IP_ADDRESS@"; + ENB_INTERFACE_NAME_FOR_S1U = "@S1U_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1U = "@F1_CU_IP_ADDRESS@"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "@F1_CU_IP_ADDRESS@"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +log_config = { + global_log_level = "info"; + global_log_verbosity = "medium"; + pdcp_log_level = "info"; + pdcp_log_verbosity = "high"; + rrc_log_level = "info"; + rrc_log_verbosity = "medium"; + flexran_agent_log_level = "info"; + flexran_agent_log_verbosity = "medium"; + gtp_log_level = "info"; + gtp_log_verbosity = "medium"; +}; + +NETWORK_CONTROLLER : { + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "CI_FLEXRAN_CTL_IP_ADDR"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; diff --git a/oai/configs/templates/enb/du.fdd.conf b/oai/configs/templates/enb/du.fdd.conf new file mode 100644 index 0000000..038d219 --- /dev/null +++ b/oai/configs/templates/enb/du.fdd.conf @@ -0,0 +1,128 @@ +Active_eNBs = ( "@ENB_NAME@"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_CU_ID = 0xe00; + + eNB_name = "@ENB_NAME@"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ( { mcc = @MCC@; mnc = @MNC@; mnc_length = @MNC_LENGTH@; } ) + + nr_cellid = 12345678L + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = @UTRA_BAND_ID@; + downlink_frequency = @DL_FREQUENCY_IN_MHZ@000000L; + uplink_frequency_offset = -@UL_FREQUENCY_OFFSET_IN_MHZ@000000; + Nid_cell = @NID_CELL@; + N_RB_DL = @NB_PRB@; + Nid_cell_mbsfn = @NID_CELL@; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + } + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "f1"; + local_n_if_name = "@F1_IF_NAME@"; + remote_n_address = "@F1_DU_IP_ADDRESS@"; + local_n_address = "@F1_CU_IP_ADDRESS@"; + local_n_portc = 500; + remote_n_portc = 501; + local_n_portd = 600; + remote_n_portd = 601; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes"; + nb_tx = 1; + nb_rx = 1; + att_tx = 10; + att_rx = 10; + bands = [7]; + max_pdschReferenceSignalPower = -25; + max_rxgain = 125; + eNB_instances = [0]; + } +); + +log_config = { + global_log_level = "info"; + global_log_verbosity = "medium"; + hw_log_level = "info"; + hw_log_verbosity = "medium"; + phy_log_level = "info"; + phy_log_verbosity = "medium"; + mac_log_level = "info"; + mac_log_verbosity = "high"; + rlc_log_level = "info"; + rlc_log_verbosity = "medium"; + flexran_agent_log_level = "info"; + flexran_agent_log_verbosity = "medium"; +}; + +NETWORK_CONTROLLER : { + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "CI_FLEXRAN_CTL_IP_ADDR"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + # #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); diff --git a/oai/configs/templates/enb/enb.fdd.conf b/oai/configs/templates/enb/enb.fdd.conf new file mode 100644 index 0000000..da4ed03 --- /dev/null +++ b/oai/configs/templates/enb/enb.fdd.conf @@ -0,0 +1,282 @@ +Active_eNBs = ( "@ENB_NAME@"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "@ENB_NAME@"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ( { mcc = @MCC@; mnc = @MNC@; mnc_length = @MNC_LENGTH@; } ); + + tr_s_preference = "local_mac" + + // In seconds + rrc_inactivity_threshold = @RRC_INACTIVITY_THRESHOLD@; + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = @UTRA_BAND_ID@; + downlink_frequency = @DL_FREQUENCY_IN_MHZ@000000L; + uplink_frequency_offset = -@UL_FREQUENCY_OFFSET_IN_MHZ@000000; + Nid_cell = @NID_CELL@; + N_RB_DL = @NB_PRB@; + Nid_cell_mbsfn = @NID_CELL@; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower= -25; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* + srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =; + */ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* + rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size= 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "@MME_S1C_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "@ENB_S1C_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "@ENB_S1C_IP_ADDRESS@"; + ENB_INTERFACE_NAME_FOR_S1U = "@ENB_S1U_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1U = "@ENB_S1U_IP_ADDRESS@"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "@ENB_X2_IP_ADDRESS@"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = +( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +L1s = +( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = +( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + } +); + +THREAD_STRUCT = +( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "@FLEXRAN_ENABLED@"; + FLEXRAN_INTERFACE_NAME = "@FLEXRAN_INTERFACE_NAME@"; + FLEXRAN_IPV4_ADDRESS = "@FLEXRAN_IPV4_ADDRESS@"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +log_config : +{ + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; + diff --git a/oai/configs/templates/enb/enb.tdd.conf b/oai/configs/templates/enb/enb.tdd.conf new file mode 100644 index 0000000..bbed9b5 --- /dev/null +++ b/oai/configs/templates/enb/enb.tdd.conf @@ -0,0 +1,235 @@ +Active_eNBs = ( "@ENB_NAME@"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "@ENB_NAME@"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ( { mcc = @MCC@; mnc = @MNC@; mnc_length = @MNC_LENGTH@; } ); + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "eNodeB_3GPP"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 1; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = @UTRA_BAND_ID@; + downlink_frequency = @DL_FREQUENCY_IN_MHZ@000000L; + uplink_frequency_offset = @UL_FREQUENCY_OFFSET_IN_MHZ@000000; + Nid_cell = @NID_CELL@; + N_RB_DL = @NB_PRB@; + Nid_cell_mbsfn = @NID_CELL@; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower =-27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -106; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "@MME_S1C_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "@S1C_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "@F1_CU_IP_ADDRESS@"; + ENB_INTERFACE_NAME_FOR_S1U = "@S1U_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1U = "@F1_CU_IP_ADDRESS@"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "@F1_CU_IP_ADDRESS@"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + scheduler_mode = "fairRR"; + puSch10xSnr = 150; + puCch10xSnr = 150; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [38]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 125; + eNB_instances = [0]; + + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "CI_FLEXRAN_CTL_IP_ADDR"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; diff --git a/oai/configs/templates/enb/rcc.if4p5.fdd.conf b/oai/configs/templates/enb/rcc.if4p5.fdd.conf new file mode 100644 index 0000000..daa69fd --- /dev/null +++ b/oai/configs/templates/enb/rcc.if4p5.fdd.conf @@ -0,0 +1,279 @@ +Active_eNBs = ( "@ENB_NAME@"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "@ENB_NAME@"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ( { mcc = @MCC@; mnc = @MNC@; mnc_length = @MNC_LENGTH@; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF4p5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = @UTRA_BAND_ID@; + downlink_frequency = @DL_FREQUENCY_IN_MHZ@000000L; + uplink_frequency_offset = -@UL_FREQUENCY_OFFSET_IN_MHZ@000000; + Nid_cell = @NID_CELL@; + N_RB_DL = @NB_PRB@; + Nid_cell_mbsfn = @NID_CELL@; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -25; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "@MME_S1C_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "@RCC_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "@RCC_S1C_IP_ADDRESS@"; + ENB_INTERFACE_NAME_FOR_S1U = "@RCC_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1U = "@RCC_IP_ADDRESS@"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "@RCC_IP_ADDRESS@"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + phy_test_mode = 0; + puSch10xSnr = 160; + puCch10xSnr = 160; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_if_name = "@IF4P5_IF_NAME@"; + remote_address = "@IF4P5_RRU_IP_ADDRESS@"; + local_address = "@IF4P5_RCC_IP_ADDRESS@"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "no" + tr_preference = "udp_if4p5" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + eNB_instances = [0]; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "CI_FLEXRAN_CTL_IP_ADDR"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; + +log_config : +{ + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; +}; diff --git a/oai/configs/templates/enb/rcc.if4p5.tdd.conf b/oai/configs/templates/enb/rcc.if4p5.tdd.conf new file mode 100644 index 0000000..9e36047 --- /dev/null +++ b/oai/configs/templates/enb/rcc.if4p5.tdd.conf @@ -0,0 +1,242 @@ +Active_eNBs = ( "@ENB_NAME@"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + # real_time choice in {hard, rt-preempt, no} + real_time = "no"; + + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "@ENB_NAME@"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ( { mcc = @MCC@; mnc = @MNC@; mnc_length = @MNC_LENGTH@; } ); + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "NGFI_RCC_IF4p5"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "TDD"; + tdd_config = 1; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = @UTRA_BAND_ID@; + downlink_frequency = @DL_FREQUENCY_IN_MHZ@000000L; + uplink_frequency_offset = @UL_FREQUENCY_OFFSET_IN_MHZ@000000; + Nid_cell = @NID_CELL@; + N_RB_DL = @NB_PRB@; + Nid_cell_mbsfn = @NID_CELL@; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 1; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower =-27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -106; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + + ue_TransmissionMode = 1; + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "@MME_S1C_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "@RCC_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "@RCC_S1C_IP_ADDRESS@"; + ENB_INTERFACE_NAME_FOR_S1U = "@RCC_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1U = "@RCC_IP_ADDRESS@"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "@RCC_IP_ADDRESS@"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + }; + + log_config : + { + global_log_level ="debug"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; + + } +); +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + scheduler_mode = "fairRR"; + puSch10xSnr = 200; + puCch10xSnr = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + } +); + +RUs = ( + { + local_if_name = "@IF4P5_IF_NAME@"; + remote_address = "@IF4P5_RRU_IP_ADDRESS@"; + local_address = "@IF4P5_RCC_IP_ADDRESS@"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "no" + tr_preference = "udp_if4p5" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + eNB_instances = [0]; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +NETWORK_CONTROLLER : +{ + FLEXRAN_ENABLED = "no"; + FLEXRAN_INTERFACE_NAME = "lo"; + FLEXRAN_IPV4_ADDRESS = "CI_FLEXRAN_CTL_IP_ADDR"; + FLEXRAN_PORT = 2210; + FLEXRAN_CACHE = "/mnt/oai_agent_cache"; + FLEXRAN_AWAIT_RECONF = "no"; +}; diff --git a/oai/configs/templates/enb/rcc.nfapi.fdd.conf b/oai/configs/templates/enb/rcc.nfapi.fdd.conf new file mode 100644 index 0000000..3a64855 --- /dev/null +++ b/oai/configs/templates/enb/rcc.nfapi.fdd.conf @@ -0,0 +1,246 @@ +Active_eNBs = ( "@ENB_NAME@"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +eNBs = +( + { + ////////// Identification parameters: + eNB_ID = 0xe00; + + cell_type = "CELL_MACRO_ENB"; + + eNB_name = "@ENB_NAME@"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + + plmn_list = ( { mcc = @MCC@; mnc = @MNC@; mnc_length = @MNC_LENGTH@; } ); + + tr_s_preference = "local_mac" + + ////////// Physical parameters: + + component_carriers = ( + { + node_function = "3GPP_eNODEB"; + node_timing = "synch_to_ext_device"; + node_synch_ref = 0; + frame_type = "FDD"; + tdd_config = 3; + tdd_config_s = 0; + prefix_type = "NORMAL"; + eutra_band = @UTRA_BAND_ID@; + downlink_frequency = @DL_FREQUENCY_IN_MHZ@000000L; + uplink_frequency_offset = -@UL_FREQUENCY_OFFSET_IN_MHZ@000000; + Nid_cell = @NID_CELL@; + N_RB_DL = @NB_PRB@; + Nid_cell_mbsfn = @NID_CELL@; + nb_antenna_ports = 1; + nb_antennas_tx = 1; + nb_antennas_rx = 1; + tx_gain = 90; + rx_gain = 125; + pbch_repetition = "FALSE"; + prach_root = 0; + prach_config_index = 0; + prach_high_speed = "DISABLE"; + prach_zero_correlation = 1; + prach_freq_offset = 2; + pucch_delta_shift = 1; + pucch_nRB_CQI = 0; + pucch_nCS_AN = 0; + pucch_n1_AN = 0; + pdsch_referenceSignalPower = -27; + pdsch_p_b = 0; + pusch_n_SB = 1; + pusch_enable64QAM = "DISABLE"; + pusch_hoppingMode = "interSubFrame"; + pusch_hoppingOffset = 0; + pusch_groupHoppingEnabled = "ENABLE"; + pusch_groupAssignment = 0; + pusch_sequenceHoppingEnabled = "DISABLE"; + pusch_nDMRS1 = 1; + phich_duration = "NORMAL"; + phich_resource = "ONESIXTH"; + srs_enable = "DISABLE"; + /* srs_BandwidthConfig =; + srs_SubframeConfig =; + srs_ackNackST =; + srs_MaxUpPts =;*/ + + pusch_p0_Nominal = -96; + pusch_alpha = "AL1"; + pucch_p0_Nominal = -104; + msg3_delta_Preamble = 6; + pucch_deltaF_Format1 = "deltaF2"; + pucch_deltaF_Format1b = "deltaF3"; + pucch_deltaF_Format2 = "deltaF0"; + pucch_deltaF_Format2a = "deltaF0"; + pucch_deltaF_Format2b = "deltaF0"; + + rach_numberOfRA_Preambles = 64; + rach_preamblesGroupAConfig = "DISABLE"; + /* + rach_sizeOfRA_PreamblesGroupA = ; + rach_messageSizeGroupA = ; + rach_messagePowerOffsetGroupB = ; + */ + rach_powerRampingStep = 4; + rach_preambleInitialReceivedTargetPower = -108; + rach_preambleTransMax = 10; + rach_raResponseWindowSize = 10; + rach_macContentionResolutionTimer = 48; + rach_maxHARQ_Msg3Tx = 4; + + pcch_default_PagingCycle = 128; + pcch_nB = "oneT"; + bcch_modificationPeriodCoeff = 2; + ue_TimersAndConstants_t300 = 1000; + ue_TimersAndConstants_t301 = 1000; + ue_TimersAndConstants_t310 = 1000; + ue_TimersAndConstants_t311 = 10000; + ue_TimersAndConstants_n310 = 20; + ue_TimersAndConstants_n311 = 1; + ue_TransmissionMode = 1; + + //Parameters for SIB18 + rxPool_sc_CP_Len = "normal"; + rxPool_sc_Period = "sf40"; + rxPool_data_CP_Len = "normal"; + rxPool_ResourceConfig_prb_Num = 20; + rxPool_ResourceConfig_prb_Start = 5; + rxPool_ResourceConfig_prb_End = 44; + rxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + rxPool_ResourceConfig_offsetIndicator_choice = 0; + rxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "00000000000000000000"; + rxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + rxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; +/* rxPool_dataHoppingConfig_hoppingParameter = 0; + rxPool_dataHoppingConfig_numSubbands = "ns1"; + rxPool_dataHoppingConfig_rbOffset = 0; + rxPool_commTxResourceUC-ReqAllowed = "TRUE"; +*/ + // Parameters for SIB19 + discRxPool_cp_Len = "normal" + discRxPool_discPeriod = "rf32" + discRxPool_numRetx = 1; + discRxPool_numRepetition = 2; + discRxPool_ResourceConfig_prb_Num = 5; + discRxPool_ResourceConfig_prb_Start = 3; + discRxPool_ResourceConfig_prb_End = 21; + discRxPool_ResourceConfig_offsetIndicator_present = "prSmall"; + discRxPool_ResourceConfig_offsetIndicator_choice = 0; + discRxPool_ResourceConfig_subframeBitmap_present = "prBs40"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_buf = "f0ffffffff"; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_size = 5; + discRxPool_ResourceConfig_subframeBitmap_choice_bs_bits_unused = 0; + + } + ); + + + srb1_parameters : + { + # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] + timer_poll_retransmit = 80; + + # timer_reordering = (ms) [0,5, ... 100, 110, 120, ... ,200] + timer_reordering = 35; + + # timer_reordering = (ms) [0,5, ... 250, 300, 350, ... ,500] + timer_status_prohibit = 0; + + # poll_pdu = [4, 8, 16, 32 , 64, 128, 256, infinity(>10000)] + poll_pdu = 4; + + # poll_byte = (kB) [25,50,75,100,125,250,375,500,750,1000,1250,1500,2000,3000,infinity(>10000)] + poll_byte = 99999; + + # max_retx_threshold = [1, 2, 3, 4 , 6, 8, 16, 32] + max_retx_threshold = 4; + } + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + mme_ip_address = ( { ipv4 = "@MME_S1C_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + port = 36412 ; + active = "yes"; + preference = "ipv4"; + } + ); + + enable_measurement_reports = "no"; + + ///X2 + enable_x2 = "no"; + t_reloc_prep = 1000; /* unit: millisecond */ + tx2_reloc_overall = 2000; /* unit: millisecond */ + t_dc_prep = 1000; /* unit: millisecond */ + t_dc_overall = 2000; /* unit: millisecond */ + + NETWORK_INTERFACES : + { + ENB_INTERFACE_NAME_FOR_S1_MME = "@S1C_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "@F1_CU_IP_ADDRESS@"; + ENB_INTERFACE_NAME_FOR_S1U = "@S1U_IF_NAME@"; + ENB_IPV4_ADDRESS_FOR_S1U = "@F1_CU_IP_ADDRESS@"; + ENB_PORT_FOR_S1U = 2152; # Spec 2152 + ENB_IPV4_ADDRESS_FOR_X2C = "@F1_CU_IP_ADDRESS@"; + ENB_PORT_FOR_X2C = 36422; # Spec 36422 + + }; + } +); + +MACRLCs = ( + { + num_cc = 1; + local_s_if_name = "@F1_IF_NAME@"; + remote_s_address = "@F1_DU_IP_ADDRESS@"; + local_s_address = "@F1_CU_IP_ADDRESS@"; + local_s_portc = 50001; + remote_s_portc = 50000; + local_s_portd = 50011; + remote_s_portd = 50010; + tr_s_preference = "nfapi"; + tr_n_preference = "local_RRC"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_RU_L1_SPLIT"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + }; diff --git a/oai/configs/templates/enb/rru.fdd.conf b/oai/configs/templates/enb/rru.fdd.conf new file mode 100644 index 0000000..2d47620 --- /dev/null +++ b/oai/configs/templates/enb/rru.fdd.conf @@ -0,0 +1,47 @@ +RUs = +( + { + local_if_name = "@RRU_IF4P5_IF_NAME@"; + remote_address = "@RCC_REMOTE_IP_ADDRESS@" + local_address = "@RRU_LOCAL_IP_ADDRESS@"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "yes" + tr_preference = "udp_if4p5"; + nb_tx = 1; + nb_rx = 1; + max_pdschReferenceSignalPower = -27; + max_rxgain = 115; + bands = [@UTRA_BAND_ID@]; + } +); + +THREAD_STRUCT = +( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = +{ + global_log_level ="error"; + global_log_verbosity ="medium"; + hw_log_level ="error"; + hw_log_verbosity ="medium"; + phy_log_level ="error"; + phy_log_verbosity ="medium"; + mac_log_level ="error"; + mac_log_verbosity ="high"; + rlc_log_level ="error"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="error"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="error"; + rrc_log_verbosity ="medium"; +}; diff --git a/oai/configs/templates/enb/rru.tdd.conf b/oai/configs/templates/enb/rru.tdd.conf new file mode 100644 index 0000000..2d47620 --- /dev/null +++ b/oai/configs/templates/enb/rru.tdd.conf @@ -0,0 +1,47 @@ +RUs = +( + { + local_if_name = "@RRU_IF4P5_IF_NAME@"; + remote_address = "@RCC_REMOTE_IP_ADDRESS@" + local_address = "@RRU_LOCAL_IP_ADDRESS@"; + local_portc = 50000; + remote_portc = 50000; + local_portd = 50001; + remote_portd = 50001; + local_rf = "yes" + tr_preference = "udp_if4p5"; + nb_tx = 1; + nb_rx = 1; + max_pdschReferenceSignalPower = -27; + max_rxgain = 115; + bands = [@UTRA_BAND_ID@]; + } +); + +THREAD_STRUCT = +( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +log_config = +{ + global_log_level ="error"; + global_log_verbosity ="medium"; + hw_log_level ="error"; + hw_log_verbosity ="medium"; + phy_log_level ="error"; + phy_log_verbosity ="medium"; + mac_log_level ="error"; + mac_log_verbosity ="high"; + rlc_log_level ="error"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="error"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="error"; + rrc_log_verbosity ="medium"; +}; diff --git a/oai/configs/templates/gnb.sa.band78.fr1.106PRB.usrpb210.conf b/oai/configs/templates/gnb.sa.band78.fr1.106PRB.usrpb210.conf new file mode 100644 index 0000000..b73064b --- /dev/null +++ b/oai/configs/templates/gnb.sa.band78.fr1.106PRB.usrpb210.conf @@ -0,0 +1,300 @@ +Active_gNBs = ( "gNB-Eurecom-5GNRBox"); +# Asn1_verbosity, choice in: none, info, annoying +Asn1_verbosity = "none"; + +gNBs = +( + { + ////////// Identification parameters: + gNB_ID = 0xe00; + gNB_name = "gNB-Eurecom-5GNRBox"; + + // Tracking area code, 0x0000 and 0xfffe are reserved values + tracking_area_code = @TAC@; + plmn_list = ({ + mcc = @MCC@; + mnc = @MNC@; + mnc_length = @MNC_LENGTH@; + snssaiList = ( + { + sst = 1; + sd = 0x1; // 0 false, else true + }, + { + sst = 1; + sd = 0x112233; // 0 false, else true + } + ); + + }); + + nr_cellid = 12345678L; + + ////////// Physical parameters: + + ssb_SubcarrierOffset = 0; + pdsch_AntennaPorts = 1; + pusch_AntennaPorts = 1; + + pdcch_ConfigSIB1 = ( + { + controlResourceSetZero = 12; + searchSpaceZero = 0; + } + ); + + servingCellConfigCommon = ( + { + #spCellConfigCommon + + physCellId = 0; + +# downlinkConfigCommon + #frequencyInfoDL + # this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP) + absoluteFrequencySSB = 641280; + dl_frequencyBand = 78; + # this is 3600 MHz + dl_absoluteFrequencyPointA = 640008; + #scs-SpecificCarrierList + dl_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + dl_subcarrierSpacing = 1; + dl_carrierBandwidth = 106; + #initialDownlinkBWP + #genericParameters + # this is RBstart=27,L=48 (275*(L-1))+RBstart + initialDLBWPlocationAndBandwidth = 12952; # 6366 12925 12956 28875 12952 +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialDLBWPsubcarrierSpacing = 1; + #pdcch-ConfigCommon + initialDLBWPcontrolResourceSetZero = 12; + initialDLBWPsearchSpaceZero = 0; + #pdsch-ConfigCommon + #pdschTimeDomainAllocationList (up to 16 entries) + initialDLBWPk0_0 = 0; #for DL slot + initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB + initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13 + + initialDLBWPk0_1 = 0; #for mixed slot + initialDLBWPmappingType_1 = 0; + initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5 + + #uplinkConfigCommon + #frequencyInfoUL + ul_frequencyBand = 78; + #scs-SpecificCarrierList + ul_offstToCarrier = 0; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + ul_subcarrierSpacing = 1; + ul_carrierBandwidth = 106; + pMax = 20; + #initialUplinkBWP + #genericParameters + initialULBWPlocationAndBandwidth = 12952; +# subcarrierSpacing +# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120 + initialULBWPsubcarrierSpacing = 1; + #rach-ConfigCommon + #rach-ConfigGeneric + prach_ConfigurationIndex = 98; +#prach_msg1_FDM +#0 = one, 1=two, 2=four, 3=eight + prach_msg1_FDM = 0; + prach_msg1_FrequencyStart = 0; + zeroCorrelationZoneConfig = 13; + 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 = 4; +#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; +#oneHalf (0..15) 4,8,12,16,...60,64 + ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14; +#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, + + # pusch-ConfigCommon (up to 16 elements) + initialULBWPk2_0 = 6; # used for UL slot + initialULBWPmappingType_0 = 1 + initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13 + + initialULBWPk2_1 = 6; # used for mixed slot + initialULBWPmappingType_1 = 1; + initialULBWPstartSymbolAndLength_1 = 52; # this is SS=10 L=4 + + initialULBWPk2_2 = 7; # used for Msg.3 during RA + initialULBWPmappingType_2 = 1; + initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4 + + 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_PR = 2; + 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 = 6; + nrofDownlinkSlots = 7; + nrofDownlinkSymbols = 6; + nrofUplinkSlots = 2; + nrofUplinkSymbols = 4; + + ssPBCH_BlockPower = -25; + } + + ); + + + # ------- SCTP definitions + SCTP : + { + # Number of streams to use in input/output + SCTP_INSTREAMS = 2; + SCTP_OUTSTREAMS = 2; + }; + + + ////////// MME parameters: + amf_ip_address = ( { ipv4 = "@AMF_NG_IP_ADDRESS@"; + ipv6 = "192:168:30::17"; + active = "yes"; + preference = "ipv4"; + } + ); + + + NETWORK_INTERFACES : + { + GNB_INTERFACE_NAME_FOR_NG_AMF = "@GNB_NG_IF_NAME@"; + GNB_IPV4_ADDRESS_FOR_NG_AMF = "@GNB_NG_IP_ADDRESS@"; + GNB_INTERFACE_NAME_FOR_NGU = "@GNB_NGU_IF_NAME@"; + GNB_IPV4_ADDRESS_FOR_NGU = "@GNB_NGU_IP_ADDRESS@"; + GNB_PORT_FOR_S1U = 2152; # Spec 2152 + }; + + } +); + +MACRLCs = ( + { + num_cc = 1; + tr_s_preference = "local_L1"; + tr_n_preference = "local_RRC"; + ulsch_max_slots_inactivity = 100; + pusch_TargetSNRx10 = 200; + pucch_TargetSNRx10 = 200; + } +); + +L1s = ( + { + num_cc = 1; + tr_n_preference = "local_mac"; + pusch_proc_threads = 8; + } +); + +RUs = ( + { + local_rf = "yes" + nb_tx = 1 + nb_rx = 1 + att_tx = 0 + att_rx = 0; + bands = [7]; + max_pdschReferenceSignalPower = -27; + max_rxgain = 114; + eNB_instances = [0]; + #beamforming 1x4 matrix: + bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000]; + clock_src = "internal"; + } +); + +THREAD_STRUCT = ( + { + #three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT" + parallel_config = "PARALLEL_SINGLE_THREAD"; + #two option for worker "WORKER_DISABLE" or "WORKER_ENABLE" + worker_config = "WORKER_ENABLE"; + } +); + +rfsimulator : +{ + serveraddr = "server"; + serverport = "4043"; + options = (); #("saviq"); or/and "chanmod" + modelname = "AWGN"; + IQfile = "/tmp/rfsimulator.iqs"; +}; + + log_config : + { + global_log_level ="info"; + global_log_verbosity ="medium"; + hw_log_level ="info"; + hw_log_verbosity ="medium"; + phy_log_level ="info"; + phy_log_verbosity ="medium"; + mac_log_level ="info"; + mac_log_verbosity ="high"; + rlc_log_level ="info"; + rlc_log_verbosity ="medium"; + pdcp_log_level ="info"; + pdcp_log_verbosity ="medium"; + rrc_log_level ="info"; + rrc_log_verbosity ="medium"; + ngap_log_level ="debug"; + ngap_log_verbosity ="medium"; + }; + diff --git a/oai/entrypoint.sh b/oai/custom_entrypoint.sh similarity index 100% rename from oai/entrypoint.sh rename to oai/custom_entrypoint.sh diff --git a/oai/enb_entrypoint.sh b/oai/enb_entrypoint.sh new file mode 100755 index 0000000..1d38971 --- /dev/null +++ b/oai/enb_entrypoint.sh @@ -0,0 +1,102 @@ +#!/bin/bash + +set -euo pipefail + +PREFIX=/opt/oai-enb + +IFACES=${IFACES:-"ENB_S1C ENB_S1U ENB_X2"} +HOSTNAMES=${HOSTNAMES:-"MME_S1C "} +CONFIG_TEMPLATE= + +# Get IP address from iface names and export +for iface in $IFACES; do + var1="${iface}_IP_ADDRESS" + var2="${iface}_IF_NAME" + if [ -z "${!var1}" ] && [ ! -z "${!var2}" ] ; then + address=$(ip addr show ${!var2} | grep -Po 'inet \K[\d.]+/\d+') + declare -x "$var1=$address" + echo "$var1=$address" + fi +done + +# Resolve IP ADDRESS if hostname is provided +for hostname in $HOSTNAMES; do + var1="${hostname}_IP_ADDRESS" + var2="${hostname}_HOSTNAME" + if [ -z "${!var1}" ] && [ ! -z "${!var2}" ] ; then + echo "check if ${!var2} hostname is resolvable" + host -4 ${!var2} + address=$(host -4 ${!var2} |awk '/has.*address/{print $NF; exit}') + declare -x "$var1=$address" + echo "$var1=$address" + fi +done + +echo "config.conf if exists" +rm $PREFIX/etc/enb.conf || true + +RRC_INACTIVITY_THRESHOLD=${RRC_INACTIVITY_THRESHOLD:-0} + +# Based another env var, pick one template to use +if [[ -v USE_FDD_CU ]]; then ln -s $PREFIX/etc/cu.fdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_FDD_DU ]]; then ln -s $PREFIX/etc/du.fdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_FDD_MONO ]]; then ln -s $PREFIX/etc/enb.fdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_TDD_MONO ]]; then ln -s $PREFIX/etc/enb.tdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_FDD_FAPI_RCC ]]; then ln -s $PREFIX/etc/rcc.nfapi.fdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_FDD_IF4P5_RCC ]]; then ln -s $PREFIX/etc/rcc.if4p5.fdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_TDD_IF4P5_RCC ]]; then ln -s $PREFIX/etc/rcc.if4p5.tdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_FDD_RRU ]]; then ln -s $PREFIX/etc/rru.fdd.conf $PREFIX/etc/enb.conf; fi +if [[ -v USE_TDD_RRU ]]; then ln -s $PREFIX/etc/rru.tdd.conf $PREFIX/etc/enb.conf; fi + +# Only this template will be manipulated +CONFIG_FILES=`ls $PREFIX/etc/enb.conf || true` + +for c in ${CONFIG_FILES}; do + # grep variable names (format: ${VAR}) from template to be rendered + VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${c} | sort | uniq | xargs) + + # create sed expressions for substituting each occurrence of ${VAR} + # with the value of the environment variable "VAR" + EXPRESSIONS="" + for v in ${VARS}; do + NEW_VAR=`echo $v | sed -e "s#@##g"` + if [[ "${!NEW_VAR}x" == "x" ]]; then + echo "Error: Environment variable '${NEW_VAR}' is not set." \ + "Config file '$(basename $c)' requires all of $VARS." + exit 1 + fi + EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g" + done + EXPRESSIONS="${EXPRESSIONS#';'}" + + # render template and inline replace config file + sed -i "${EXPRESSIONS}" ${c} +done + +# Load the USRP binaries +if [[ -v USE_B2XX ]]; then + /usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx +elif [[ -v USE_X3XX ]]; then + /usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx +elif [[ -v USE_N3XX ]]; then + /usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx +fi + +echo "==================================" +echo "== Starting eNB soft modem" +if [[ -v USE_ADDITIONAL_OPTIONS ]]; then + echo "Additional option(s): ${USE_ADDITIONAL_OPTIONS}" + new_args=() + while [[ $# -gt 0 ]]; do + new_args+=("$1") + shift + done + for word in ${USE_ADDITIONAL_OPTIONS}; do + new_args+=("$word") + done + echo "${new_args[@]}" + exec "${new_args[@]}" +else + echo "$@" + exec "$@" +fi diff --git a/oai/gnb_entrypoint.sh b/oai/gnb_entrypoint.sh new file mode 100755 index 0000000..b7f84f4 --- /dev/null +++ b/oai/gnb_entrypoint.sh @@ -0,0 +1,82 @@ +#!/bin/bash + +set -euo pipefail + +IFACES=${IFACES:-"ENB_S1C ENB_S1U ENB_X2"} +HOSTNAMES=${HOSTNAMES:-"MME_S1C "} +CONFIG_TEMPLATE= + +# Get IP address from iface names and export +for iface in $IFACES; do + var1="${iface}_IP_ADDRESS" + var2="${iface}_IF_NAME" + if [ -z "${!var1}" ] && [ ! -z "${!var2}" ] ; then + address=$(ip addr show ${!var2} | grep -Po 'inet \K[\d.]+/\d+') + declare -x "$var1=$address" + echo "$var1=$address" + fi +done + +# Resolve IP ADDRESS if hostname is provided +for hostname in $HOSTNAMES; do + var1="${hostname}_IP_ADDRESS" + var2="${hostname}_HOSTNAME" + if [ -z "${!var1}" ] && [ ! -z "${!var2}" ] ; then + echo "check if ${!var2} hostname is resolvable" + host -4 ${!var2} + address=$(host -4 ${!var2} |awk '/has.*address/{print $NF; exit}') + declare -x "$var1=$address" + echo "$var1=$address" + fi +done + +echo "config.conf if exists" +rm /config.conf || true + +# grep variable names (format: ${VAR}) from template to be rendered +VARS=$(grep -oP '@[a-zA-Z0-9_]+@' ${CONFIG_TEMPLATE} | sort | uniq | xargs) + +# create sed expressions for substituting each occurrence of ${VAR} +# with the value of the environment variable "VAR" +EXPRESSIONS="" +for v in ${VARS}; do + NEW_VAR=`echo $v | sed -e "s#@##g"` + if [[ "${!NEW_VAR}x" == "x" ]]; then + echo "Error: Environment variable '${NEW_VAR}' is not set." \ + "Config file '$(basename ${CONFIG_TEMPLATE})' requires all of $VARS." + exit 1 + fi + EXPRESSIONS="${EXPRESSIONS};s|${v}|${!NEW_VAR}|g" +done +EXPRESSIONS="${EXPRESSIONS#';'}" + +# render template and inline replace config file +sed -i "${EXPRESSIONS}" ${CONFIG_TEMPLATE} + +# Load the USRP binaries +if [[ -v USE_B2XX ]]; then + /usr/lib/uhd/utils/uhd_images_downloader.py -t b2xx +elif [[ -v USE_X3XX ]]; then + /usr/lib/uhd/utils/uhd_images_downloader.py -t x3xx +elif [[ -v USE_N3XX ]]; then + /usr/lib/uhd/utils/uhd_images_downloader.py -t n3xx +fi + +echo "==================================" +echo "== Starting gNB soft modem" +if [[ -v USE_ADDITIONAL_OPTIONS ]]; then + echo "Additional option(s): ${USE_ADDITIONAL_OPTIONS}" + new_args=() + while [[ $# -gt 0 ]]; do + new_args+=("$1") + shift + done + for word in ${USE_ADDITIONAL_OPTIONS}; do + new_args+=("$word") + done + echo "${new_args[@]}" + exec "${new_args[@]}" +else + echo "$@" + exec "$@" +fi diff --git a/open5gs/Makefile b/open5gs/Makefile index e876c0b..cfcd64b 100644 --- a/open5gs/Makefile +++ b/open5gs/Makefile @@ -2,28 +2,8 @@ REGISTRY=docker.io IMAGE=openverso/open5gs -TAG=2.2.3 +TAG=2.3.0 build: - docker build -t ${IMAGE}:${TAG} --build-arg version=${TAG} . - -build-webui: - docker build -t ${IMAGE}-webui:${TAG} --build-arg version=${TAG} . -f Dockerfile.webui - -push: - echo "Pushing the images ${IMAGE} to ${REGISTRY}"; \ - echo "Insert credentials to registry: "; \ - docker --config=.docker login ${REGISTRY}; \ - docker tag ${IMAGE}:${TAG} ${REGISTRY}/${IMAGE}:${TAG}; \ - docker --config=.docker push ${REGISTRY}/${IMAGE}:${TAG}; \ - rm -r .docker - -push-webui: - echo "Pushing the image ${IMAGE}-webui to ${REGISTRY}"; \ - echo "Insert credentials to registry: "; \ - docker --config=.docker login ${REGISTRY}; \ - docker tag ${IMAGE}-webui:${TAG} ${REGISTRY}/${IMAGE}-webui:${TAG}; \ - docker --config=.docker push ${REGISTRY}/${IMAGE}-webui:${TAG}; \ - rm -r .docker - -all: build push build-webui push-webui + docker build -t ${IMAGE}:${TAG} --build-arg version=${TAG} . --platform linux/amd64,linux/arm64 --push + docker build -t ${IMAGE}-webui:${TAG} --build-arg version=${TAG} . -f Dockerfile.webui --platform linux/amd64,linux/arm64 --push diff --git a/open5gs/configs/open5gs/amf.yaml b/open5gs/configs/open5gs/amf.yaml index fc09c1b..5fe8086 100644 --- a/open5gs/configs/open5gs/amf.yaml +++ b/open5gs/configs/open5gs/amf.yaml @@ -1,33 +1,32 @@ ### For reference, see `/opt/open5gs/etc/orig/open5gs/` amf: - sbi: - port: 7777 - ngap: - guami: - - plmn_id: - mcc: "001" - mnc: "01" - amf_id: - region: 2 - set: 1 - tai: - - plmn_id: - mcc: "001" - mnc: "01" - tac: "0001" - plmn_support: - - plmn_id: - mcc: "001" - mnc: "01" - s_nssai: - - sst: 1 - sd: 1 - security: - integrity_order : [ NIA2, NIA1, NIA0 ] - ciphering_order : [ NEA0, NEA1, NEA2 ] - network_name: - full: Open5GS - amf_name: open5gs-amf0 + sbi: + port: 7777 + ngap: + guami: + - plmn_id: + mcc: 901 + mnc: 70 + amf_id: + region: 2 + set: 1 + tai: + - plmn_id: + mcc: 901 + mnc: 70 + tac: 1 + plmn_support: + - plmn_id: + mcc: 901 + mnc: 70 + s_nssai: + - sst: 1 + security: + integrity_order : [ NIA2, NIA1, NIA0 ] + ciphering_order : [ NEA0, NEA1, NEA2 ] + network_name: + full: Openverso + amf_name: open5gs-amf0 nrf: sbi: diff --git a/open5gs/configs/open5gs/bsf.yaml b/open5gs/configs/open5gs/bsf.yaml new file mode 100644 index 0000000..fa7ec4b --- /dev/null +++ b/open5gs/configs/open5gs/bsf.yaml @@ -0,0 +1,11 @@ +bsf: + sbi: + port: 7777 +nrf: + sbi: + - name: nrf + port: 7777 +parameter: +max: +pool: +time: \ No newline at end of file diff --git a/open5gs/configs/open5gs/mme.yaml b/open5gs/configs/open5gs/mme.yaml index 93c8cf9..6ba6435 100644 --- a/open5gs/configs/open5gs/mme.yaml +++ b/open5gs/configs/open5gs/mme.yaml @@ -5,20 +5,20 @@ mme: gtpc: gummei: plmn_id: - mcc: "001" - mnc: "01" + mcc: 901 + mnc: 70 mme_gid: 2 mme_code: 1 tai: plmn_id: - mcc: "001" - mnc: "01" - tac: "0001" + mcc: 901 + mnc: 70 + tac: 1 security: integrity_order : [ EIA2, EIA1, EIA0 ] ciphering_order : [ EEA0, EEA1, EEA2 ] network_name: - full: Open5GS + full: Openverso mme_name: open5gs-mme0 sgwc: diff --git a/open5gs/configs/orig/open5gs/bsf.yaml b/open5gs/configs/orig/open5gs/bsf.yaml new file mode 100644 index 0000000..9fb1eb4 --- /dev/null +++ b/open5gs/configs/orig/open5gs/bsf.yaml @@ -0,0 +1,186 @@ +db_uri: mongodb://localhost/open5gs + +# +# logger: +# +# o Set OGS_LOG_INFO to all domain level +# - If `level` is omitted, the default level is OGS_LOG_INFO) +# - If `domain` is omitted, the all domain level is set from 'level' +# (Nothing is needed) +# +# o Set OGS_LOG_ERROR to all domain level +# - `level` can be set with none, fatal, error, warn, info, debug, trace +# level: error +# +# o Set OGS_LOG_DEBUG to mme/emm domain level +# level: debug +# domain: mme,emm +# +# o Set OGS_LOG_TRACE to all domain level +# level: trace +# domain: core,sbi,bsf,event,tlv,mem,sock +# +logger: + file: /opt/open5gs/var/log/open5gs/bsf.log +# +# bsf: +# +# +# +# o SBI Server(http://:80) +# sbi: +# +# o SBI Server(http://:80) +# sbi: +# - addr: +# - 0.0.0.0 +# - ::0 +# port: 7777 +# +# o SBI Server(https://:443) +# sbi: +# - tls: +# key: bsf.key +# pem: bsf.pem +# +# o SBI Server(https://127.0.0.15:443, http://[::1]:80) +# sbi: +# - addr: 127.0.0.15 +# tls: +# key: bsf.key +# pem: bsf.pem +# - addr: ::1 +# +# o SBI Server(http://bsf.open5gs.org:80) +# sbi: +# - name: bsf.open5gs.org +# +# o SBI Server(http://127.0.0.15:7777) +# sbi: +# - addr: 127.0.0.15 +# port: 7777 +# +# o SBI Server(http://:80) +# sbi: +# - dev: eth0 +# +# o Provide custom SBI address to be advertised to NRF +# sbi: +# - dev: eth0 +# advertise: open5gs-bsf.svc.local +# +# sbi: +# - addr: localhost +# advertise: +# - 127.0.0.99 +# - ::1 +# +bsf: + sbi: + - addr: 127.0.0.15 + port: 7777 + +# +# nrf: +# +# > +# +# o SBI Client(http://127.0.0.10:7777) +# sbi: +# addr: 127.0.0.10 +# port: 7777 +# +# o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) +# sbi: +# - addr: 127.0.0.10 +# tls: +# key: nrf.key +# pem: nrf.pem +# - name: nrf.open5gs.org +# +# o SBI Client(http://[fe80::1%lo]:80) +# If prefer_ipv4 is true, http://127.0.0.10:80 is selected. +# +# sbi: +# addr: +# - 127.0.0.10 +# - fe80::1%lo +# +nrf: + sbi: + - addr: + - 127.0.0.10 + - ::1 + port: 7777 + +# +# parameter: +# +# o Number of output streams per SCTP associations. +# sctp_streams: 30 +# +# o Disable use of IPv4 addresses (only IPv6) +# no_ipv4: true +# +# o Disable use of IPv6 addresses (only IPv4) +# no_ipv6: true +# +# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. +# prefer_ipv4: true +# +parameter: + +# +# max: +# +# o Maximum Number of UE per AMF/MME +# ue: 1024 +# o Maximum Number of gNB/eNB per AMF/MME +# gnb: 32 +# +max: + +# +# pool: +# +# o The default memory pool size was set assuming 1024 UEs. +# To connect more UEs, you need to increase the size further. +# +# - Pool-size 128 => 65536 Number +# - Pool-size 256 => 16384 Number +# - Pool-size 512 => 4096 Number +# - Pool-size 1024 => 1024 Number +# - Pool-size 2048 => 512 Number +# - Pool-size 8192 => 128 Number +# - Pool-size 1024*1024 => 8 Number +# +# 128: 65536 +# 256: 16384 +# 512: 4096 +# 1024: 1024 +# 2048: 512 +# 8192: 128 +# big: 8 +# +pool: + +# +# time: +# +# o NF Instance Heartbeat (Default : 0) +# NFs will not send heart-beat timer in NFProfile +# NRF will send heart-beat timer in NFProfile +# +# o NF Instance Heartbeat (20 seconds) +# NFs will send heart-beat timer (20 seconds) in NFProfile +# NRF can change heart-beat timer in NFProfile +# +# nf_instance: +# heartbeat: 20 +# +# o Message Wait Duration (Default : 10,000 ms = 10 seconds) +# +# o Message Wait Duration (3000 ms) +# message: +# duration: 3000 +time: diff --git a/open5gs/configs/orig/open5gs/nssf.yaml b/open5gs/configs/orig/open5gs/nssf.yaml new file mode 100644 index 0000000..b9b18f8 --- /dev/null +++ b/open5gs/configs/orig/open5gs/nssf.yaml @@ -0,0 +1,234 @@ +# +# logger: +# +# o Set OGS_LOG_INFO to all domain level +# - If `level` is omitted, the default level is OGS_LOG_INFO) +# - If `domain` is omitted, the all domain level is set from 'level' +# (Nothing is needed) +# +# o Set OGS_LOG_ERROR to all domain level +# - `level` can be set with none, fatal, error, warn, info, debug, trace +# level: error +# +# o Set OGS_LOG_DEBUG to mme/emm domain level +# level: debug +# domain: mme,emm +# +# o Set OGS_LOG_TRACE to all domain level +# level: trace +# domain: core,sbi,nssf,event,tlv,mem,sock +# +logger: + file: /opt/open5gs/var/log/open5gs/nssf.log +# +# nssf: +# +# +# +# o SBI Server(http://:80) +# sbi: +# +# o SBI Server(http://:80) +# sbi: +# - addr: +# - 0.0.0.0 +# - ::0 +# port: 7777 +# +# o SBI Server(https://:443) +# sbi: +# - tls: +# key: nssf.key +# pem: nssf.pem +# +# o SBI Server(https://127.0.0.14:443, http://[::1]:80) +# sbi: +# - addr: 127.0.0.14 +# tls: +# key: nssf.key +# pem: nssf.pem +# - addr: ::1 +# +# o SBI Server(http://nssf.open5gs.org:80) +# sbi: +# - name: nssf.open5gs.org +# +# o SBI Server(http://127.0.0.14:7777) +# sbi: +# - addr: 127.0.0.14 +# port: 7777 +# +# o SBI Server(http://:80) +# sbi: +# - dev: eth0 +# +# o Provide custom SBI address to be advertised to NRF +# sbi: +# - dev: eth0 +# advertise: open5gs-nssf.svc.local +# +# sbi: +# - addr: localhost +# advertise: +# - 127.0.0.99 +# - ::1 +# +# +# +# o One NSI +# - NRF[http://::1:7777/nnrf-nfm/v1/nf-instances] +# NSSAI[SST:1] +# +# nsi: +# - addr: ::1 +# port: 7777 +# s_nssai: +# sst: 1 +# +# o Three NSI +# 1. NRF[http://::1:7777/nnrf-nfm/v1/nf-instances] +# S-NSSAI[SST:1] +# +# 2. NRF[http://127.0.0.19:7777/nnrf-nfm/v1/nf-instances] +# NSSAI[SST:1, SD:000080] +# +# 2. NRF[http://127.0.0.10:7777/nnrf-nfm/v1/nf-instances] +# NSSAI[SST:1, SD:009000] +# +# nsi: +# - addr: ::1 +# port: 7777 +# s_nssai: +# sst: 1 +# - addr: 127.0.0.19 +# port: 7777 +# s_nssai: +# sst: 1 +# sd: 000080 +# - addr: 127.0.0.10 +# port: 7777 +# s_nssai: +# sst: 1 +# sd: 009000 +nssf: + sbi: + - addr: 127.0.0.14 + port: 7777 + nsi: + - addr: ::1 + port: 7777 + s_nssai: + sst: 1 + +# +# nrf: +# +# > +# +# o SBI Client(http://127.0.0.10:7777) +# sbi: +# addr: 127.0.0.10 +# port: 7777 +# +# o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) +# sbi: +# - addr: 127.0.0.10 +# tls: +# key: nrf.key +# pem: nrf.pem +# - name: nrf.open5gs.org +# +# o SBI Client(http://[fe80::1%lo]:80) +# If prefer_ipv4 is true, http://127.0.0.10:80 is selected. +# +# sbi: +# addr: +# - 127.0.0.10 +# - fe80::1%lo +# +nrf: + sbi: + - addr: + - 127.0.0.10 + - ::1 + port: 7777 + +# +# parameter: +# +# o Number of output streams per SCTP associations. +# sctp_streams: 30 +# +# o Disable use of IPv4 addresses (only IPv6) +# no_ipv4: true +# +# o Disable use of IPv6 addresses (only IPv4) +# no_ipv6: true +# +# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. +# prefer_ipv4: true +# +parameter: + +# +# max: +# +# o Maximum Number of UE per AMF/MME +# ue: 1024 +# o Maximum Number of gNB/eNB per AMF/MME +# gnb: 32 +# +max: + +# +# pool: +# +# o The default memory pool size was set assuming 1024 UEs. +# To connect more UEs, you need to increase the size further. +# +# - Pool-size 128 => 65536 Number +# - Pool-size 256 => 16384 Number +# - Pool-size 512 => 4096 Number +# - Pool-size 1024 => 1024 Number +# - Pool-size 2048 => 512 Number +# - Pool-size 8192 => 128 Number +# - Pool-size 1024*1024 => 8 Number +# +# 128: 65536 +# 256: 16384 +# 512: 4096 +# 1024: 1024 +# 2048: 512 +# 8192: 128 +# big: 8 +# +pool: + +# +# time: +# +# o NF Instance Heartbeat (Default : 0) +# NFs will not send heart-beat timer in NFProfile +# NRF will send heart-beat timer in NFProfile +# +# o NF Instance Heartbeat (20 seconds) +# NFs will send heart-beat timer (20 seconds) in NFProfile +# NRF can change heart-beat timer in NFProfile +# +# nf_instance: +# heartbeat: 20 +# +# o NF Instance Heartbeat (Disabled) +# nf_instance: +# heartbeat: 0 +# +# o NF Instance Heartbeat (10 seconds) +# nf_instance: +# heartbeat: 10 +# +# o Message Wait Duration (Default : 10,000 ms = 10 seconds) +# +# o Message Wait Duration (3000 ms) +# message: +# duration: 3000 +time: diff --git a/open5gs/configs/orig/open5gs/pcf.yaml b/open5gs/configs/orig/open5gs/pcf.yaml new file mode 100644 index 0000000..08d026a --- /dev/null +++ b/open5gs/configs/orig/open5gs/pcf.yaml @@ -0,0 +1,186 @@ +db_uri: mongodb://localhost/open5gs + +# +# logger: +# +# o Set OGS_LOG_INFO to all domain level +# - If `level` is omitted, the default level is OGS_LOG_INFO) +# - If `domain` is omitted, the all domain level is set from 'level' +# (Nothing is needed) +# +# o Set OGS_LOG_ERROR to all domain level +# - `level` can be set with none, fatal, error, warn, info, debug, trace +# level: error +# +# o Set OGS_LOG_DEBUG to mme/emm domain level +# level: debug +# domain: mme,emm +# +# o Set OGS_LOG_TRACE to all domain level +# level: trace +# domain: core,sbi,pcf,event,tlv,mem,sock +# +logger: + file: /opt/open5gs/var/log/open5gs/pcf.log +# +# pcf: +# +# +# +# o SBI Server(http://:80) +# sbi: +# +# o SBI Server(http://:80) +# sbi: +# - addr: +# - 0.0.0.0 +# - ::0 +# port: 7777 +# +# o SBI Server(https://:443) +# sbi: +# - tls: +# key: pcf.key +# pem: pcf.pem +# +# o SBI Server(https://127.0.0.13:443, http://[::1]:80) +# sbi: +# - addr: 127.0.0.13 +# tls: +# key: pcf.key +# pem: pcf.pem +# - addr: ::1 +# +# o SBI Server(http://pcf.open5gs.org:80) +# sbi: +# - name: pcf.open5gs.org +# +# o SBI Server(http://127.0.0.13:7777) +# sbi: +# - addr: 127.0.0.13 +# port: 7777 +# +# o SBI Server(http://:80) +# sbi: +# - dev: eth0 +# +# o Provide custom SBI address to be advertised to NRF +# sbi: +# - dev: eth0 +# advertise: open5gs-pcf.svc.local +# +# sbi: +# - addr: localhost +# advertise: +# - 127.0.0.99 +# - ::1 +# +pcf: + sbi: + - addr: 127.0.0.13 + port: 7777 + +# +# nrf: +# +# > +# +# o SBI Client(http://127.0.0.10:7777) +# sbi: +# addr: 127.0.0.10 +# port: 7777 +# +# o SBI Client(https://127.0.0.10:443, http://nrf.open5gs.org:80) +# sbi: +# - addr: 127.0.0.10 +# tls: +# key: nrf.key +# pem: nrf.pem +# - name: nrf.open5gs.org +# +# o SBI Client(http://[fe80::1%lo]:80) +# If prefer_ipv4 is true, http://127.0.0.10:80 is selected. +# +# sbi: +# addr: +# - 127.0.0.10 +# - fe80::1%lo +# +nrf: + sbi: + - addr: + - 127.0.0.10 + - ::1 + port: 7777 + +# +# parameter: +# +# o Number of output streams per SCTP associations. +# sctp_streams: 30 +# +# o Disable use of IPv4 addresses (only IPv6) +# no_ipv4: true +# +# o Disable use of IPv6 addresses (only IPv4) +# no_ipv6: true +# +# o Prefer IPv4 instead of IPv6 for estabishing new GTP connections. +# prefer_ipv4: true +# +parameter: + +# +# max: +# +# o Maximum Number of UE per AMF/MME +# ue: 1024 +# o Maximum Number of gNB/eNB per AMF/MME +# gnb: 32 +# +max: + +# +# pool: +# +# o The default memory pool size was set assuming 1024 UEs. +# To connect more UEs, you need to increase the size further. +# +# - Pool-size 128 => 65536 Number +# - Pool-size 256 => 16384 Number +# - Pool-size 512 => 4096 Number +# - Pool-size 1024 => 1024 Number +# - Pool-size 2048 => 512 Number +# - Pool-size 8192 => 128 Number +# - Pool-size 1024*1024 => 8 Number +# +# 128: 65536 +# 256: 16384 +# 512: 4096 +# 1024: 1024 +# 2048: 512 +# 8192: 128 +# big: 8 +# +pool: + +# +# time: +# +# o NF Instance Heartbeat (Default : 0) +# NFs will not send heart-beat timer in NFProfile +# NRF will send heart-beat timer in NFProfile +# +# o NF Instance Heartbeat (20 seconds) +# NFs will send heart-beat timer (20 seconds) in NFProfile +# NRF can change heart-beat timer in NFProfile +# +# nf_instance: +# heartbeat: 20 +# +# o Message Wait Duration (Default : 10,000 ms = 10 seconds) +# +# o Message Wait Duration (3000 ms) +# message: +# duration: 3000 +time: diff --git a/ueransim/Dockerfile b/ueransim/Dockerfile index cbc9bd4..86d58c9 100644 --- a/ueransim/Dockerfile +++ b/ueransim/Dockerfile @@ -1,6 +1,6 @@ FROM debian:latest as builder -ARG version=v3.1.0 +ARG version=3.1.0 ENV VERSION=$version @@ -25,7 +25,7 @@ RUN file="$(cmake --version)" && echo $file RUN cd /tmp && git clone https://github.com/aligungr/UERANSIM.git && \ - cd UERANSIM && git checkout tags/$VERSION + cd UERANSIM && git checkout tags/v$VERSION RUN cd /tmp/UERANSIM && echo "cmake --version" && make FROM debian:stable-slim diff --git a/ueransim/Makefile b/ueransim/Makefile index bc74fbd..638d421 100644 --- a/ueransim/Makefile +++ b/ueransim/Makefile @@ -2,17 +2,7 @@ REGISTRY=docker.io IMAGE=openverso/ueransim -TAG=3.2.2 +TAG=3.2.1 build: - docker build -t ${IMAGE}:${TAG} --build-arg version=v${TAG} . - -push: - echo "Pushing the images ${IMAGE} to ${REGISTRY}"; \ - echo "Insert credentials to registry: "; \ - docker --config=.docker login ${REGISTRY}; \ - docker tag ${IMAGE}:${TAG} ${REGISTRY}/${IMAGE}:${TAG}; \ - docker --config=.docker push ${REGISTRY}/${IMAGE}:${TAG}; \ - rm -r .docker - -all: build push + docker build -t ${IMAGE}:${TAG} --build-arg version=${TAG} . --platform linux/amd64,linux/arm64 --push diff --git a/docs/open5gs-and-srs-enb-usrp/uhd_image_downloader.py b/uhd_image_downloader.py similarity index 100% rename from docs/open5gs-and-srs-enb-usrp/uhd_image_downloader.py rename to uhd_image_downloader.py