Good signal level, close to the site — and still low throughput

:satellite_antenna: The example below is from a real 5G network. The sites were selected from network KPIs showing high PDCCH blocking, then verified in the field. I used XCAL/XCAP to analyze Layer 3 messages, and backed it up with a speed test (user experience) plus UE throughput, PRB utilization, PDCCH blocking, RRC user count, and RRC/RACH success rate KPIs from the network side.
Testing ran across the full day; the 10 x failure appeared in a handful of cases rather than continuously, and the example below is one of them.

:warning: What the field log showed: repeated FAILURE_MSG4_CT_TIMER_EXPIRED. Msg1 sent → Msg2 received inside the response window → Msg3 sent → the chain stops. Retries continue until the preamble attempts are exhausted, the RACH procedure is aborted, and the call ends in setup failure.

:magnifying_glass_tilted_left: A contention resolution timeout has several possible causes. Working through them:
:small_blue_diamond: Weak coverage or poor radio quality — signal level and SINR were good throughout the failing attempts.
:small_blue_diamond: Random decode failure (Msg3 or the Msg4 grant) — possible on any single attempt, but less likely for ten in a row.
:small_blue_diamond: Hardware or software fault — the behavior appeared across multiple sites, and only in a handful of cases across a full day of testing rather than on every attempt. A persistent fault would be expected to fail more consistently, and would not be expected to follow the busy hours.
:small_blue_diamond: Load-driven scheduling limitation — the one that fits: it explains the intermittency, the timing, and the fact that the sites were selected from PDCCH blocking counters.

:bar_chart: What that picture looks like from the network side:
:small_blue_diamond: The gNB has Msg4 (RRC Connection Setup) ready, but needs a PDCCH allocation to tell the UE where and when to receive it.
:small_blue_diamond: When control channel capacity is under pressure, scheduling opportunities become scarce — Msg4 waits in the buffer while the UE’s contention resolution timer runs down.
:small_blue_diamond: This is consistent with the PDCCH blocking already visible in the counters for the same cells and hours.

:stopwatch: And this is why the user experiences low throughput, not only failed calls. A full abort (10 x failures) is the visible extreme — more often the UE does get through, just later. The same control channel shortage that delays access also limits how frequently a connected user can be scheduled. Fewer grants over time means lower throughput, even with a good signal and available PRBs.

LinkedIn: :backhand_index_pointing_down: