Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

Issue related to fresh installation

87 views
Skip to first unread message

satya singh

unread,
Jun 29, 2024, 11:40:21 PM6/29/24
to 5G-LENA-users
Is there any modification done in main branch recently which causing this issue , actually previously i was getting some error , so i expected that due to some error in my script file , it happened so i freshly installed ns-3-dev and nr module , and tried to run an existing file in example which is  cttc-nr-demo.cc file ,although  it printed the expected result but i don't know why this thing showing error.Screenshot from 2024-06-30 09-06-15.png

George Frangulea

unread,
Jun 30, 2024, 9:39:27 AM6/30/24
to 5G-LENA-users

Since the example compiles properly, it means there is no error. Probably, you don't have the correct path added to the compiler you use, so you see these errors.

satya singh

unread,
Jun 30, 2024, 1:23:02 PM6/30/24
to 5G-LENA-users
Thank you George , can you tell me how to configure x2 inteface for intergnb communication in nr module, i tried it in lte but since i am using  beamforming for that i have to use nr module.
please have a look on the code related to intergnb config. , i have configured communication between fronthaul gnb and ue successfully, but not able to establish connection between gnb.

NodeContainer backhaulGnb;

// function helps in cloning gnb with same mobilty model and position (already implimented)
for (uint32_t i = 0; i < gNbNum; ++i)
{
Ptr<Node> originalGnb = fronthaulGnb.Get(i);
Ptr<Node> clonedGnb = CopyNode(originalGnb);
backhaulGnb.Add(clonedGnb);
}

// Create point-to-point link between fronthaul and backhaul gNB
PointToPointHelper p2p;
p2p.SetDeviceAttribute("DataRate", DataRateValue(DataRate("100Mbps")));
p2p.SetChannelAttribute("Delay", TimeValue(MilliSeconds(2)));

NetDeviceContainer p2pDevices;
for (uint32_t i = 0; i < gNbNum; ++i)
{
p2pDevices = p2p.Install(fronthaulGnb.Get(i), backhaulGnb.Get(i));
}

Ptr<IdealBeamformingHelper> idealBeamformingHelper = CreateObject<IdealBeamformingHelper>();
Ptr<NrHelper> nrHelper4b = CreateObject<NrHelper>();

// Put the pointers inside nrHelper4f
nrHelper4b->SetBeamformingHelper(idealBeamformingHelper);

// Antennas for all the gNbs of backhaul
nrHelper4b->SetGnbAntennaAttribute("NumRows", UintegerValue(4));
nrHelper4b->SetGnbAntennaAttribute("NumColumns", UintegerValue(8));
nrHelper4b->SetGnbAntennaAttribute("AntennaElement",
PointerValue(CreateObject<ThreeGppAntennaModel>()));

BandwidthPartInfoPtrVector allBwps;
CcBwpCreator ccBwpCreator;

NetDeviceContainer enbNetDev4b = nrHelper4f->InstallGnbDevice(backhaulGnb, allBwps);




// Set up beamforming for the cloned gNB nodes of backhaul
for (auto it = enbNetDev4b.Begin(); it != enbNetDev4b.End(); ++it)
{
DynamicCast<NrGnbNetDevice>(*it)->UpdateConfig();
}


















satya singh

unread,
Jun 30, 2024, 1:23:59 PM6/30/24
to 5G-LENA-users
demo2.cc

George Frangulea

unread,
Jul 1, 2024, 4:28:30 AM7/1/24
to 5G-LENA-users
I have no experience using the X2 interface, and from what I know, this feature is not available in the NR module. If you have an LTE example that uses this interface successfully, follow the logic and try to implement it where needed in the NR module. 

Out of curiosity, for what application do you need to use the X2 interface? 

satya singh

unread,
Jul 2, 2024, 3:10:03 AM7/2/24
to 5G-LENA-users
I am working on a 5g scenario , in which gnbs will have access link(gnb to ue) as well as backhaul link(connection between gnb) , basically gnb should able to send statistics of the throughput received by the ue , to backhaul gnbs so that ue can perform handover , although handover is also not implemented , in my case , in my case i don't require handover , but able to send data to backhaul gnbs.

satya singh

unread,
Jul 2, 2024, 3:16:48 AM7/2/24
to 5G-LENA-users
void
NrHelper::AttachToEnb(const Ptr<NetDevice>& ueDevice, const Ptr<NetDevice>& gnbDevice)
{
Ptr<NrGnbNetDevice> enbNetDev = gnbDevice->GetObject<NrGnbNetDevice>();
Ptr<NrUeNetDevice> ueNetDev = ueDevice->GetObject<NrUeNetDevice>();

NS_ABORT_IF(enbNetDev == nullptr || ueNetDev == nullptr);

for (uint32_t i = 0; i < enbNetDev->GetCcMapSize(); ++i)
{
enbNetDev->GetPhy(i)->RegisterUe(ueNetDev->GetImsi(), ueNetDev);
ueNetDev->GetPhy(i)->RegisterToEnb(enbNetDev->GetBwpId(i));
ueNetDev->GetPhy(i)->SetDlAmc(
DynamicCast<NrMacSchedulerNs3>(enbNetDev->GetScheduler(i))->GetDlAmc());
ueNetDev->GetPhy(i)->SetDlCtrlSyms(enbNetDev->GetMac(i)->GetDlCtrlSyms());
ueNetDev->GetPhy(i)->SetUlCtrlSyms(enbNetDev->GetMac(i)->GetUlCtrlSyms());
ueNetDev->GetPhy(i)->SetNumRbPerRbg(enbNetDev->GetMac(i)->GetNumRbPerRbg());
ueNetDev->GetPhy(i)->SetRbOverhead(enbNetDev->GetPhy(i)->GetRbOverhead());
ueNetDev->GetPhy(i)->SetSymbolsPerSlot(enbNetDev->GetPhy(i)->GetSymbolsPerSlot());
ueNetDev->GetPhy(i)->SetNumerology(enbNetDev->GetPhy(i)->GetNumerology());
ueNetDev->GetPhy(i)->SetPattern(enbNetDev->GetPhy(i)->GetPattern());
Ptr<EpcUeNas> ueNas = ueNetDev->GetNas();
ueNas->Connect(enbNetDev->GetBwpId(i), enbNetDev->GetEarfcn(i));

if (m_enableMimoFeedback)
{
// Initialize parameters for MIMO precoding matrix search (PMI feedback)
auto pmSearch = m_pmSearchFactory.Create<NrPmSearch>();
ueNetDev->GetPhy(i)->SetPmSearch(pmSearch);
auto gnbAnt =
enbNetDev->GetPhy(i)->GetSpectrumPhy()->GetAntenna()->GetObject<PhasedArrayModel>();
auto ueAnt =
ueNetDev->GetPhy(i)->GetSpectrumPhy()->GetAntenna()->GetObject<PhasedArrayModel>();
pmSearch->SetGnbParams(gnbAnt->IsDualPol(),
gnbAnt->GetNumHorizontalPorts(),
gnbAnt->GetNumVerticalPorts());
pmSearch->SetUeParams(ueAnt->GetNumPorts());
pmSearch->InitCodebooks();
}
}

if (m_epcHelper)
{
// activate default EPS bearer
m_epcHelper->ActivateEpsBearer(ueDevice,
ueNetDev->GetImsi(),
EpcTft::Default(),
EpsBearer(EpsBearer::NGBR_VIDEO_TCP_DEFAULT));
}

// tricks needed for the simplified LTE-only simulations
// if (m_epcHelper == 0)
//{
ueNetDev->SetTargetEnb(enbNetDev);
//}

if (m_beamformingHelper)
{
m_beamformingHelper->AddBeamformingTask(enbNetDev, ueNetDev);
}
}
so whatever already implimented in the nr module , beamforming  is done between ue and gnb  as you cab see m_beamformingHelper->AddBeamformingTask(bedevilment, ueNetDev);, and what i want is between two gnb so i think i have to add that functionality as well.
Reply all
Reply to author
Forward
0 new messages