-
Notifications
You must be signed in to change notification settings - Fork 294
Description
Context
I'm following this tutorial: https://docs.srsran.com/projects/project/en/latest/tutorials/source/srsUE/source/index.html
When I get to the part where I have to execute the flow graph, the gnuradio terminal gives me this error:
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Traceback (most recent call last):
File "/home/oranor/multi_ue_scenario.py", line 227, in <module>
main()
File "/home/oranor/multi_ue_scenario.py", line 205, in main
tb = top_block_cls()
File "/home/oranor/multi_ue_scenario.py", line 104, in __init__
self.zeromq_rep_sink_0_2 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2300', 100, False, zmq_hwm)
RuntimeError: Cannot assign requested address
The only thing I'm doing different from the tutorial is that I'm not running everthing on localhost. I'm trying to replicate the tutorial using two different machines (one for the core and gNB (IP 192.168.0.108), the other for the UEs (IP 192.168.0.206)). I'm running the gnuradio command on the same host that is running the gNB.
My UEs run o a docker with Ubuntu 22.04 as the base image. Communication between the UE and Core works when I follow the tutorial with a single UE.
Configs
All configs files I'm using are the defaults files from the srsRAN Project and the files provided on the tutorial, so I will share only the parts I've changed.
open5gs.env
# SUBSCRIBER_DB=001010123456780,00112233445566778899aabbccddeeff,opc,63bfa50ee6523365ff14c1f45f88737d,8000,9,10.45.1.2
SUBSCRIBER_DB="subscriber_db.csv"
gNB config:
...
device_args: tx_port=tcp://192.168.0.108:2000,rx_port=tcp://192.168.0.206:2001,base_srate=11.52e6 # Optionally pass arguments to the selected RF driver.
...
prach:
prach_config_index: 1 # Sets PRACH config to match what is expected by srsUE
total_nof_ra_preambles: 64 # Sets number of available PRACH preambles. J
nof_ssb_per_ro: 1 # Sets the number of SSBs per RACH occasion. J
nof_cb_preambles_per_ssb: 64 # Sets the number of contention based preambles per SSB. J
UE1 config:
device_args = tx_port=tcp://192.168.0.206:2101,rx_port=tcp://192.168.0.108:2001,base_srate=11.52e6
UE2 config
device_args = tx_port=tcp://192.168.0.206:2201,rx_port=tcp://192.168.0.108:2001,base_srate=11.52e6
UE3 config
device_args = tx_port=tcp://192.168.0.206:2301,rx_port=tcp://192.168.0.108:2001,base_srate=11.52e6
multi_ue_scenario.py
self.zeromq_req_source_1_0 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2201', zmq_timeout, False, zmq_hwm)
self.zeromq_req_source_1 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2101', zmq_timeout, False, zmq_hwm)
self.zeromq_req_source_0_0 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2301', zmq_timeout, False, zmq_hwm)
self.zeromq_req_source_0 = zeromq.req_source(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.108:2000', zmq_timeout, False, zmq_hwm)
self.zeromq_rep_sink_0_2 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2300', 100, False, zmq_hwm)
self.zeromq_rep_sink_0_1 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.108:2001', zmq_timeout, False, zmq_hwm)
self.zeromq_rep_sink_0_0 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2200', zmq_timeout, False, zmq_hwm)
self.zeromq_rep_sink_0 = zeromq.rep_sink(gr.sizeof_gr_complex, 1, 'tcp://192.168.0.206:2100', zmq_timeout, False, zmq_hwm)
self.blocks_throttle_0 = blocks.throttle(gr.sizeof_gr_complex*1, 1.0*samp_rate/(1.0*slow_down_ratio),True)
self.blocks_multiply_const_vxx_0_1_1 = blocks.multiply_const_cc(10**(-1.0*ue2_path_loss_db/20.0))
self.blocks_multiply_const_vxx_0_1_0 = blocks.multiply_const_cc(10**(-1.0*ue3_path_loss_db/20.0))
self.blocks_multiply_const_vxx_0_1 = blocks.multiply_const_cc(10**(-1.0*ue1_path_loss_db/20.0))
self.blocks_multiply_const_vxx_0_0_0 = blocks.multiply_const_cc(10**(-1.0*ue3_path_loss_db/20.0))
self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_cc(10**(-1.0*ue2_path_loss_db/20.0))
self.blocks_multiply_const_vxx_0 = blocks.multiply_const_cc(10**(-1.0*ue1_path_loss_db/20.0))
self.blocks_add_xx_0 = blocks.add_vcc(1)
Image of the graph

I run my container with the following arguments:
docker run --rm -it --network host --name ue --privileged srsran:latest bash
Questions
Why it doesn't connect? Did I miss something/did something wrong with the configs? If so, what should I fix? Or how can I tackle (debug) this problem?