rfsim issues with multiple gNBs

This issue might be related to #895 (closed) but instead of simulating 1 gNB with 2 UEs I am trying to simulate 1 UE with 2 gNBs. This can be easily achieved by inverting the roles of server and client in rfsim (see details below).

To make things easy lets only consider the case where we don't use the rfsimulator options=("chanmod"). Afaik in this case a simple AWGN channel is used in UL and DL with no path loss and no noise. So in theory in this setup the 2 gNBs should see exactly the same signal on the UL.

However, they don't. To see this we can run a simple example using phy-test and the patch that i recently put on the branch SRS_rebase (see also !2875 (closed) to visualize the SRS channel estimates.

I am using these config files gnb1.sa.band78.106prb.rfsim4x4.conf gnb2.sa.band78.106prb.rfsim4x4.conf

First run the gNB1 once to generate the rbconfig.raw and reconfig.raw files for the UE.

./nr-softmodem --rfsim -O ~/openairinterface5g_prs/doc/tutorial_resources/positioning_tutorial/conf/gnb1.sa.band78.106prb.rfsim4x4.conf --phy-test

mv reconfig.raw reconfig_gNB1.raw

mv rbconfig.raw rbconfig_gNB1.raw

Then run the UE as a rfsimulator server

./nr-uesoftmodem -r 106 --numerology 1 --band 78 -C 3619200000 --rfsim --rfsimulator.serveraddr server --phy-test --rbconfig-file rbconfig_gNB1.raw --reconfig-file reconfig_gNB1.raw

Then start the gNB1

./nr-softmodem --rfsim --rfsimulator.serveraddr 127.0.0.1 -O ~/openairinterface5g_prs/doc/tutorial_resources/positioning_tutorial/conf/gnb1.sa.band78.106prb.rfsim4x4.conf --telnetsrv --phy-test --T_stdout 2 | tee gnb1_phytest.log

together with the T tracer

./record -d ../T_messages.txt -o gNB1.raw -on GNB_PHY_UL_TIME_CHANNEL_ESTIMATE -on GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE

and then the same for gNB2

./nr-softmodem --rfsim --rfsimulator.serveraddr 127.0.0.1 -O ~/openairinterface5g_prs/doc/tutorial_resources/positioning_tutorial/conf/gnb2.sa.band78.106prb.rfsim4x4.conf --telnetsrv --phy-test --T_stdout 2 | tee gnb2_phytest.log

./record -d ../T_messages.txt -o gNB2.raw -on GNB_PHY_UL_TIME_CHANNEL_ESTIMATE -on GNB_PHY_UL_FREQ_CHANNEL_ESTIMATE

After some manipulation of the recorded T traces we can plot the resulting channel estimates. Here I plot only the time domain SRS estimates.

srs_multi_gNB

We can see that the channel estimate at gNB1 looks as expected but at gNB2 looks weird. I have not managed to figure out what the problem is exactly.

I also tried turning on the rfsimulator options=("chanmod") but that doesn't work at all.

Edited by Robert Schmidt