srsRAN_4G icon indicating copy to clipboard operation
srsRAN_4G copied to clipboard

srsUE cannot connect to srsENB

Open egortaran opened this issue 2 years ago • 1 comments

Issue Description

Hello everyone. I want, using documentation, to connect srsUE to srsENB and open5gs. Before that, I managed to connect COTS UE (One Plus 9). The phone managed to connect to the LTE network and was able to use the Internet. Now I want to connect srsUE, but I can't do it. UE detects PHY, but does not connect to the network

Setup Details

  • open5gs
  • 2x Ubuntu 22.04 (Intel® Core™ i7-7700 CPU @ 3.60GHz × 8)
  • 2x srsRAN 22.04
  • 2x limesdr v1.4s (LimeSuite v20.10.0, SoapySDR 0.7.2)

Actual Behaviour

Logs

srsENB
Starting srsenb ... done
Opening 2 channels in RF device=soapy with args=rxant=LNAH,txant=BAND1
Soapy has found device #0: addr=1d50:6108, driver=lime, label=LimeSDR-USB [USB 3.0] 9081C05C4292E, media=USB 3.0, module=FX3, name=LimeSDR-USB, serial=0009081C05C4292E, 
Selecting Soapy device: 0
Detected LimeSDR. Consider using LTE rates for better RF performance.
Either compile with '-DUSE_LTE_RATES=True' or start srsENB/srsUE with '--expert.lte_sample_rates=true'
[INFO] Make connection: 'LimeSDR-USB [USB 3.0] 9081C05C4292E'
[INFO] Reference clock 30.72 MHz
[INFO] Device name: LimeSDR-USB
[INFO] Reference: 30.72 MHz
[INFO] LMS7002M register cache: Disabled
Setting up Rx stream with 2 channel(s)
Setting up Tx stream with 2 channel(s)
[INFO] RX LPF configured
[INFO] RX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
Available device sensors: 
- clock_locked
- lms7_temp
Available sensors for Rx channel 0: 
- lo_locked
Available sensors for Rx channel 1: 
- lo_locked
Setting Rx channel 0 antenna to LNAH
Setting Rx channel 1 antenna to LNAH
Setting Tx channel 0 antenna to BAND1
Setting Tx channel 1 antenna to BAND1
State of gain elements for Rx channel 0 (AGC not supported):
- TIA: 9.00 dB
- LNA: 30.00 dB
- PGA: -7.00 dB
State of gain elements for Tx channel 0 (AGC not supported):
- PAD: 0.00 dB
- IAMP: 0.00 dB
Rx antenna set to LNAH
Tx antenna set to BAND1

==== eNodeB started ===
Type <t> to view trace
[INFO] RX LPF configured
[INFO] RX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 11.52 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 11.52 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
Setting frequency: DL=942.5 Mhz, UL=897.5 MHz for cc_idx=0 nof_prb=50
[INFO] Tx calibration finished
[INFO] Tx calibration finished
[INFO] Rx calibration finished
[INFO] Rx calibration finished

srsUE
Opening 1 channels in RF device=soapy with args=default
Supported RF device list: UHD soapy zmq file
Soapy has found device #0: addr=1d50:6108, driver=lime, label=LimeSDR-USB [USB 3.0] 90706024D2515, media=USB 3.0, module=FX3, name=LimeSDR-USB, serial=00090706024D2515, 
Selecting Soapy device: 0
Detected LimeSDR. Consider using LTE rates for better RF performance.
Either compile with '-DUSE_LTE_RATES=True' or start srsENB/srsUE with '--expert.lte_sample_rates=true'
[INFO] Make connection: 'LimeSDR-USB [USB 3.0] 90706024D2515'
[INFO] Reference clock 30.72 MHz
[INFO] Device name: LimeSDR-USB
[INFO] Reference: 30.72 MHz
[INFO] LMS7002M register cache: Disabled
Setting up Rx stream with 1 channel(s)
Setting up Tx stream with 1 channel(s)
[INFO] RX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
Available device sensors: 
- clock_locked
- lms7_temp
Available sensors for Rx channel 0: 
- lo_locked
State of gain elements for Rx channel 0 (AGC not supported):
- TIA: 9.00 dB
- LNA: 30.00 dB
- PGA: -7.00 dB
State of gain elements for Tx channel 0 (AGC not supported):
- PAD: 0.00 dB
- IAMP: 0.00 dB
Rx antenna set to LNAL
Tx antenna set to BAND1
Waiting PHY to initialize ... done!
Attaching UE...
Starting plot for worker_id=0
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
[INFO] Tx calibration finished
[INFO] Rx calibration finished
.
Found Cell:  Mode=FDD, PCI=1, PRB=50, Ports=2, CP=Normal, CFO=-0,1 KHz
[INFO] RX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 11,52 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
RF status: O=0, U=0, L=1
[INFO] RX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
.
Found Cell:  Mode=FDD, PCI=1, PRB=50, Ports=2, CP=Normal, CFO=-0,2 KHz
[INFO] RX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 11,52 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
[INFO] RX LPF configured
[INFO] Filter calibrated. Filter order-4th, filter bandwidth set to 5 MHz.Real pole 1st order filter set to 2.5 MHz. Preemphasis filter not active
[INFO] TX LPF configured
.
Found Cell:  Mode=FDD, PCI=1, PRB=50, Ports=2, CP=Normal, CFO=0,2 KHz

Interesting note. srsUE finds the cell, but then nothing happens. What should be done in this situation?

Steps to reproduce the problem

Configs

databes (open5gs)
[{
"_id": {
  "$oid": "630d99f79a163df784831075"
},
"imsi": "001010000001339",
"subscribed_rau_tau_timer": 12,
"network_access_mode": 0,
"subscriber_status": 0,
"access_restriction_data": 32,
"slice": [
  {
    "sst": 1,
    "default_indicator": true,
    "_id": {
      "$oid": "62d511e515b346001610661c"
    },
    "session": [
      {
        "name": "internet",
        "type": 1,
        "_id": {
          "$oid": "62d511e515b346001610661f"
        },
        "pcc_rule": [],
        "ambr": {
          "uplink": {
            "value": 1,
            "unit": 3
          },
          "downlink": {
            "value": 1,
            "unit": 3
          }
        },
        "qos": {
          "index": 9,
          "arp": {
            "priority_level": 8,
            "pre_emption_capability": 1,
            "pre_emption_vulnerability": 1
          }
        }
      },
      {
        "name": "ims",
        "type": 1,
        "_id": {
          "$oid": "62d511e515b346001610661d"
        },
        "pcc_rule": [
          {
            "_id": {
              "$oid": "62d511e515b346001610661e"
            },
            "qos": {
              "index": 1,
              "gbr": {
                "uplink": {
                  "value": 128,
                  "unit": 1
                },
                "downlink": {
                  "value": 128,
                  "unit": 1
                }
              },
              "mbr": {
                "uplink": {
                  "value": 128,
                  "unit": 1
                },
                "downlink": {
                  "value": 128,
                  "unit": 1
                }
              },
              "arp": {
                "priority_level": 2,
                "pre_emption_capability": 2,
                "pre_emption_vulnerability": 2
              }
            },
            "flow": []
          }
        ],
        "ambr": {
          "uplink": {
            "value": 1530,
            "unit": 1
          },
          "downlink": {
            "value": 3850,
            "unit": 1
          }
        },
        "qos": {
          "index": 5,
          "arp": {
            "priority_level": 1,
            "pre_emption_capability": 1,
            "pre_emption_vulnerability": 1
          }
        }
      }
    ]
  }
],
"ambr": {
  "uplink": {
    "value": 1,
    "unit": 3
  },
  "downlink": {
    "value": 1,
    "unit": 3
  }
},
"security": {
  "k": "F17D97B3CABBB032A217E2D783F289A1",
  "amf": "8000",
  "op": "49EB0C86BDF39192AF90D327932FA9EE",
  "opc": null,
  "sqn": 128
},
"imeisv": "8601610559128512",
"msisdn": [
  "1339"
],
"schema_version": 1,
"__v": 0
},{
"_id": {
  "$oid": "630d99f79a163df784831076"
},
"imsi": "001010000001337",
"subscribed_rau_tau_timer": 12,
"network_access_mode": 0,
"subscriber_status": 0,
"access_restriction_data": 32,
"slice": [
  {
    "sst": 1,
    "default_indicator": true,
    "_id": {
      "$oid": "62d50ddedb04480016b27ad7"
    },
    "session": [
      {
        "name": "internet",
        "type": 1,
        "_id": {
          "$oid": "62d50ddedb04480016b27ada"
        },
        "pcc_rule": [],
        "ambr": {
          "uplink": {
            "value": 1,
            "unit": 3
          },
          "downlink": {
            "value": 1,
            "unit": 3
          }
        },
        "qos": {
          "index": 9,
          "arp": {
            "priority_level": 8,
            "pre_emption_capability": 1,
            "pre_emption_vulnerability": 1
          }
        }
      },
      {
        "name": "ims",
        "type": 1,
        "_id": {
          "$oid": "62d50ddedb04480016b27ad8"
        },
        "pcc_rule": [
          {
            "_id": {
              "$oid": "62d50ddedb04480016b27ad9"
            },
            "qos": {
              "index": 1,
              "gbr": {
                "uplink": {
                  "value": 128,
                  "unit": 1
                },
                "downlink": {
                  "value": 128,
                  "unit": 1
                }
              },
              "mbr": {
                "uplink": {
                  "value": 128,
                  "unit": 1
                },
                "downlink": {
                  "value": 128,
                  "unit": 1
                }
              },
              "arp": {
                "priority_level": 2,
                "pre_emption_capability": 2,
                "pre_emption_vulnerability": 2
              }
            },
            "flow": []
          }
        ],
        "ambr": {
          "uplink": {
            "value": 1530,
            "unit": 1
          },
          "downlink": {
            "value": 3850,
            "unit": 1
          }
        },
        "qos": {
          "index": 5,
          "arp": {
            "priority_level": 1,
            "pre_emption_capability": 1,
            "pre_emption_vulnerability": 1
          }
        }
      }
    ]
  }
],
"ambr": {
  "uplink": {
    "value": 1,
    "unit": 3
  },
  "downlink": {
    "value": 1,
    "unit": 3
  }
},
"security": {
  "k": "A6896C6EA5749B67F3A07F7E7611997D",
  "amf": "8000",
  "op": "6692021D5D8BC4D43C9F8D557192F32D",
  "opc": null,
  "sqn": 256
},
"imeisv": "3523331147151901",
"msisdn": [
  "1337"
],
"schema_version": 1,
"__v": 0
},{
"_id": {
  "$oid": "630f1f61f2b4020016a419cd"
},
"imsi": "001010000001338",
"subscribed_rau_tau_timer": 12,
"network_access_mode": 0,
"subscriber_status": 0,
"access_restriction_data": 32,
"slice": [
  {
    "sst": 1,
    "default_indicator": true,
    "_id": {
      "$oid": "630f1f61f2b4020016a419ce"
    },
    "session": [
      {
        "name": "internet",
        "type": 1,
        "_id": {
          "$oid": "630f1f62f2b4020016a419cf"
        },
        "pcc_rule": [],
        "ambr": {
          "uplink": {
            "value": 1,
            "unit": 3
          },
          "downlink": {
            "value": 1,
            "unit": 3
          }
        },
        "qos": {
          "index": 9,
          "arp": {
            "priority_level": 8,
            "pre_emption_capability": 1,
            "pre_emption_vulnerability": 1
          }
        }
      }
    ]
  }
],
"ambr": {
  "uplink": {
    "value": 1,
    "unit": 3
  },
  "downlink": {
    "value": 1,
    "unit": 3
  }
},
"security": {
  "k": "00112233445566778899aabbccddeeff",
  "amf": "8000",
  "op": null,
  "opc": "63BFA50EE6523365FF14C1F45F88737D"
},
"imeisv": [],
"msisdn": [],
"schema_version": 1,
"__v": 0
}]

ue.conf
#####################################################################
#                   srsUE configuration file
#####################################################################

#####################################################################
# RF configuration
#
# freq_offset: Uplink and Downlink optional frequency offset (in Hz)
# tx_gain: Transmit gain (dB).
# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled
# srate: Optional fixed sampling rate (Hz), corresponding to cell bandwidth. Must be set for 5G-SA.
#
# nof_antennas:       Number of antennas per carrier (all carriers have the same number of antennas)
# device_name:        Device driver family. Supported options: "auto" (uses first found), "UHD" or "bladeRF"
# device_args:        Arguments for the device driver. Options are "auto" or any string.
#                     Default for UHD: "recv_frame_size=9232,send_frame_size=9232"
#                     Default for bladeRF: ""
# device_args_2:      Arguments for the RF device driver 2.
# device_args_3:      Arguments for the RF device driver 3.
# time_adv_nsamples:  Transmission time advance (in number of samples) to compensate for RF delay
#                     from antenna to timestamp insertion.
#                     Default "auto". B210 USRP: 100 samples, bladeRF: 27.
# continuous_tx:      Transmit samples continuously to the radio or on bursts (auto/yes/no).
#                     Default is auto (yes for UHD, no for rest)
#####################################################################
[rf]
freq_offset = 0
tx_gain = 56
rx_gain = 38
#srate = 11.52e6

device_name = soapy
device_args = rxant=LNAH,txant=BAND1

nof_antennas = 1

# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings:
#     USRP B210: num_recv_frames=64,num_send_frames=64

# For best performance when BW<5 MHz (25 PRB), use the following device_args settings:
#     USRP B210: send_frame_size=512,recv_frame_size=512

#device_args = auto
#time_adv_nsamples = auto
#continuous_tx     = auto

# Example for ZMQ-based operation with TCP transport for I/Q samples
#device_name = zmq
#device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=23.04e6

#####################################################################
# EUTRA RAT configuration
#
# dl_earfcn:   Downlink EARFCN list.
#
# Optional parameters:
# dl_freq:            Override DL frequency corresponding to dl_earfcn
# ul_freq:            Override UL frequency corresponding to dl_earfcn
# nof_carriers:       Number of carriers
#####################################################################
[rat.eutra]
dl_earfcn = 3625
#nof_carriers = 2

#####################################################################
# NR RAT configuration
#
# Optional parameters:
# bands:           List of support NR bands seperated by a comma (default 78)
# nof_carriers:    Number of NR carriers (must be at least 1 for NR support)
#####################################################################
[rat.nr]
# bands = 78
# nof_carriers = 0

#####################################################################
# Packet capture configuration
#
# Packet capture is supported at the MAC, MAC_NR, and NAS layer.
# MAC-layer packets are captured to file a the compact format decoded
# by the Wireshark. For decoding, use the UDP dissector and the UDP
# heuristic dissection. Edit the preferences (Edit > Preferences >
# Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with
# Protocol=udp. Further, enable the heuristic dissection in UDP under:
# Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp
# For more information see: https://wiki.wireshark.org/MAC-LTE
# Using the same filename for mac_filename and mac_nr_filename writes both
# MAC-LTE and MAC-NR to the same file allowing a better analysis.
# NAS-layer packets are dissected with DLT=148, and Protocol = nas-eps.
#
# enable:            Enable packet captures of layers (mac/mac_nr/nas/none) multiple option list
# mac_filename:      File path to use for MAC packet capture
# mac_nr_filename:   File path to use for MAC NR packet capture
# nas_filename:      File path to use for NAS packet capture
#####################################################################
[pcap]
enable = none
mac_filename = /tmp/ue_mac.pcap
mac_nr_filename = /tmp/ue_mac_nr.pcap
nas_filename = /tmp/ue_nas.pcap

#####################################################################
# Log configuration
#
# Log levels can be set for individual layers. "all_level" sets log
# level for all layers unless otherwise configured.
# Format: e.g. phy_level = info
#
# In the same way, packet hex dumps can be limited for each level.
# "all_hex_limit" sets the hex limit for all layers unless otherwise
# configured.
# Format: e.g. phy_hex_limit = 32
#
# Logging layers: rf, phy, mac, rlc, pdcp, rrc, nas, gw, usim, stack, all
# Logging levels: debug, info, warning, error, none
#
# filename: File path to use for log output. Can be set to stdout
#           to print logs to standard output
# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created.
#                If set to negative, a single log file will be created.
#####################################################################
[log]
all_level = none
phy_lib_level = info
all_hex_limit = 32
filename = /tmp/ue.log
file_max_size = -1

#####################################################################
# USIM configuration
#
# mode:   USIM mode (soft/pcsc)
# algo:   Authentication algorithm (xor/milenage)
# op/opc: 128-bit Operator Variant Algorithm Configuration Field (hex)
#         - Specify either op or opc (only used in milenage)
# k:      128-bit subscriber key (hex)
# imsi:   15 digit International Mobile Subscriber Identity
# imei:   15 digit International Mobile Station Equipment Identity
# pin:    PIN in case real SIM card is used
# reader: Specify card reader by it's name as listed by 'pcsc_scan'. If empty, try all available readers.
#####################################################################
[usim]
mode = soft
algo = milenage
opc  = 63BFA50EE6523365FF14C1F45F88737D
k    = 00112233445566778899aabbccddeeff
imsi = 001010000001338
imei = 353490069873319
#reader =
#pin  = 1234

#####################################################################
# RRC configuration
#
# ue_category:          Sets UE category (range 1-5). Default: 4
# release:              UE Release (8 to 15)
# feature_group:        Hex value of the featureGroupIndicators field in the
#                       UECapabilityInformation message. Default 0xe6041000
# mbms_service_id:      MBMS service id for autostarting MBMS reception
#                       (default -1 means disabled)
# mbms_service_port:    Port of the MBMS service
# nr_measurement_pci:   NR PCI for the simulated NR measurement. Default: 500
# nr_short_sn_support:  Announce PDCP short SN support. Default: true
#####################################################################
[rrc]
#ue_category       = 4
#release           = 8
#feature_group     = 0xe6041000
#mbms_service_id   = -1
#mbms_service_port = 4321

#####################################################################
# NAS configuration
#
# apn:               Set Access Point Name (APN)
# apn_protocol:      Set APN protocol (IPv4, IPv6 or IPv4v6.)
# user:              Username for CHAP authentication
# pass:              Password for CHAP authentication
# force_imsi_attach: Whether to always perform an IMSI attach
# eia:               List of integrity algorithms included in UE capabilities
#                      Supported: 1 - Snow3G, 2 - AES, 3 - ZUC
# eea:               List of ciphering algorithms included in UE capabilities
#                      Supported: 0 - NULL, 1 - Snow3G, 2 - AES, 3 - ZUC
#####################################################################
[nas]
apn = internet
apn_protocol = ipv4
#user = srsuser
#pass = srspass
#force_imsi_attach = true
#eia = 1,2,3
#eea = 0,1,2,3

#####################################################################
# GW configuration
#
# netns:                Network namespace to create TUN device. Default: empty
# ip_devname:           Name of the tun_srsue device. Default: tun_srsue
# ip_netmask:           Netmask of the tun_srsue device. Default: 255.255.255.0
#####################################################################
[gw]
#netns =
#ip_devname = tun_srsue
#ip_netmask = 255.255.255.0

#####################################################################
# GUI configuration
#
# Simple GUI displaying PDSCH constellation and channel freq response.
# (Requires building with srsGUI)
# enable:               Enable the graphical interface (true/false)
#####################################################################
[gui]
enable = true

#####################################################################
# Channel emulator options:
# enable:            Enable/Disable internal Downlink/Uplink channel emulator
#
# -- AWGN Generator
# awgn.enable:       Enable/disable AWGN generator
# awgn.snr:          SNR in dB
# awgn.signal_power: Received signal power in decibels full scale (dBfs)
#
# -- Fading emulator
# fading.enable:     Enable/disable fading simulator
# fading.model:      Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc)
#
# -- Delay Emulator     delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2
#                       Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period
# delay.enable:      Enable/disable delay simulator
# delay.period_s:    Delay period in seconds.
# delay.init_time_s: Delay initial time in seconds.
# delay.maximum_us:  Maximum delay in microseconds
# delay.minumum_us:  Minimum delay in microseconds
#
# -- Radio-Link Failure (RLF) Emulator
# rlf.enable:        Enable/disable RLF simulator
# rlf.t_on_ms:       Time for On state of the channel (ms)
# rlf.t_off_ms:      Time for Off state of the channel (ms)
#
# -- High Speed Train Doppler model simulator
# hst.enable:        Enable/Disable HST simulator
# hst.period_s:      HST simulation period in seconds
# hst.fd_hz:         Doppler frequency in Hz
# hst.init_time_s:   Initial time in seconds
#####################################################################
[channel.dl]
#enable        = false

[channel.dl.awgn]
#enable        = false
#snr           = 30

[channel.dl.fading]
#enable        = false
#model         = none

[channel.dl.delay]
#enable        = false
#period_s      = 3600
#init_time_s   = 0
#maximum_us    = 100
#minimum_us    = 10

[channel.dl.rlf]
#enable        = false
#t_on_ms       = 10000
#t_off_ms      = 2000

[channel.dl.hst]
#enable        = false
#period_s      = 7.2
#fd_hz         = 750.0
#init_time_s   = 0.0

[channel.ul]
#enable        = false

[channel.ul.awgn]
#enable        = false
#n0            = -30

[channel.ul.fading]
#enable        = false
#model         = none

[channel.ul.delay]
#enable        = false
#period_s      = 3600
#init_time_s   = 0
#maximum_us    = 100
#minimum_us    = 10

[channel.ul.rlf]
#enable        = false
#t_on_ms       = 10000
#t_off_ms      = 2000

[channel.ul.hst]
#enable        = false
#period_s      = 7.2
#fd_hz         = -750.0
#init_time_s   = 0.0

#####################################################################
# PHY configuration options
#
# rx_gain_offset:       RX Gain offset to add to rx_gain to calibrate RSRP readings
# prach_gain:           PRACH gain (dB). If defined, forces a gain for the tranmsission of PRACH only.,
#                       Default is to use tx_gain in [rf] section.
# cqi_max:              Upper bound on the maximum CQI to be reported. Default 15.
# cqi_fixed:            Fixes the reported CQI to a constant value. Default disabled.
# snr_ema_coeff:        Sets the SNR exponential moving average coefficient (Default 0.1)
# snr_estim_alg:        Sets the noise estimation algorithm. (Default refs)
#                          Options: pss:   use difference between received and known pss signal,
#                                   refs:  use difference between noise references and noiseless (after filtering)
#                                   empty: use empty subcarriers in the boarder of pss/sss signal
# pdsch_max_its:        Maximum number of turbo decoder iterations (Default 4)
# pdsch_meas_evm:       Measure PDSCH EVM, increases CPU load (default false)
# nof_phy_threads:      Selects the number of PHY threads (maximum 4, minimum 1, default 3)
# equalizer_mode:       Selects equalizer mode. Valid modes are: "mmse", "zf" or any
#                       non-negative real number to indicate a regularized zf coefficient.
#                       Default is MMSE.
# correct_sync_error:   Channel estimator measures and pre-compensates time synchronization error. Increases CPU usage,
#                       improves PDSCH decoding in high SFO and high speed UE scenarios.
# sfo_ema:              EMA coefficient to average sample offsets used to compute SFO
# sfo_correct_period:   Period in ms to correct sample time to adjust for SFO
# sss_algorithm:        Selects the SSS estimation algorithm. Can choose between
#                       {full, partial, diff}.
# estimator_fil_auto:   The channel estimator smooths the channel estimate with an adaptative filter.
# estimator_fil_stddev: Sets the channel estimator smooth gaussian filter standard deviation.
# estimator_fil_order:  Sets the channel estimator smooth gaussian filter order (even values perform better).
#                       The taps are [w, 1-2w, w]
#
# snr_to_cqi_offset:    Sets an offset in the SNR to CQI table. This is used to adjust the reported CQI.
#
# interpolate_subframe_enabled: Interpolates in the time domain the channel estimates within 1 subframe. Default is to average.
#
# pdsch_csi_enabled:     Stores the Channel State Information and uses it for weightening the softbits. It is only
#                        used in TM1. It is True by default.
#
# pdsch_8bit_decoder:    Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental)
# force_ul_amplitude:    Forces the peak amplitude in the PUCCH, PUSCH and SRS (set 0.0 to 1.0, set to 0 or negative for disabling)
#
# in_sync_rsrp_dbm_th:    RSRP threshold (in dBm) above which the UE considers to be in-sync
# in_sync_snr_db_th:      SNR threshold (in dB) above which the UE considers to be in-sync
# nof_in_sync_events:     Number of PHY in-sync events before sending an in-sync event to RRC
# nof_out_of_sync_events: Number of PHY out-sync events before sending an out-sync event to RRC
#
# force_N_id_2: Force using a specific PSS (set to -1 to allow all PSSs).
# force_N_id_1: Force using a specific SSS (set to -1 to allow all SSSs).
#
#####################################################################
[phy]
#rx_gain_offset      = 62
#prach_gain          = 30
#cqi_max             = 15
#cqi_fixed           = 10
#snr_ema_coeff       = 0.1
#snr_estim_alg       = refs
#pdsch_max_its       = 8    # These are half iterations
#pdsch_meas_evm      = false
nof_phy_threads     = 4
#equalizer_mode      = mmse
#correct_sync_error  = false
#sfo_ema             = 0.1
#sfo_correct_period  = 10
#sss_algorithm       = full
#estimator_fil_auto  = false
#estimator_fil_stddev  = 1.0
#estimator_fil_order  = 4
#snr_to_cqi_offset   = 0.0
#interpolate_subframe_enabled = false
#pdsch_csi_enabled  = true
#pdsch_8bit_decoder = false
#force_ul_amplitude = 0
#detect_cp          = false

#in_sync_rsrp_dbm_th    = -130.0
#in_sync_snr_db_th      = 3.0
#nof_in_sync_events     = 10
#nof_out_of_sync_events = 20

#force_N_id_2           = 1
#force_N_id_1           = 10

#####################################################################
# PHY NR specific configuration options
#
# store_pdsch_ko:       Dumps the PDSCH baseband samples into a file on KO reception
#
#####################################################################
[phy.nr]
#store_pdsch_ko = false

#####################################################################
# CFR configuration options
#
# The CFR module provides crest factor reduction for the transmitted signal.
#
# enable:           Enable or disable the CFR. Default: disabled
#
# mode:             manual:   CFR threshold is set by cfr_manual_thres (default).
#                   auto_ema: CFR threshold is adaptive based on the signal PAPR. Power avg. with Exponential Moving Average.
#                             The time constant of the averaging can be tweaked with the ema_alpha parameter.
#                   auto_cma: CFR threshold is adaptive based on the signal PAPR. Power avg. with Cumulative Moving Average.
#                             Use with care, as CMA's increasingly slow response may be unsuitable for most use cases.
#
# strength:         Ratio between amplitude-limited vs unprocessed signal (0 to 1). Default: 1
# manual_thres:     Fixed manual clipping threshold for CFR manual mode. Default: 2
# auto_target_papr: Signal PAPR target (in dB) in CFR auto modes. output PAPR can be higher due to peak smoothing. Default: 7
# ema_alpha:        Alpha coefficient for the power average in auto_ema mode. Default: 1/7
#
#####################################################################
[cfr]
#enable           = false
#mode             = manual
#manual_thres     = 2.0
#strength         = 1.0
#auto_target_papr = 7.0
#ema_alpha        = 0.0143

#####################################################################
# Simulation configuration options
#
# The UE simulation supports turning on and off airplane mode in the UE.
# The actions are carried periodically until the UE is stopped.
#
# airplane_t_on_ms:   Time to leave airplane mode turned on (in ms)
#
# airplane_t_off_ms:  Time to leave airplane mode turned off (in ms)
#
#####################################################################
[sim]
#airplane_t_on_ms  = -1
#airplane_t_off_ms = -1

#####################################################################
# General configuration options
#
# metrics_csv_enable:    Write UE metrics to CSV file.
#
# metrics_period_secs:   Sets the period at which metrics are requested from the UE.
#
# metrics_csv_filename:  File path to use for CSV metrics.
#
# tracing_enable:        Write source code tracing information to a file.
#
# tracing_filename:      File path to use for tracing information.
#
# tracing_buffcapacity:  Maximum capacity in bytes the tracing framework can store.
#
# have_tti_time_stats:   Calculate TTI execution statistics using system clock
#
# metrics_json_enable:   Write UE metrics to JSON file.
#
# metrics_json_filename: File path to use for JSON metrics.
#
#####################################################################
[general]
#metrics_csv_enable    = false
#metrics_period_secs   = 1
#metrics_csv_filename  = /tmp/ue_metrics.csv
#have_tti_time_stats   = true
#tracing_enable        = true
#tracing_filename      = /tmp/ue_tracing.log
#tracing_buffcapacity  = 1000000
#metrics_json_enable   = false
#metrics_json_filename = /tmp/ue_metrics.json


enb.conf
#####################################################################
#                   srsENB configuration file
#####################################################################

#####################################################################
# eNB configuration
#
# enb_id:               20-bit eNB identifier.
# mcc:                  Mobile Country Code
# mnc:                  Mobile Network Code
# mme_addr:             IP address of MME for S1 connnection
# gtp_bind_addr:        Local IP address to bind for GTP connection
# gtp_advertise_addr:   IP address of eNB to advertise for DL GTP-U Traffic
# s1c_bind_addr:        Local IP address to bind for S1AP connection
# n_prb:                Number of Physical Resource Blocks (6,15,25,50,75,100)
# tm:                   Transmission mode 1-4 (TM1 default)
# nof_ports:            Number of Tx ports (1 port default, set to 2 for TM2/3/4)
#
#####################################################################
[enb]
enb_id = 0x19B
mcc = MCC
mnc = MNC

mme_addr = MME_IP
gtp_bind_addr = SRS_ENB_IP
s1c_bind_addr = SRS_ENB_IP
n_prb = 50
tm = 4
nof_ports = 2

#####################################################################
# eNB configuration files 
#
# sib_config:  SIB1, SIB2 and SIB3 configuration file 
# note: when enabling mbms, use the sib.conf.mbsfn configuration file which includes SIB13
# rr_config:   Radio Resources configuration file 
# drb_config:  DRB configuration file 
#####################################################################
[enb_files]
sib_config = sib.conf
rr_config  = rr.conf
drb_config = drb.conf

#####################################################################
# RF configuration
#
# dl_earfcn: EARFCN code for DL (only valid if a single cell is configured in rr.conf)
# tx_gain: Transmit gain (dB). 
# rx_gain: Optional receive gain (dB). If disabled, AGC if enabled
#
# Optional parameters:
# dl_freq:            Override DL frequency corresponding to dl_earfcn
# ul_freq:            Override UL frequency corresponding to dl_earfcn (must be set if dl_freq is set)
# device_name:        Device driver family.
#                     Supported options: "auto" (uses first found), "UHD", "bladeRF", "soapy" or "zmq".
# device_args:        Arguments for the device driver. Options are "auto" or any string.
#                     Default for UHD: "recv_frame_size=9232,send_frame_size=9232"
#                     Default for bladeRF: ""
# time_adv_nsamples:  Transmission time advance (in number of samples) to compensate for RF delay
#                     from antenna to timestamp insertion.
#                     Default "auto". B210 USRP: 100 samples, bladeRF: 27.
#####################################################################
[rf]
dl_earfcn = 3625
tx_gain = 56
rx_gain = 38
device_name = soapy
device_args = rxant=LNAH,txant=BAND1

# For best performance in 2x2 MIMO and >= 15 MHz use the following device_args settings:
#     USRP B210: num_recv_frames=64,num_send_frames=64
#     And for 75 PRBs, also append ",master_clock_rate=15.36e6" to the device args

# For best performance when BW<5 MHz (25 PRB), use the following device_args settings:
#     USRP B210: send_frame_size=512,recv_frame_size=512

#device_args = auto
#time_adv_nsamples = auto

# Example for ZMQ-based operation with TCP transport for I/Q samples
#device_name = zmq
#device_args = fail_on_disconnect=true,tx_port=tcp://*:2000,rx_port=tcp://localhost:2001,id=enb,base_srate=23.04e6

#####################################################################
# Packet capture configuration
#
# MAC-layer packets are captured to file a the compact format decoded 
# by the Wireshark. For decoding, use the UDP dissector and the UDP 
# heuristic dissection. Edit the preferences (Edit > Preferences > 
# Protocols > DLT_USER) for DLT_USER to add an entry for DLT=149 with 
# Protocol=udp. Further, enable the heuristic dissection in UDP under:
# Analyze > Enabled Protocols > MAC-LTE > mac_lte_udp and MAC-NR > mac_nr_udp
# For more information see: https://wiki.wireshark.org/MAC-LTE
# Configuring this Wireshark preferences is needed for decoding the MAC PCAP 
# files as well as for the live network capture option.  
#
# Please note that this setting will by default only capture MAC
# frames on dedicated channels, and not SIB.  You have to build with
# WRITE_SIB_PCAP enabled in srsenb/src/stack/mac/mac.cc if you want
# SIB to be part of the MAC pcap file.
#
# S1AP Packets are captured to file in the compact format decoded by 
# the Wireshark s1ap dissector and with DLT 150. 
# To use the dissector, edit the preferences for DLT_USER to 
# add an entry with DLT=150, Payload Protocol=s1ap.
#
# mac_enable:   Enable MAC layer packet captures (true/false)
# mac_filename: File path to use for packet captures
# s1ap_enable:   Enable or disable the PCAP.
# s1ap_filename: File name where to save the PCAP.
#
# mac_net_enable: Enable MAC layer packet captures sent over the network (true/false default: false)
# bind_ip: Bind IP address for MAC network trace (default: "0.0.0.0")
# bind_port: Bind port for MAC network trace (default: 5687)
# client_ip: Client IP address for MAC network trace (default "127.0.0.1")
# client_port Client IP address for MAC network trace (default: 5847)
#####################################################################
[pcap]
#enable = false
#filename = /tmp/enb.pcap
#s1ap_enable = false
#s1ap_filename = /tmp/enb_s1ap.pcap

#mac_net_enable = false
#bind_ip = 0.0.0.0
#bind_port = 5687
#client_ip = 127.0.0.1
#client_port = 5847

#####################################################################
# Log configuration
#
# Log levels can be set for individual layers. "all_level" sets log
# level for all layers unless otherwise configured.
# Format: e.g. phy_level = info
#
# In the same way, packet hex dumps can be limited for each level.
# "all_hex_limit" sets the hex limit for all layers unless otherwise
# configured.
# Format: e.g. phy_hex_limit = 32
#
# Logging layers: rf, phy, phy_lib, mac, rlc, pdcp, rrc, gtpu, s1ap, stack, all
# Logging levels: debug, info, warning, error, none
#
# filename: File path to use for log output. Can be set to stdout
#           to print logs to standard output
# file_max_size: Maximum file size (in kilobytes). When passed, multiple files are created.
#                If set to negative, a single log file will be created.
#####################################################################
[log]
all_level = warning
all_hex_limit = 32
filename = /tmp/enb.log
file_max_size = -1

[gui]
enable = false

#####################################################################
# Scheduler configuration options
#
# sched_policy:      User MAC scheduling policy (E.g. time_rr, time_pf)
# max_aggr_level:    Optional maximum aggregation level index (l=log2(L) can be 0, 1, 2 or 3)
# pdsch_mcs:         Optional fixed PDSCH MCS (ignores reported CQIs if specified)
# pdsch_max_mcs:     Optional PDSCH MCS limit 
# pusch_mcs:         Optional fixed PUSCH MCS (ignores reported CQIs if specified)
# pusch_max_mcs:     Optional PUSCH MCS limit 
# min_nof_ctrl_symbols: Minimum number of control symbols 
# max_nof_ctrl_symbols: Maximum number of control symbols 
#
#####################################################################
[scheduler]
#policy     = time_pf
#policy_args = 2
#max_aggr_level   = -1
#pdsch_mcs        = -1
#pdsch_max_mcs    = -1
#pusch_mcs        = -1
#pusch_max_mcs    = 16
#min_nof_ctrl_symbols = 1
#max_nof_ctrl_symbols = 3
#pucch_multiplex_enable = false

#####################################################################
# eMBMS configuration options
#
# enable:               Enable MBMS transmission in the eNB
# m1u_multiaddr:        Multicast addres the M1-U socket will register to
# m1u_if_addr:          Address of the inteferface the M1-U interface will listen for multicast packets.
# mcs:                  Modulation and Coding scheme for MBMS traffic.
#
#####################################################################
[embms]
#enable = false
#m1u_multiaddr = 239.255.0.1
#m1u_if_addr = 127.0.1.201
#mcs = 20



#####################################################################
# Channel emulator options:
# enable:            Enable/Disable internal Downlink/Uplink channel emulator
#
# -- AWGN Generator
# awgn.enable:       Enable/disable AWGN generator
# awgn.snr:          Target SNR in dB
#
# -- Fading emulator
# fading.enable:     Enable/disable fading simulator
# fading.model:      Fading model + maximum doppler (E.g. none, epa5, eva70, etu300, etc)
#
# -- Delay Emulator     delay(t) = delay_min + (delay_max - delay_min) * (1 + sin(2pi*t/period)) / 2
#                       Maximum speed [m/s]: (delay_max - delay_min) * pi * 300 / period
# delay.enable:      Enable/disable delay simulator
# delay.period_s:    Delay period in seconds.
# delay.init_time_s: Delay initial time in seconds.
# delay.maximum_us:  Maximum delay in microseconds
# delay.minumum_us:  Minimum delay in microseconds
#
# -- Radio-Link Failure (RLF) Emulator
# rlf.enable:        Enable/disable RLF simulator
# rlf.t_on_ms:       Time for On state of the channel (ms)
# rlf.t_off_ms:      Time for Off state of the channel (ms)
#
# -- High Speed Train Doppler model simulator
# hst.enable:        Enable/Disable HST simulator
# hst.period_s:      HST simulation period in seconds
# hst.fd_hz:         Doppler frequency in Hz
# hst.init_time_s:   Initial time in seconds
#####################################################################
[channel.dl]
#enable        = false

[channel.dl.awgn]
#enable        = false
#snr            = 30

[channel.dl.fading]
#enable        = false
#model         = none

[channel.dl.delay]
#enable        = false
#period_s      = 3600
#init_time_s   = 0
#maximum_us    = 100
#minimum_us    = 10

[channel.dl.rlf]
#enable        = false
#t_on_ms       = 10000
#t_off_ms      = 2000

[channel.dl.hst]
#enable        = false
#period_s      = 7.2
#fd_hz         = 750.0
#init_time_s   = 0.0

[channel.ul]
#enable        = false

[channel.ul.awgn]
#enable        = false
#n0            = -30

[channel.ul.fading]
#enable        = false
#model         = none

[channel.ul.delay]
#enable        = false
#period_s      = 3600
#init_time_s   = 0
#maximum_us    = 100
#minimum_us    = 10

[channel.ul.rlf]
#enable        = false
#t_on_ms       = 10000
#t_off_ms      = 2000

[channel.ul.hst]
#enable        = false
#period_s      = 7.2
#fd_hz         = -750.0
#init_time_s   = 0.0


#####################################################################
# Expert configuration options
#
# pusch_max_its:        Maximum number of turbo decoder iterations (Default 4)
# pusch_8bit_decoder:   Use 8-bit for LLR representation and turbo decoder trellis computation (Experimental)
# nof_phy_threads:      Selects the number of PHY threads (maximum 4, minimum 1, default 3)
# metrics_period_secs:  Sets the period at which metrics are requested from the eNB. 
# metrics_csv_enable:   Write eNB metrics to CSV file.
# metrics_csv_filename: File path to use for CSV metrics.
# tracing_enable:       Write source code tracing information to a file.
# tracing_filename:     File path to use for tracing information.
# tracing_buffcapacity: Maximum capacity in bytes the tracing framework can store.
# pregenerate_signals:  Pregenerate uplink signals after attach. Improves CPU performance.
# tx_amplitude:         Transmit amplitude factor (set 0-1 to reduce PAPR)
# rrc_inactivity_timer  Inactivity timeout used to remove UE context from RRC (in milliseconds).
# max_prach_offset_us:  Maximum allowed RACH offset (in us)
# nof_prealloc_ues:     Number of UE memory resources to preallocate during eNB initialization for faster UE creation (Default 8)
# eea_pref_list:        Ordered preference list for the selection of encryption algorithm (EEA) (default: EEA0, EEA2, EEA1).
# eia_pref_list:        Ordered preference list for the selection of integrity algorithm (EIA) (default: EIA2, EIA1, EIA0).
#
#####################################################################
[expert]
#pusch_max_its        = 8 # These are half iterations
#pusch_8bit_decoder   = false
#nof_phy_threads      = 3
#metrics_period_secs  = 1
#metrics_csv_enable   = false
#metrics_csv_filename = /tmp/enb_metrics.csv
#report_json_enable   = true
#report_json_filename = /tmp/enb_report.json
#alarms_log_enable    = true
#alarms_filename      = /tmp/enb_alarms.log
#tracing_enable       = true
#tracing_filename     = /tmp/enb_tracing.log
#tracing_buffcapacity = 1000000
#pregenerate_signals  = false
#tx_amplitude         = 0.6
#rrc_inactivity_timer = 30000
#max_nof_kos          = 100
#max_prach_offset_us  = 30
#nof_prealloc_ues     = 8
#eea_pref_list = EEA0, EEA2, EEA1
#eia_pref_list = EIA2, EIA1, EIA0

rr.conf
mac_cnfg =
{
phr_cnfg = 
{
  dl_pathloss_change = "dB3"; // Valid: 1, 3, 6 or INFINITY
  periodic_phr_timer = 50;
  prohibit_phr_timer = 0;
};
ulsch_cnfg = 
{
  max_harq_tx = 4;
  periodic_bsr_timer = 20; // in ms
  retx_bsr_timer = 320;   // in ms
};

time_alignment_timer = -1; // -1 is infinity
};

phy_cnfg =
{
phich_cnfg = 
{
  duration  = "Normal";
  resources = "1/6"; 
};

pusch_cnfg_ded =
{
  beta_offset_ack_idx = 6;
  beta_offset_ri_idx  = 6;
  beta_offset_cqi_idx = 6;
};

// PUCCH-SR resources are scheduled on time-frequeny domain first, then multiplexed in the same resource. 
sched_request_cnfg =
{
  dsr_trans_max = 64;
  period = 20;          // in ms
  //subframe = [1, 11]; // Optional vector of subframe indices allowed for SR transmissions (default uses all)
  nof_prb = 1;          // number of PRBs on each extreme used for SR (total prb is twice this number)
};
cqi_report_cnfg =
{ 
  mode = "periodic";
  simultaneousAckCQI = true;
  period = 40;                   // in ms
  //subframe = [0, 10, 20, 30];  // Optional vector of subframe indices every period where CQI resources will be allocated (default uses all)
  nof_prb = 1;
  m_ri = 8; // RI period in CQI period
};
};

cell_list =
(
{
  // rf_port = 0;
  cell_id = 0x01;
  tac = 0x0001;
  pci = 1;
  // root_seq_idx = 204;
  dl_earfcn = 3625;
  //ul_earfcn = 21400;
  ho_active = false;
  //meas_gap_period = 0; // 0 (inactive), 40 or 80
  // target_pusch_sinr = -1;
  // target_pucch_sinr = -1;
  // allowed_meas_bw = 6;

  // CA cells
  scell_list = (
    // {cell_id = 0x02; cross_carrier_scheduling = false; scheduling_cell_id = 0x02; ul_allowed = true}
  )

  // Cells available for handover
  meas_cell_list =
  (
    {
      eci = 0x19C02;
      dl_earfcn = 2850;
      pci = 2;
      //direct_forward_path_available = false;
      //allowed_meas_bw = 6;
    }
  );

  // ReportCfg (only A3 supported)
  meas_report_desc = {
    a3_report_type = "RSRP";
    a3_offset = 6;
    a3_hysteresis = 0;
    a3_time_to_trigger = 480;
    rsrq_config = 4;
  };
}
// Add here more cells
);

rb.conf
// All times are in ms. Use -1 for infinity, where available

// 4G Section

// srb1_config = {
//   rlc_config = {
//     ul_am = {
//       t_poll_retx = 45;
//       poll_pdu = -1;
//       poll_byte = -1;
//       max_retx_thresh = 4;
//     };
//     dl_am = {
//       t_reordering = 35;
//       t_status_prohibit = 0;
//     };
//     enb_specific = {
//      dl_max_retx_thresh = 32;
//     };
//   };
// }

// srb2_config = {
//   rlc_config = {
//     ul_am = {
//       t_poll_retx = 45;
//       poll_pdu = -1;
//       poll_byte = -1;
//       max_retx_thresh = 4;
//     };
//     dl_am = {
//       t_reordering = 35;
//       t_status_prohibit = 0;
//     };
//     enb_specific = {
//      dl_max_retx_thresh = 32;
//     };
//   };
// }

qci_config = (
{
qci=1;
pdcp_config = {
  discard_timer = 100;                
  pdcp_sn_size = 12;                  
}
rlc_config = {
  ul_um = {
    sn_field_length = 10; 
  };
  dl_um = {
    sn_field_length = 10; 
    t_reordering    = 50;
  };
};
logical_channel_config = {
  priority = 2; 
  prioritized_bit_rate   = -1; 
  bucket_size_duration  = 100; 
  log_chan_group = 1; 
};
enb_specific = {
  dl_max_retx_thresh = 32;
};
},
{
qci=2;
pdcp_config = {
  discard_timer = 100;                
  pdcp_sn_size = 12;                  
}
rlc_config = {
  ul_um = {
    sn_field_length = 10; 
  };
  dl_um = {
    sn_field_length = 10; 
    t_reordering    = 50;
  };
};
logical_channel_config = {
  priority = 4; 
  prioritized_bit_rate   = -1; 
  bucket_size_duration  = 100; 
  log_chan_group = 1; 
};
enb_specific = {
  dl_max_retx_thresh = 32;
};
},
{
qci=5;
pdcp_config = {
  discard_timer = -1;
  status_report_required = true;
}
rlc_config = {
  ul_am = {
    t_poll_retx = 80;
    poll_pdu = 128;
    poll_byte = 125;
    max_retx_thresh = 4;
  };
  dl_am = {
    t_reordering = 80;
    t_status_prohibit = 60;
  };
};
logical_channel_config = {
  priority = 11;
  prioritized_bit_rate   = -1; 
  bucket_size_duration  = 100; 
  log_chan_group = 2; 
};
enb_specific = {
  dl_max_retx_thresh = 32;
};
},
{
qci = 7;
pdcp_config = {
  discard_timer = -1;                
  pdcp_sn_size = 12;                  
}
rlc_config = {
  ul_um = {
    sn_field_length = 10; 
  };
  dl_um = {
    sn_field_length = 10; 
    t_reordering    = 45;             
  };
};
logical_channel_config = {
  priority = 13; 
  prioritized_bit_rate   = -1; 
  bucket_size_duration  = 100; 
  log_chan_group = 2; 
};
enb_specific = {
  dl_max_retx_thresh = 32;
};
},
{
qci = 9;
pdcp_config = {
  discard_timer = 150;
  status_report_required = true;
}
rlc_config = {
  ul_am = {
    t_poll_retx = 120;
    poll_pdu = 64;
    poll_byte = 750;
    max_retx_thresh = 16;
  };
  dl_am = {
    t_reordering = 50;
    t_status_prohibit = 50;
  };
};
logical_channel_config = {
  priority = 11; 
  prioritized_bit_rate   = -1; 
  bucket_size_duration  = 100; 
  log_chan_group = 3; 
};
enb_specific = {
  dl_max_retx_thresh = 32;
};
}
);

// 5G Section
five_qi_config = (
{
five_qi = 7;
pdcp_nr_config = {
  drb = {
    discard_timer = 50;
    pdcp_sn_size_ul = 18;
    pdcp_sn_size_dl = 18;
  };
  t_reordering = 50;
};
rlc_config = {
  um_bi_dir = {
    ul_um = {
      sn_field_len = 12;
    };
    dl_um = {
      sn_field_len = 12;
      t_reassembly = 50;
    };
  };
};
},
{
five_qi = 9;
pdcp_nr_config = {
  drb = {
    discard_timer = 50;
    pdcp_sn_size_ul = 18;
    pdcp_sn_size_dl = 18;
  };
  t_reordering = 50;
};
rlc_config = {
  am = {
    ul_am = {
      sn_field_len = 12;
      t_poll_retx = 50;
      poll_pdu = 4;
      poll_byte = 3000;
      max_retx_thres = 4;
    };
    dl_am = {
      sn_field_len = 12;
      t_reassembly = 50;
      t_status_prohibit = 50;
    };
  };
};
}
);


sib.conf
sib1 =
{
  intra_freq_reselection = "Allowed";
  q_rx_lev_min = -65;
  //p_max = 3;
  cell_barred = "NotBarred"
  si_window_length = 20;
  sched_info =
  (
      {
          si_periodicity = 16;

          // comma-separated array of SIB-indexes (from 3 to 13), leave empty or commented to just scheduler sib2
          si_mapping_info = [ 3 ];
      }
  );
  system_info_value_tag = 0;
};

sib2 = 
{
  rr_config_common_sib =
  {
      rach_cnfg = 
      {
          num_ra_preambles = 52;
          preamble_init_rx_target_pwr = -104;
          pwr_ramping_step = 6;  // in dB
          preamble_trans_max = 10;
          ra_resp_win_size = 10;  // in ms
          mac_con_res_timer = 64; // in ms
          max_harq_msg3_tx = 4;
      };
      bcch_cnfg = 
      {
          modification_period_coeff = 16; // in ms
      };
      pcch_cnfg = 
      {
          default_paging_cycle = 32; // in rf
          nB = "1";
      };
      prach_cnfg =
      {
          root_sequence_index = 128;
          prach_cnfg_info =
          {
              high_speed_flag = false;
              prach_config_index = 3;
             // prach_freq_offset = 4;
              prach_freq_offset = 4;
              zero_correlation_zone_config = 5;
          };
      };
      pdsch_cnfg = 
      {
          /* Warning: Currently disabled and forced to p_b=1 for TM2/3/4 and p_b=0 for TM1
           */
          p_b = 1;
          rs_power = 0;
      };
      pusch_cnfg = 
      {
          n_sb = 1;
          hopping_mode = "inter-subframe";
          pusch_hopping_offset = 2;
          enable_64_qam = false; // 64QAM PUSCH is not currently enabled
          ul_rs = 
          {
              cyclic_shift = 0; 
              group_assignment_pusch = 0;
              group_hopping_enabled = false; 
              sequence_hopping_enabled = false; 
          };
      };
      pucch_cnfg =
      {
          delta_pucch_shift = 1;
          n_rb_cqi = 1;
          n_cs_an = 0;
          n1_pucch_an = 12;
      };
      ul_pwr_ctrl =
      {
          p0_nominal_pusch = -85;
          alpha = 0.7;
          p0_nominal_pucch = -107;
          delta_flist_pucch =
          {
              format_1  = 0;
              format_1b = 3; 
              format_2  = 1;
              format_2a = 2;
              format_2b = 2;
          };
          delta_preamble_msg3 = 6;
      };
      ul_cp_length = "len1";
  };

  ue_timers_and_constants =
  {
      t300 = 2000; // in ms
      t301 = 100;  // in ms
      t310 = 200; // in ms
      n310 = 1;
      t311 = 10000; // in ms
      n311 = 1;
  };

  freqInfo = 
  {
      ul_carrier_freq_present = true; 
      ul_bw_present = true; 
      additional_spectrum_emission = 1; 
  };

  time_alignment_timer = "INFINITY"; // use "sf500", "sf750", etc.
};

sib3 =
{
  cell_reselection_common = {
      q_hyst = 2; // in dB
  },
  cell_reselection_serving = {
      s_non_intra_search = 3,
      thresh_serving_low = 2,
      cell_resel_prio = 6
  },
  intra_freq_reselection = {
      q_rx_lev_min = -61,
      p_max = 23,
      s_intra_search = 5,
      presence_ant_port_1 = true,
      neigh_cell_cnfg = 1,
      t_resel_eutra = 1
  }
};

#####################################################################
# sib7 configuration options (See TS 36.331)
# Contains GERAN neighbor information for CSFB and inter-rat handover.
# Must be added to sib1::sched_info::si_mapping_info array parameter to be transmitted
#
# t_resel_geran: Cell reselection timer (seconds)
# carrier_freqs_info_list: A list of carrier frequency groups.
#     cell_resel_prio: Absolute priority of the carrier frequency group
#     ncc_permitted: 8-bit bitmap of NCC carriers permitted for monitoring
#     q_rx_lev_min: Minimum receive level in gsm cell, ([field_val] * 2) - 115 = [level in dBm]
#     thresh_x_high: Srclev threshold (dB) to select to a higher-priority RAT/Frequency
#     thresh_x_low: Srclev threshold (dB) to select to a lower-priority RAT/Frequency
#     start_arfcn: Initial search ARFCN value
#     band_ind: One of "dcs1800" or "pcs1900" Disambiguates ARFCNs in these bands, has no meaning for other ARFCNs.
#     explicit_list_of_arfcns: List of ARFCN numbers in the group
#
#####################################################################
sib7 =
{
  t_resel_geran = 1;
  carrier_freqs_info_list =
  (
      {
          cell_resel_prio = 0;
          ncc_permitted = 255;
          q_rx_lev_min = 0;
          thresh_x_high = 2;
          thresh_x_low = 2;

          start_arfcn = 871;
          band_ind = "dcs1800";
          explicit_list_of_arfcns = (
              871
          );
      }
  );
};

egortaran avatar Sep 02 '22 01:09 egortaran

Does it work with SISO? I.e. with one RF channel? Can you provide the UE logs in info mode so we can see the signal quality?

andrepuschmann avatar Sep 21 '22 07:09 andrepuschmann