srsran / srsRAN_4G

Open source SDR 4G software suite from Software Radio Systems (SRS) https://docs.srsran.com/projects/4g
https://www.srsran.com
GNU Affero General Public License v3.0
3.42k stars 1.13k forks source link

5G SA - Cannot connect srsUE to srsENB using USRP X310 #985

Open nathanstep55 opened 1 year ago

nathanstep55 commented 1 year ago

Issue Description

Hello, I have been trying to connect srsUE to srsENB between two computers using two USRP X310s. Despite confirming that the USRPs can see the signals using the UHD test waveform and RX DFT examples, I have not been successful in getting the srsRAN software to communicate.

Setup Details

Two Ubuntu host PCs running Ubuntu 20.04 inside VirtualBox with bridged adapters so that they act as separate devices on the network. These PCs are not connected to any network besides their connection with the USRP RF hardware. srsRAN 22.04.1 is being used with a USRP X310 on each computer containing a single UBX-160 daughterboard each with two antennas attached to each daughterboard. UHD 4.2.0 is being used on both computers and the 1Gbit interface is being used, not 10Gbit.

Expected Behavior

The UE connects to the base station and I am given an IP address for the UE. I should be able to ping the computers from both sides.

Actual Behavior

The UE tries to find a cell and attach to the base station, but fails to do so. Using the rx_ascii_art_dft script shows that the USRP X310 attached to the UE is able to receive the signal at ~1800MHz (NR band 3) from srsENB. Sometimes the RF times out, but regardless of whether it does or not, the same behavior occurs.

Steps to reproduce the problem

Follow the instructions here but instead of using ZeroMQ, change the configuration to use UHD driver with the following device arguments:

device_args = type=x300,clock=internal,sampling_rate=11.52e6,lo_freq_offset_hz=23.04e6,send_frame_size=1472,recv_frame_size=1472,num_send_frames=64,num_recv_frames=64,None

Additional Information

The logs from the srsENB and srsUE commands are attached. We have also tried using srsRAN’s cell_search tool but it freezes after the first 50 iterations or so. srsENB shows RF underflow and srsUE shows RF overflow, if that is relevant. The Open5GS core connects to srsENB with no issues, and the UE configuration in ue.conf matches the configuration entered into the Open5GS frontend.

srsgnb3.log srsue3.log

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 # s1c_bind_port: Source port for S1AP connection (0 means any) # 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 = 901 mnc = 70 mme_addr = 127.0.0.2 gtp_bind_addr = 127.0.1.1 s1c_bind_addr = 127.0.1.1 s1c_bind_port = 0 n_prb = 50 ##################################################################### # 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 # rb_config: SRB/DRB configuration file ##################################################################### [enb_files] sib_config = /root/.config/srsran/sib.conf rr_config = /root/.config/srsran/rr.conf rb_config = /home/tniloy/.config/srsran/rb.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 driver found), "UHD", "bladeRF", "soapy", "zmq" or "Sidekiq" # 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 = 3350 tx_gain = 90 rx_gain = 40 # 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=11.52e6 device_name = UHD # device_args = type=x300,clock=internal,sampling_rate=23.04e6,lo_freq_offset_hz=23.04e6,None device_args = type=x300,clock=internal,sampling_rate=11.52e6,lo_freq_offset_hz=23.04e6,send_frame_size=1472,recv_frame_size=1472,num_send_frames=64,num_recv_frames=64,None ##################################################################### # Packet capture configuration # # MAC-layer packets are captured to a file in the compact format which can # be decoded by 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 a file in the compact format which can # be decoded by the Wireshark s1ap dissector 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) # filename: File path to use for LTE MAC packet captures # nr_filename: File path to use for NR MAC 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 = true filename = /tmp/enb_mac.pcap nr_filename = /tmp/enb_mac.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, 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 = info all_hex_limit = 32 #filename = /tmp/enb.log filename = stdout file_max_size = -1 [gui] enable = false ##################################################################### # Expert configuration options # # pusch_max_its: Maximum number of turbo decoder iterations (default: 4) # nr_pusch_max_its: Maximum number of LDPC iterations for NR (Default 10) # 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 # report_json_enable: Write eNB report to JSON file (default: disabled) # report_json_filename: Report JSON filename (default: /tmp/enb_report.json) # report_json_asn1_oct: Prints ASN1 messages encoded as an octet string instead of plain text in the JSON report file # alarms_log_enable: Enable Alarms logging (default: disabled) # alarms_filename: Alarms logging filename (default: /tmp/alarms.log) # 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 # stdout_ts_enable: Prints once per second the timestamp into stdout # 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_mac_dl_kos: Maximum number of consecutive KOs in DL before triggering the UE's release (default: 100) # max_mac_ul_kos: Maximum number of consecutive KOs in UL before triggering the UE's release (default: 100) # 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) # rlf_release_timer_ms: Time taken by eNB to release UE context after it detects an RLF # 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) # gtpu_tunnel_timeout: Time that GTPU takes to release indirect forwarding tunnel since the last received GTPU PDU (0 for no timer) # ts1_reloc_prep_timeout: S1AP TS 36.413 TS1RelocPrep Expiry Timeout value in milliseconds # ts1_reloc_overall_timeout: S1AP TS 36.413 TS1RelocOverall Expiry Timeout value in milliseconds # rlf_release_timer_ms: Time taken by eNB to release UE context after it detects a RLF # rlf_min_ul_snr_estim: SNR threshold in dB below which the enb is notified with RLF ko # s1_setup_max_retries: Maximum amount of retries to setup the S1AP connection. If this value is exceeded, an alarm is written to the log. -1 means infinity. # rx_gain_offset: RX Gain offset to add to rx_gain to calibrate RSRP readings ##################################################################### [expert] metrics_csv_enable = true metrics_csv_filename = /tmp/enb_metrics.csv report_json_enable = true report_json_filename = /tmp/enb_report.js ```
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 = 80 nof_antennas = 1 # device_name = zmq # device_args = tx_port=tcp://*:2001,rx_port=tcp://localhost:2000,id=ue,base_srate=11.52e6 device_name = uhd #device_args = type=x300,clock=internal,sampling_rate=23.04e6,lo_freq_offset_hz=23.04e6,None device_args = type=x300,clock=internal,sampling_rate=11.52e6,lo_freq_offset_hz=23.04e6,send_frame_size=1472,recv_frame_size=1472,num_send_frames=64,num_recv_frames=64,None srate = 11.52e6 ##################################################################### # 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 = 2850 nof_carriers = 0 ##################################################################### # 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 = 3,78 nof_carriers = 1 ##################################################################### # 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 = true mac_filename = /tmp/ue_mac.pcap mac_nr_filename = /tmp/ue_mac.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 = info phy_lib_level = none all_hex_limit = 32 #filename = /tmp/ue.log filename = stdout 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 = 901700123456789 imei = 353490069873319 ##################################################################### # 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] release = 15 ##################################################################### # 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 # eea: List of ciphering algorithms included in UE capabilities # Supported: 0 - NULL, 1 - Snow3G, 2 - AES ##################################################################### [nas] apn = srsapn apn_protocol = ipv4 ##################################################################### # 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 = ue1 ##################################################################### # GUI configuration # # Simple GUI displaying PDSCH constellation and channel freq response. # (Requires building with srsGUI) # enable: Enable the graphical interface (true/false) ##################################################################### [gui] enable = false ##################################################################### # 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 = true metrics_csv_filename = /tmp/ue_metrics.csv metrics_json_enable = true metrics_json_filename = /tmp/ue_metrics.json ```
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 = 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 srb1_5g_config = { rlc_config = { ul_am = { sn_field_len = 12; t_poll_retx = 45; poll_pdu = -1; poll_byte = -1; max_retx_thres = 8; }; dl_am = { sn_field_len = 12; t_reassembly = 35; t_status_prohibit = 10; }; }; } srb2_5g_config = { rlc_config = { ul_am = { sn_field_len = 12; t_poll_retx = 45; poll_pdu = -1; poll_byte = -1; max_retx_thres = 8; }; dl_am = { sn_field_len = 12; t_reassembly = 35; t_status_prohibit = 10; }; }; } five_qi_config = ( { five_qi = 7; pdcp_nr_config = { drb = { pdcp_sn_size_ul = 18; pdcp_sn_size_dl = 18; discard_timer = 50; integrity_protection = false; status_report = false; }; 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 = { pdcp_sn_size_ul = 18; pdcp_sn_size_dl = 18; discard_timer = 50; integrity_protection = false; status_report = false; }; 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; }; }; }; } ); ```
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) m_ri = 8; // RI period in CQI period //subband_k = 1; // If enabled and > 0, configures sub-band CQI reporting and defines K (see 36.213 7.2.2). If disabled, configures wideband CQI }; }; cell_list = ( //--- COMMMENT OUT LTE CELLS WHEN USING 5G SA ---// /* { // rf_port = 0; cell_id = 0x01; tac = 0x0007; pci = 1; // root_seq_idx = 204; dl_earfcn = 3350; //ul_earfcn = 21400; ho_active = false; //meas_gap_period = 0; // 0 (inactive), 40 or 80 //meas_gap_offset_subframe = [6, 12, 18, 24, 30]; // target_pusch_sinr = -1; // target_pucch_sinr = -1; // enable_phr_handling = false; // min_phr_thres = 0; // allowed_meas_bw = 6; // t304 = 2000; // in msec. possible values: 50, 100, 150, 200, 500, 1000, 2000 // 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; //cell_individual_offset = 0; } ); // Select measurement report configuration (all reports are combined with all measurement objects) meas_report_desc = ( { eventA = 3 a3_offset = 6; hysteresis = 0; time_to_trigger = 480; trigger_quant = "RSRP"; max_report_cells = 1; report_interv = 120; report_amount = 1; } ); meas_quant_desc = { // averaging filter coefficient rsrq_config = 4; rsrp_config = 4; }; } */ // Add here more cells ); nr_cell_list = ( { rf_port = 0; cell_id = 1; root_seq_idx = 1; tac = 7; pci = 500; dl_arfcn = 368500; band = 3; } ); ```
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; 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 ); } ); }; ```
gabri94 commented 1 year ago

It seems that the frequencies used by the two stations are different:

gNB:

Setting frequency: DL=1842.5 Mhz, DL_SSB=1843.25 Mhz (SSB-ARFCN=368650), UL=1747.5 MHz for cc_idx=0 nof_prb=52

UE:

2022-09-08T16:48:08.325429 [PHY-SA ] [I] [    0] Tuning Rx channel 0 to 1842.50 MHz
2022-09-08T16:48:08.325570 [RF     ] [I] Mapping RF channel 0 (device=0, channel=0) to logical carrier 0 on f_rx=1842.5 MHz
2022-09-08T16:48:08.327413 [PHY-SA ] [I] [    0] Cell search: Setting SSB configuration srate=11.52 MHz; c-freq=1842.500 MHz; ss-freq=1842.050 MHz; scs=15kHz; pattern=A; duplex=fdd;

Specifically the ssb channel of the UE seems different. You can try by playing around with the parameters: dl_nr_arfcn and ssb_nr_arfcn in the [rat.nr] section of ue.conf and the parameters: dl_arfcn and ul_arfcn in rr.conf

andrepuschmann commented 1 year ago

Hi @nathanstep55, have you made progress with the issue meanwhile? In general I would recommend to use the 4G UE/eNB and calibrate your RF params before jumping to 5G. It'll help you to rule RF issues out.