RMa path loss overestimated by +180 dB in NrChannelModel_3GPP38_901 (Hz used where TR 38.901 requires GHz), CQI 0 at all distances.

Open Beginner friendly
#304 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
78/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Quiet
Tech stack
cpp
Domain
networking

Research direction

Start in NrChannelModel_3GPP38_901.cc at the RMa path-loss calculations around lines 245 and 248, then run the provided RMa configuration with a 2 GHz carrier. Verify that the TR 38.901 frequency unit is used in both terms and that the 100–2000 m scenario no longer produces CQI 0 at every distance; the reported CQI and path-loss values should match the issue's after-fix results.

Written by the indexing model from the issue text.

Description

In the RMa (Rural Macrocell) path loss calculation of NrChannelModel_3GPP38_901.cc, the first term of TR 38.901's PL1 formula, 20·log10(40π·d·fc/3), is computed with the carrier frequency in Hz, while the 3GPP formula (TR 38.901 Table 7.4.1-1) requires fc in GHz.

Current master (as of this filing), lines 245 and 248:

pLoss_los = 20 * log10(40 * M_PI * threeDimDistance * (carrierFrequencyHz_ / 3.0)) + ...

With fc = 2 GHz, carrierFrequencyHz_ = 2e9, so the term contributes an excess of 20·log10(1e9) = +180 dB of phantom path loss.

Impact

Every RMa simulation produces CQI 0 at all distances (verified 100 m–2000 m), with no error or warning. Users comparing scenario models will conclude RMa is "broken" or that rural coverage is zero, and silently switch to UMa/UMi — the failure mode is invisible.

Reproduction

Simu5G 1.4.3, OMNeT++ 6.3, INET 4.6.0. Any single-cell config with:

*.gnb.cellularNic.channelModel[0].scenario = "RURAL_MACROCELL"
*.gnb.cellularNic.channelModel[0].carrierFrequency = 2GHz

UE at any distance → averageCqiDl = 0.

Fix

Divide by 1e9 (or use the GHz-typed value) in both lines:

pLoss_los = 20 * log10(40 * M_PI * threeDimDistance * (carrierFrequencyHz_ / 1e9 / 3.0)) + ...
Verification (fix applied and rebuilt, RMa, 2 GHz, 25 m gNB, 46 dBm)
Distance Before After
100 m CQI 0 CQI 15
500 m CQI 0 CQI 15
1000 m CQI 0 CQI 14

After the fix, hand-calculated TR 38.901 RMa LOS path loss at 1000 m/2 GHz (~100 dB) matches the simulated value.

Related

The v1.4.0 release notes mention that the carrierFrequency type refactor "helped identifying a bug in certain channel models … where a double representing GHz instead of Hz was used … resulting in underestimated path loss values." This issue is the inverse error (Hz where GHz is required, overestimating path loss) surviving in the RMa path of the NR model.
https://github.com/Unipisa/Simu5G/blob/master/WHATSNEW.md#v140-2025-09-18
See also the companion issue for LteRealisticChannelModel.

Dominant language
C++
Stars
235
Forks
116
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from Unipisa/Simu5G

All issues in Unipisa/Simu5G

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.