ZMQ radio

This is a zmq radio implementation that attempts to integrate NR UE with the ocudu project.

OAI integration status

This can currently be used to connect OAI gnb and OAI UE.

Compilation

cmake --build . --target nr-softmodem nr-uesoftmodem ldpc params_libconfig zmq_radio

Running

gNB command:

sudo ./nr-softmodem -O ../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf --gNBs.[0].min_rxtxtime 6 --device.name zmq_radio --zmq.tx_channels tcp://127.0.0.1:4556 --zmq.rx_channels tcp://127.0.0.1:4557

UE command:

sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --ssb 516 --device.name zmq_radio --zmq.tx_channels tcp://127.0.0.1:4557 --zmq.rx_channels tcp://127.0.0.1:4556

A new CI testcase for 2x2 configuration was added.

OCUDU integration status

The OAI NR UE enters RRC Connected state when tested against this configuration:

Prerequisites

  • compile gnb_split_8 app from the ocudu project
  • Run OAI core network from doc/tutorial_resources/oai-cn5g with docker compose up. The ocudu gnb doesn't start without AMF. This is a required step

Running

sudo ./apps/gnb_split_8/gnb -c config.yml

config:

cu_cp:
  amf:
    addrs: 192.168.70.132
    port: 38412
    bind_addrs: 0.0.0.0
    supported_tracking_areas:
      - tac: 1
        plmn_list:
          - plmn: "00101"
            tai_slice_support_list:
              - sst: 1

ru_sdr:
  device_driver: zmq
  device_args: tx_port=tcp://127.0.0.1:4556,rx_port=tcp://127.0.0.1:4557
  srate: 61.44
  tx_gain: 80
  rx_gain: 40

cell_cfg:
  dl_arfcn: 632628
  band: 78
  channel_bandwidth_MHz: 40
  common_scs: 30
  plmn: "00101"
  tac: 1
  pci: 1

log:
  filename: gnb.log
  all_level: debug

pcap:
  mac_enable: false
  mac_filename: /tmp/gnb_mac.pcap
  ngap_enable: false
  ngap_filename: /tmp/gnb_ngap.pcap

UE cli:

sudo ./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3489420000 --zmq.tx_channels tcp://127.0.0.1:4557 --zmq.rx_channels tcp://127.0.0.1:4556  --device.name zmq_radio --ssb 42 --uecap_file ../targets/PROJECTS/GENERIC-NR-5GC/CONF/uecap_ports1.xml

Two CI testcases were added, one for 1x1 config and nother for 2x2 config.

Known issues

1. UE crashes in this config, unsure why at this point. Fixed by adding uecap file for 1 port

UE log:

[MAC]    [UE 0] Applying CellGroupConfig from gNodeB
[NR_MAC] Only type1 codebook configuration is supported
[NR_MAC] Only type1 single panel codebook configuration is supported
[NR_MAC] NR_SRI_PUSCH_PowerControl not implemented, power control will not work as intended
[NR_PHY] Handling of CSI-RS for tracking not handled yet at PHY
[NR_PHY] Handling of CSI-RS for tracking not handled yet at PHY
[NR_PHY] RI = 1 i1 = 0.0.0, i2 = 0, SINR = 0 dB, CQI = 0
[NR_PHY] Handling of CSI-RS for tracking not handled yet at PHY
[NR_PHY] Handling of CSI-RS for tracking not handled yet at PHY

Further down:

[MAC]    [UE 0] Applying CellGroupConfig from gNodeB
[NR_MAC] Only type1 codebook configuration is supported
[NR_MAC] Only type1 single panel codebook configuration is supported
[NR_MAC] NR_SRI_PUSCH_PowerControl not implemented, power control will not work as intended

Assertion (max_mimo_layers > 0) failed!
In nr_ue_process_dci_dl_11() /home/bpodrygajlo/openairinterface5g/openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c:1442
  1. UE is RRC connected and AMF registered but cannot perform ping This is fixed by correctly setting up OCUDUs amf bind_address to match CN config.

In the new CI testcases, the UE cannot perform ping.

Edited by Bartosz Podrygajlo

Merge request reports

Loading