>
Home5G NRPHY — Physical LayerDMRS (deep dive)
📶 PHY — Physical LayerAdvanced

DMRS — Demodulation Reference Signals in 5G NR

The reference signal that demodulates every physical channel — config type 1 vs 2, mapping type A/B, front-loaded + additional positions, CDM groups and antenna ports, for PDSCH/PUSCH/PDCCH/PBCH.

📚 3GPP-basedTS 38.211TS 38.214

A receiver cannot demodulate a channel it has not estimated. That single sentence is the whole reason reference signals exist, and it is why every data and control channel in NR carries its own pilots rather than leaning on a cell-wide reference signal the way LTE leaned on CRS. Beamforming killed the cell-wide pilot: a pilot is only useful if it traverses the same beam as the data it is measuring, and in NR the beam is chosen per UE and per transmission. So the pilots moved inside the channel. NR's distinctive further choice is to put them front-loaded, at the very start of the allocation, so that channel estimation and decoding can begin before the transmission has finished -- which is what makes low-latency processing possible at all. Everything else in DMRS is a trade against that decision. This document works through the two configuration types resource element by resource element, derives the symbol positions from the TS 38.211 tables, does the coherence-time arithmetic that makes dmrs-AdditionalPosition mean something, and then spends its second half on the practical consequence that a DMRS fault presents as high block error rate with a perfectly healthy reported RSRP -- the one signature that separates a reference-signal problem from a coverage problem.

Contents
  1. 01Why Reference Signals Exist, and Why Each Channel Has Its Own
  2. 02Front-Loading, and the Price of It
  3. 03Configuration Type 1: Comb-2 and Two CDM Groups
  4. 04Configuration Type 2: Adjacent Pairs and Three CDM Groups
  5. 05CDM, Orthogonal Cover Codes, and CDM Groups Without Data
  6. 06Antenna Ports, Layers, and the DCI Antenna Port Field
  7. 07Double-Symbol DMRS and the Port Doubling
  8. 08Configuration, Field by Field
  9. 09The First DMRS Symbol: Type A, Type B, and dmrs-TypeA-Position
  10. 10Additional Positions: the TS 38.211 Tables
  11. 11Doppler, Coherence Time, and Why pos3 Exists
  12. 12Choosing a Configuration Before the First Grant
  13. 13Sequence Generation and the Scrambling Identities
  14. 14PUSCH DMRS: CP-OFDM, Transform Precoding and Low-PAPR Sequences
  15. 15DMRS on PDCCH, PBCH and PUCCH
  16. 16PT-RS: Tracking Phase Noise
  17. 17DMRS, CSI-RS and SRS: Telling Them Apart
  18. 18Overhead, and What It Costs in Throughput
  19. 19Parameter and Range Reference
  20. 20Failure Modes and What Each One Means
  21. 21Configuration Reference (ASN.1)
  22. 22Three More Worked Calculations
  23. 23Illustrative Message Traces
  24. 24Release Deltas: Rel-15 to Rel-18
  25. 25Reading DMRS in Logs: A Checklist
  26. 26Glossary
  27. 27References

1. Why Reference Signals Exist, and Why Each Channel Has Its Own

A radio channel rotates and scales everything that passes through it. The transmitter sends a QAM constellation point; the receiver sees that point multiplied by a complex number it does not know, and buried in noise. Demodulation is the process of dividing that unknown complex number back out, and to divide it out you have to know it. The only way to know it is to have sent something whose value the receiver already knew, observed what came out, and taken the ratio. That known signal is a reference signal, and demodulation reference signal is exactly what the name says: the pilot whose only job is to make demodulation of the channel it rides on possible.

Everything else about DMRS follows from three questions. How densely do you have to sample the channel in frequency, given that it varies across the band? How densely in time, given that it varies as the UE moves? And how do you separate the pilots of several spatial layers that arrive on the same resource elements at the same instant? Those three questions produce the configuration type, the additional positions, and the CDM groups respectively, and the answer to each costs resource elements the transport block would otherwise have had.

1.1 The LTE arrangement, and why NR could not keep it

LTE broadcast a cell-specific reference signal, CRS, on a fixed lattice of resource elements in every subframe, on every antenna port, whether or not anyone was being scheduled. Every UE in the cell used the same CRS. It was elegant: one pilot amortised across the entire cell, always present, always available for measurement as well as demodulation.

That arrangement depends on one assumption which NR breaks. CRS is only a valid channel estimate for the data if the data traverses the same channel as the CRS. In LTE that was nearly true, because the eNB transmitted CRS and PDSCH from the same wide sector beam. In NR the gNB forms a narrow beam per UE, chosen from a codebook and updated as the UE moves, and it may apply a different precoder to every layer of every grant. A cell-wide pilot transmitted on a wide beam tells a UE nothing whatsoever about the narrow beam its own PDSCH arrived on. The pilot must traverse the same beam as the data. That is the single most important conceptual point in this document, and it is why NR has no CRS at all.

💡
Key point

A pilot that does not go through the same precoder, the same antenna weights and the same beam as the data is not a channel estimate for that data. It is a channel estimate for something else. Once beamforming is per-UE and per-layer -- which is the entire point of massive MIMO -- the only place a usable pilot can live is inside the transmission it is estimating. NR therefore gives PDSCH, PUSCH, PDCCH, PBCH and PUCCH each their own DMRS, carried in the same beam, with the same precoder, in the same resource block allocation. There is no shared alternative, and this is not an optimisation -- it is a structural necessity.

The consequences are worth listing because they shape the rest of the specification:

  • DMRS is only present when the channel is present. No transmission, no pilots. A UE cannot use DMRS to measure a cell it is not being scheduled in, which is why NR needs SSB and CSI-RS as separate, independently transmitted measurement references (§17).
  • DMRS is precoded with the data. The UE estimates the effective channel -- physical channel times precoder -- and never needs to know the precoder. This is what "non-codebook-transparent" precoding means in practice, and it is why the gNB can change its precoder between grants without telling the UE anything.
  • DMRS density is a per-UE decision. A stationary UE and a UE on a train can be scheduled in adjacent slots of the same cell with completely different pilot densities. LTE could not do this at all.
  • Every DMRS resource element is a data resource element you did not send, charged to the transport block of the UE that needs it rather than spread across the cell (§18).
LTE CRSNR DMRS
TransmittedAlways, in every subframe, whether scheduled or notOnly inside a scheduled PDSCH, PUSCH, PDCCH, PBCH or PUCCH
ScopeCell-wide. One set of pilots serves every UEPer transmission. Each grant carries its own
Beam / precoderThe cell's sector beam, independent of any UEIdentical to the data's -- same precoder, same beam, same PRBs
Usable for measurement?Yes. RSRP, RSRQ and CQI were all CRS-basedNo. Measurement uses SSB and CSI-RS instead (§17)
Density controlFixed by the port count. Not configurable per UEdmrs-Type, maxLength and dmrs-AdditionalPosition, per UE and per mapping type
OverheadAbout 4.8% of the grid per port, paid by the whole cell2.4% to 28.6% of the allocation, paid by the scheduled UE (§18)
Max orthogonal ports48 for type 1, 12 for type 2, and 24 in Rel-18

Table 1. Why the mechanism changed. The "beam / precoder" row is the cause; every other row is a consequence. The companion 02 Radio Frame Structure document owns the resource grid both columns are drawn on.

1.2 What triggers DMRS

Nothing, in the sense of a procedure. DMRS is not a procedure and there is no DMRS trigger, no DMRS request and no DMRS timer. It is a mapping rule: given a grant -- its mapping type, its start symbol, its length, its layer count and the UE's configured DMRS parameters -- the rule says which resource elements of that grant carry pilots instead of data. Both ends run the same rule and neither signals the result. That is precisely why the failure modes in §20 are so quiet: when the two ends run the rule with different inputs, there is nothing in the protocol that notices.

2. Front-Loading, and the Price of It

LTE put its pilots in the middle of the subframe as well as at the start, and there was no reason not to: the receiver had to wait for the whole subframe to arrive before it could do anything with it. NR made a different choice, deliberately. The first DMRS symbol sits at the start of the allocation -- symbol 2 or 3 of the slot for mapping type A, the first symbol of the allocation for mapping type B TS 38.211 cl. 7.4.1.1.2. Nothing about channel estimation requires this. Interpolation from pilots spread evenly through the allocation gives a better estimate than extrapolation from pilots at one end.

The reason is pipelining. A receiver that has the channel estimate in hand after the second or third symbol can start equalising, demodulating and feeding the LDPC decoder while the remaining symbols are still arriving. A receiver that has to wait for a mid-allocation pilot cannot begin until the pilot arrives, and the whole of its processing latency then stacks on top of the transmission duration rather than overlapping it. On a 14-symbol slot at 30 kHz that is the difference between finishing 100 µs after the last symbol and finishing 500 µs after it, and the HARQ round trip is built from exactly those numbers -- see the companion 05 HARQ document for how k1 and the N1 processing time consume the budget front-loading protects.

💡
Key point

Front-loading is a latency design choice, not an estimation-quality one. It buys the receiver the ability to start work early and it costs estimation accuracy at the far end of a long allocation, because the channel at symbol 13 has to be extrapolated from a measurement taken at symbol 2. dmrs-AdditionalPosition exists to buy that accuracy back, one symbol of overhead at a time (§10, §11). The whole parameter is a correction to a decision made for latency reasons.

Two smaller consequences of front-loading show up constantly in logs:

  • A mapping type A allocation must contain its own DMRS symbol. This is why the start symbol S is restricted to {0, 1, 2, 3} for PDSCH type A: the DMRS is at slot symbol 2 or 3, and an allocation starting at symbol 5 would begin after its own reference signal. The companion 32 SLIV and Time Domain Allocation document derives the S restriction from this constraint; §9 here closes the loop from the other side.
  • A very short mapping type B allocation spends a large fraction of itself on pilot. A two-symbol type B PDSCH carries DMRS in one of its two symbols. Half the allocation is reference signal. Front-loading makes the mini-slot possible and simultaneously makes it expensive, which is why mini-slots are a latency tool and never a throughput tool.

3. Configuration Type 1: Comb-2 and Two CDM Groups

There are exactly two DMRS configuration types for PDSCH and PUSCH, selected by dmrs-Type, and they differ only in how the DMRS resource elements are laid out in frequency within a PRB. Everything else -- symbol positions, sequence generation, front-loading -- is common. Type 1 is the default and by a wide margin the more common.

Type 1 places DMRS on every second subcarrier, a comb-2 pattern, with two interleaved combs TS 38.211 cl. 7.4.1.1.1:

TS 38.211 cl. 7.4.1.1.1 -- PDSCH DMRS type 1 (PUSCH cl. 6.4.1.1.1 is identical)
Configuration type 1, frequency mapping:

    k = 4n + 2k' + delta        n = 0, 1, 2, ...
                                k' in {0, 1}
                                delta in {0, 1}

  delta = 0  ->  CDM group 0  ->  k = 0, 2, 4, 6, 8, 10   within a PRB
  delta = 1  ->  CDM group 1  ->  k = 1, 3, 5, 7, 9, 11   within a PRB

  k' selects which of the two REs of a group the frequency-domain
  orthogonal cover code element w_f(k') is applied to: the pair is
  (4n, 4n+2) for group 0 and (4n+1, 4n+3) for group 1.

  6 DMRS REs per CDM group, per PRB, per DMRS symbol.
Figure 1. Configuration type 1 in one PRB, mapping type A with l0 = 2 and dmrs-AdditionalPosition pos0. This is the everyday case and the figure worth memorising: even subcarriers are CDM group 0, odd subcarriers are CDM group 1, and the two ports of each group occupy identical resource elements. If only one CDM group is declared "without data" in the DCI, the other group's six subcarriers carry PDSCH in the DMRS symbol -- which halves the overhead of a single-layer grant.
PropertyType 1 valueWhy it is that
CombEvery 2nd subcarrierTwo orthogonal combs give two CDM groups from frequency alone, before any code is applied
REs per group per PRB per symbol6Twelve subcarriers split two ways
Frequency spacing of a port's pilots4 subcarriers, i.e. 60 kHz at 15 kHz SCSBecause the length-2 OCC pairs REs 4n and 4n+2, so the unambiguous channel sampling of one port is every 4th subcarrier
CDM groups2 (group 0 and group 1)delta in {0, 1}
Ports, single symbol4 (1000 to 1003 for PDSCH; 0 to 3 for PUSCH)2 CDM groups x 2 frequency OCC codes
Ports, double symbol8 (1000 to 1007; 0 to 7)x 2 again from the time-domain OCC (§7)
Delay-spread toleranceLower than type 2The OCC spans 4 subcarriers; the channel must be flat across that span for the code to stay orthogonal
Signalled asdmrs-Type absentThe enumeration only contains type2. Absence means type 1 -- a real decoding trap (§8)

Table 2. Configuration type 1 at a glance. The delay-spread row is the one people forget: CDM only works if the channel is approximately constant across the resource elements the code spans, and type 1 spans twice the bandwidth type 2 does.

📘
Spec detail

The frequency spacing that matters for channel estimation is 4 subcarriers, not 2. A single port's pilots sit at 4n and 4n+2 with an OCC across them, so the pair jointly identifies one port and the estimate is effectively sampled every 4 subcarriers. At 30 kHz SCS that is 120 kHz between independent samples, which bounds the delay spread the estimator can resolve without aliasing. In a heavily delay-dispersive channel this is the reason type 1 estimation degrades before type 2 does, and it is not visible anywhere in the configuration.

4. Configuration Type 2: Adjacent Pairs and Three CDM Groups

Type 2 exists for one reason: more orthogonal ports per DMRS symbol. It gets them by cutting the PRB into three groups of four resource elements instead of two groups of six, and by pairing adjacent subcarriers rather than subcarriers two apart:

TS 38.211 cl. 7.4.1.1.1 -- PDSCH DMRS type 2
Configuration type 2, frequency mapping:

    k = 6n + k' + delta         n = 0, 1, 2, ...
                                k' in {0, 1}
                                delta in {0, 2, 4}

  delta = 0  ->  CDM group 0  ->  k = 0, 1,  6, 7    within a PRB
  delta = 2  ->  CDM group 1  ->  k = 2, 3,  8, 9    within a PRB
  delta = 4  ->  CDM group 2  ->  k = 4, 5, 10, 11   within a PRB

  k' selects which RE of the adjacent pair (6n+delta, 6n+delta+1) the
  frequency-domain OCC element w_f(k') applies to.

  4 DMRS REs per CDM group, per PRB, per DMRS symbol.
Figure 2. Configuration type 2 in the same PRB, same symbol, same front-loading. Three CDM groups of four resource elements each, and the two resource elements of a pair are adjacent subcarriers rather than two apart. That adjacency is why type 2 tolerates more delay spread per code than type 1 -- the code spans 2 subcarriers instead of 4 -- while sampling each port's channel less densely, every 6 subcarriers instead of every 4.
Type 1Type 2
CDM groups23
PatternComb-2, alternate subcarriersPairs of adjacent subcarriers, 3 pairs per group per 2 PRB
REs per group per PRB per symbol64
OCC span in frequency4 subcarriers2 subcarriers
Port sampling intervalEvery 4th subcarrierEvery 6th subcarrier
Ports, single symbol46
Ports, double symbol812
Full-symbol pilot cost2 groups without data = 12 REs per PRB3 groups without data = 12 REs per PRB -- identical
Single-layer pilot cost1 group without data = 6 REs per PRB1 group without data = 4 REs per PRB -- type 2 is cheaper here
Typical deployment useEverything single-user: 1 to 4 layers, which is the overwhelming majority of trafficMulti-user MIMO with many co-scheduled UEs, and 8-layer single-user downlink

Table 3. Type 1 against type 2. Note the two cost rows: at maximum port count the two types cost exactly the same -- the whole DMRS symbol -- and type 2's advantage is entirely in ports per symbol, not in overhead. Type 2 is cheaper only when few CDM groups are declared without data.

⚠️
Common pitfall

"Type 2 has lower overhead because it uses 4 REs per group instead of 6" is a half-truth that gets repeated a lot. It is true per group and false per transmission. Type 1 with both CDM groups without data and type 2 with all three CDM groups without data both consume every subcarrier of the DMRS symbol: 12 REs per PRB, identically. The place type 2 genuinely wins on overhead is a single-layer grant with one CDM group without data, where it spends 4 REs where type 1 spends 6 -- and almost nobody configures type 2 for single-layer traffic, because its reason for existing is port count.

5. CDM, Orthogonal Cover Codes, and CDM Groups Without Data

A CDM group is a set of resource elements shared by several antenna ports. Not divided between them -- shared. Every port of the group transmits on every resource element of the group, at the same time, on the same subcarriers, and the receiver separates them by code. That is code division multiplexing, and it is the mechanism that lets four ports fit in a symbol that has room for only two orthogonal frequency combs.

5.1 The frequency-domain cover code

Within a CDM group the resource elements come in pairs: (4n, 4n+2) for type 1, (6n+delta, 6n+delta+1) for type 2. Two ports share the pair, and they are distinguished by a length-2 orthogonal cover code applied across the two resource elements:

Why CDM works, and the one assumption it makes
Frequency-domain OCC, w_f(k'), k' in {0, 1}:

    port A:   w_f = [ +1, +1 ]        both REs get the same value
    port B:   w_f = [ +1, -1 ]        the second RE is negated

The receiver recovers each port by combining the two REs:

    h_A  =  ( y(k0) + y(k1) ) / 2
    h_B  =  ( y(k0) - y(k1) ) / 2

which is exact if and only if the channel is the same at k0 and k1.
If it is not, energy from port A leaks into the estimate of port B.
This leakage is the practical limit on CDM, and it grows with delay
spread and with the frequency separation of the pair.

That assumption -- flat channel across the code span -- is the reason type 2 pairs adjacent subcarriers. Two subcarriers 30 kHz apart are much more likely to see the same channel than two 60 kHz apart. Type 1 spans twice the bandwidth and so leaks sooner, and in a channel with a long delay spread the practical port isolation of type 1 degrades before type 2's does. Nothing in the configuration warns you about this; it shows up as a MIMO throughput ceiling in dispersive channels and nowhere else.

5.2 The time-domain cover code

With maxLength set to len2 the DMRS occupies two consecutive symbols, and a second length-2 cover code becomes available across those two symbols: w_t = [+1, +1] and [+1, −1]. That doubles the port count again. Section 7 works through it. The important structural point is that the two symbols are one DMRS instance, not two DMRS positions -- a double-symbol DMRS at l0 is a single front-loaded pilot that happens to be two symbols wide, and it is counted once by dmrs-AdditionalPosition.

5.3 CDM groups without data

Here is the part that appears in every DCI dump and confuses everybody. The gNB does not have to use all the CDM groups. A single-layer transmission needs one port, which lives in one CDM group, and the resource elements of the other group or groups are then free -- the gNB can put PDSCH data in them. Or it can leave them empty, which it will do when it is co-scheduling another UE whose DMRS occupies that group.

The UE cannot work out which of those two things happened. It has to be told, and the field that tells it is "Number of DMRS CDM groups without data", encoded jointly with the port list in the DCI's antenna port field TS 38.212 cl. 7.3.1.2.2:

Groups without dataValid forREs of the DMRS symbol reservedWhat it means
1type 1 and type 2Type 1: 6 of 12 per PRB. Type 2: 4 of 12 per PRBOne group is pilot; the remaining subcarriers of the DMRS symbol carry PDSCH for this UE. The cheapest configuration, used for 1 and 2 layer transmissions
2type 1 and type 2Type 1: 12 of 12 (the whole symbol). Type 2: 8 of 12Two groups are pilot-only. For type 1 this is the maximum and the DMRS symbol carries no data at all. For type 2 it leaves one group free
3type 2 only12 of 12 (the whole symbol)All three groups pilot-only. Required whenever type 2 ports from all three groups are in use, and used for MU-MIMO where the other groups belong to another UE

Table 4. The three values and their resource-element consequence. This is not a statement about how many layers this UE has -- it is a statement about which resource elements this UE must not treat as data. In MU-MIMO the two are deliberately different.

⚠️
Common pitfall

The field says "without data", and it means without data for this UE. A single-layer UE told "2 CDM groups without data" is being told to skip all twelve subcarriers of the DMRS symbol even though only six of them carry its own pilots. The other six carry the co-scheduled UE's pilots, which this UE must not decode as its own data and must not include in its rate matching. Getting this wrong does not corrupt six resource elements -- it shifts the whole rate-matching alignment of the transport block, and every code block after the DMRS symbol decodes as noise. One CRC failure, no partial degradation.

The rate-matching mechanism is behind several of the failure modes in §20. The UE builds an ordered list of the resource elements available for data, frequency-first, and maps the coded bits onto it. Disagree about how many resource elements the DMRS symbol holds and every subsequent bit lands in the wrong place -- no gradual degradation, no partial success, just a failed transport block.

6. Antenna Ports, Layers, and the DCI Antenna Port Field

An antenna port in NR is not a physical antenna. It is defined by its reference signal: two signals are on the same antenna port if the channel over which one is conveyed can be inferred from the channel over which the other is conveyed TS 38.211 cl. 4.4. In practice, a DMRS port is a spatial layer, and the port numbering tells you which physical channel the reference signal belongs to:

Port rangeSignalDirectionNotes
0 to 11PUSCH DMRSUplink0 to 3 type 1 single-symbol, 0 to 7 type 1 double, 0 to 5 type 2 single, 0 to 11 type 2 double
1000 to 1011PDSCH DMRSDownlinkThe same structure, offset by 1000. This is the range in every DL log
1000 to 1003SRS, and PUSCH after precodingUplinkShares numbers with PDSCH DMRS but in the opposite direction -- read the direction before the number
2000 to 2001PDCCH DMRSDownlinkOne port. PDCCH is never spatially multiplexed
2000PUCCH and its DMRSUplinkOne port
3000 and upCSI-RSDownlinkUp to 32 ports (§17)
4000SS/PBCH and PBCH DMRSDownlinkOne port. The SSB is a single-port transmission by definition (§15.2)

Table 5. Antenna port numbering, TS 38.211 cl. 4.4. The 1000-series collision between PDSCH DMRS and SRS is real and is resolved only by direction, which is a genuine source of confusion in logs that print port numbers without a direction tag.

6.1 The antenna port field, and how wide it is

The DCI field named Antenna port(s) carries the CDM-groups-without-data value and the port list as a single joint code point. Its width depends on the configured dmrs-Type and maxLength, which is why the DMRS configuration changes the DCI size:

dmrs-TypemaxLengthField widthSpec tableCode points used
type1len14 bitsTS 38.212 Table 7.3.1.2.2-10 to 11; values 12 to 15 reserved
type1len25 bitsTS 38.212 Table 7.3.1.2.2-2Adds the double-symbol combinations and the 5 to 8 layer rows
type2len15 bitsTS 38.212 Table 7.3.1.2.2-3Three CDM groups multiply the combinations
type2len26 bitsTS 38.212 Table 7.3.1.2.2-4The largest, covering up to 12 ports

Table 6. Antenna port field widths for DCI format 1_1, one codeword. Two codewords use separate tables. Changing dmrs-Type or maxLength in an RRCReconfiguration therefore changes the total DCI 1_1 payload size -- and until both ends apply the change at the same slot, the UE is blind-decoding for the wrong length and finds nothing at all. The companion 31 PDCCH Blind Decoding document explains why that produces silence rather than an error.

6.2 The type 1, single-symbol table

This is the one you will actually decode, because type 1 with maxLength absent is the default and covers most traffic. Ports are written relative to the base -- port "0" here means 1000 for PDSCH:

ValueCDM groups without dataDMRS portsLayersComment
0101The cheapest possible grant: 6 pilot REs per PRB
1111Same cost, the other port of CDM group 0
210, 12Two layers, both in CDM group 0, 6 pilot REs
3201One layer but the whole DMRS symbol reserved -- the MU-MIMO case
4211As above, other port
5221One layer in CDM group 1
6231One layer in CDM group 1, other port
720, 12Two layers in group 0, group 1 reserved
822, 32Two layers in group 1, group 0 reserved
920, 1, 23Three layers across both groups
1020, 1, 2, 34Four layers. The maximum for type 1 single-symbol
1120, 22Two layers, one per CDM group -- chosen when the two layers need maximum pilot isolation rather than minimum overhead
12 to 15--reserved--A DCI carrying one of these is malformed

Table 7. TS 38.212 Table 7.3.1.2.2-1, one codeword, dmrs-Type type1 and maxLength len1. Note values 2 and 11: both give two layers, and they differ only in whether the two ports share a CDM group. Value 2 costs 6 pilot REs per PRB, value 11 costs 12.

🧮
Worked calculation

Four layers, configuration type 1. Antenna port field value 10.

CDM groups without data = 2 -> all 12 subcarriers of the DMRS

symbol are reserved, none carry PDSCH.

Ports 1000, 1001 in CDM group 0 (k = 0, 2, 4, 6, 8, 10), separated

by w_f = [+1,+1] and [+1,-1].

Ports 1002, 1003 in CDM group 1 (k = 1, 3, 5, 7, 9, 11), same codes.

Pilot cost with pos1: 2 symbols x 12 REs = 24 REs per PRB of 168.

Four layers, configuration type 2. The corresponding row of Table 7.3.1.2.2-3 gives ports 0-3 with 3 CDM groups without data.

Ports 1000, 1001 in CDM group 0 (k = 0, 1, 6, 7).

Ports 1002, 1003 in CDM group 1 (k = 2, 3, 8, 9).

CDM group 2 (k = 4, 5, 10, 11) carries nothing for this UE.

Pilot cost is identical: 12 of 12 REs in each DMRS symbol.

Same four layers, same overhead, different resource elements. Type 2 buys nothing at four layers. It buys everything at eight and twelve.

The layer count is not signalled anywhere as a number. It is the length of the port list in the antenna port field, and that is the only place it appears. A log printing "rank 4" is reporting its own interpretation of this field -- so when the port list and the reported rank disagree, trust the port list.

7. Double-Symbol DMRS and the Port Doubling

maxLength = len2 tells the UE that the DMRS may be two symbols long, and the antenna port field then says whether a given grant actually uses one symbol or two. It is a capability switch, not a commitment: a len2-configured UE still receives single-symbol DMRS on most of its grants, and the cost of the configuration is paid in the wider antenna port field (§6.1) rather than in pilots.

Figure 3. Double-symbol type 1 DMRS. Both symbols carry the same comb structure; the pair is separated by a length-2 code in time, so ports 1000 to 1003 use w_t = [+1, +1] and ports 1004 to 1007 use w_t = [+1, −1]. The pair is one DMRS position, counted once by dmrs-AdditionalPosition, which is why len2 restricts that parameter to pos0 or pos1 -- there is no room for four double-symbol positions in fourteen symbols.
Single symbol (len1)Double symbol (len2)
Symbols per DMRS position12, consecutive
Codes availableFrequency OCC only, length 2Frequency OCC length 2 and time OCC length 2
Type 1 ports4 (1000 to 1003)8 (1000 to 1007)
Type 2 ports6 (1000 to 1005)12 (1000 to 1011)
dmrs-AdditionalPosition allowedpos0, pos1, pos2, pos3pos0 and pos1 only
Pilot symbols in a 14-symbol grant, pos012
Pilot symbols in a 14-symbol grant, pos124
Overhead, 14-symbol grant, all groups reserved7.1% at pos0, 14.3% at pos114.3% at pos0, 28.6% at pos1
Doppler toleranceBetter -- more positions availableWorse. Four pilot symbols in fourteen, but only two distinct positions, so the channel is sampled in time at only two instants
When to use itEverything up to 4 layers (type 1) or 6 (type 2)Only when the port count genuinely requires it: 5 to 8 layers with type 1, 7 to 12 with type 2

Table 8. maxLength len1 against len2. The Doppler row is the counter-intuitive one: len2 with pos1 puts four symbols of pilot in the slot but samples the channel at only two points in time, so it is worse for a fast-moving UE than len1 with pos2, which costs less and samples three times.

⚠️
Common pitfall

Configuring maxLength len2 on a cell that never schedules more than four layers costs you nothing in pilots -- no grant will use the second symbol -- and one bit in every DCI 1_1, because the antenna port field widens from 4 bits to 5. One bit does not sound like much until you notice it changes the DCI payload size, which changes the aggregation level needed for a given PDCCH reliability, which changes CORESET capacity. Configure len2 because you need the ports, not because it looks more capable.

8. Configuration, Field by Field

The DMRS configuration is small -- six fields plus an optional PT-RS substructure -- and every one of them has a default that is expressed by absence rather than by a value. That single design choice is responsible for a disproportionate share of the field problems in §20, so it is worth going through the fields one at a time.

FieldASN.1 typeAbsent meansWhat it controls
dmrs-TypeENUMERATED {type2}type 1The frequency mapping and the CDM group count (§3, §4). The enumeration has exactly one member, so the only way to say type 1 is to omit the field
dmrs-AdditionalPositionENUMERATED {pos0, pos1, pos3}pos2How many DMRS symbols beyond the front-loaded one, and where (§10). Note that pos2 is not in the enumeration -- it is the absent case
maxLengthENUMERATED {len2}len1Whether double-symbol DMRS is permitted, and therefore the antenna port field width (§7)
scramblingID0INTEGER (0..65535)N_ID_cellThe sequence identity used when nSCID = 0 (§13)
scramblingID1INTEGER (0..65535)N_ID_cellThe sequence identity used when nSCID = 1
phaseTrackingRSSetupRelease { PTRS-DownlinkConfig }No PT-RSPhase tracking reference signals (§16)

Table 9. DMRS-DownlinkConfig, field by field. Four of the six fields encode their most common value as absence. A configuration dump that shows an empty DMRS-DownlinkConfig is not unconfigured -- it is type 1, pos2, len1, cell-ID scrambling, no PT-RS.

⚠️
Common pitfall

An empty DMRS-DownlinkConfig means type 1, pos2, len1. It does not mean "nothing configured" and it does not mean "defaults to pos0". This trips up log readers and configuration tools in equal measure: a tool that treats an absent dmrs-AdditionalPosition as pos0 will compute one DMRS symbol where the UE computes three, and every rate-matching calculation downstream of that is wrong. If you are writing a decoder, hard-code the four absent-case defaults and print them explicitly, because that is what the UE does.

8.1 Two configurations, one per mapping type

The DMRS configuration is not attached to the bandwidth part or to the cell. It is attached to the mapping type, and there are two separate instances inside PDSCH-Config:

Where the DMRS configuration hangs -- TS 38.331 PDSCH-Config
PDSCH-Config
 |
 +-- dmrs-DownlinkForPDSCH-MappingTypeA   SetupRelease { DMRS-DownlinkConfig }
 |     applies to every grant whose TDRA row says mappingType typeA
 |     typically: dmrs-AdditionalPosition pos1 or pos2 (long allocations)
 |
 +-- dmrs-DownlinkForPDSCH-MappingTypeB   SetupRelease { DMRS-DownlinkConfig }
       applies to every grant whose TDRA row says mappingType typeB
       typically: dmrs-AdditionalPosition pos0 (short allocations)

PUSCH-Config carries the same pair:
   dmrs-UplinkForPUSCH-MappingTypeA / -MappingTypeB, both DMRS-UplinkConfig

-- Either may be absent. An absent structure for a mapping type that the
-- TDRA list actually uses means the UE applies the all-defaults case:
-- type 1, pos2, len1, cell-ID scrambling.

This separation is the right design and it is also a trap. A cell running both slot-based eMBB and mini-slot URLLC has two DMRS configurations in flight for the same UE at the same time, and a grant switches between them purely by its TDRA row's mappingType field. When a log shows a UE decoding type A grants correctly and type B grants not at all -- or the reverse -- the mapping-type-specific configuration is the first place to look, not the radio.

8.2 dmrs-TypeA-Position: the field that arrives before RRC does

One DMRS parameter does not live in DMRS-DownlinkConfig at all. dmrs-TypeA-Position, which selects whether the mapping type A DMRS is at slot symbol 2 or symbol 3, is broadcast in the MIB TS 38.331 `MIB` and repeated in ServingCellConfigCommon:

TS 38.331 MIB -- the one DMRS field in the broadcast payload
MIB ::= SEQUENCE {
    systemFrameNumber              BIT STRING (SIZE (6)),
    subCarrierSpacingCommon        ENUMERATED {scs15or60, scs30or120},
    ssb-SubcarrierOffset           INTEGER (0..15),
    dmrs-TypeA-Position            ENUMERATED {pos2, pos3},
    pdcch-ConfigSIB1               PDCCH-ConfigSIB1,
    cellBarred                     ENUMERATED {barred, notBarred},
    intraFreqReselection           ENUMERATED {allowed, notAllowed},
    spare                          BIT STRING (SIZE (1))
}

-- 1 bit of the 23-bit MIB payload. It has to be here, and not in any
-- dedicated configuration, because the UE must receive SIB1 -- a
-- mapping type A PDSCH -- before any dedicated configuration exists.

The reason it is in the MIB is causal, not historical. SIB1 is carried on a mapping type A PDSCH. To receive that PDSCH the UE must know where its DMRS is. So the DMRS position has to be known before SIB1 is read, which means it has to be in the MIB. The companion 18 MIB and SIB1 IEs document owns the MIB payload in full and the companion 02 Radio Frame Structure document owns how the MIB is carried on PBCH.

🔍
What you see in logs

dmrs-TypeA-Position is also the index into the default PDSCH time-domain allocation tables, which have separate S and L columns for pos2 and pos3 -- see the companion 32 SLIV and Time Domain Allocation document, §8.1. So a single MIB bit decides both where the DMRS symbol is and which start symbol and length a default-table grant resolves to. A gNB whose dedicated ServingCellConfigCommon disagrees with what it is broadcasting in its own MIB produces a UE that decodes SIB1 and the RAR perfectly and then fails every dedicated type A grant, which is a very odd-looking symptom until you know to check for it.

9. The First DMRS Symbol: Type A, Type B, and dmrs-TypeA-Position

The position of the first DMRS symbol, written l0 throughout TS 38.211, has exactly two possible definitions and the mapping type chooses between them TS 38.211 cl. 7.4.1.1.2:

Mapping type AMapping type B
l0 isdmrs-TypeA-Position: symbol 2 or symbol 30 -- always
Referenced toThe slot boundaryThe first symbol of the allocation
Absolute symbol of the first DMRS2 or 3, whatever S isS, whatever S is
Consequence for SS must be <= l0, hence S in {0, 1, 2, 3} for PDSCH and S = 0 for PUSCHNo constraint from DMRS. S may be anywhere in the slot
ld, the duration used to index the position tablesFrom the first symbol of the slot to the last symbol of the allocation, i.e. ld = S + LThe allocation length, i.e. ld = L
Configuration useddmrs-DownlinkForPDSCH-MappingTypeAdmrs-DownlinkForPDSCH-MappingTypeB

Table 10. l0 and ld for the two mapping types. The ld row is the one that produces wrong answers: for mapping type A, ld is not the allocation length. A grant with S = 2 and L = 12 has ld = 14, and it is row 14 of the position table that applies, not row 12.

Figure 4. The same slot, five allocations. The three type A rows all put their first DMRS at the slot-referenced l0 regardless of where the allocation starts -- note the top row, S = 0, where the first DMRS is the third symbol of the allocation, not the first. "Front-loaded" for type A means front-loaded relative to the slot. The two type B rows carry their DMRS on their own first symbol, which is what lets S be anything.
⚠️
Common pitfall

For mapping type A, ld = S + L, not L. TS 38.211 defines ld for type A as the duration from the first symbol of the slot to the last symbol of the scheduled resources, so the two symbols before S are counted even though nothing is transmitted in them. A grant with S = 2, L = 12 uses the ld = 14 row. A grant with S = 3, L = 11 also uses the ld = 14 row. Reading the table at ld = 12 for the first of those gives {l0, 6, 9} instead of {l0, 7, 11} at pos2 -- two of the three DMRS symbols in the wrong place, and the UE will be looking at symbols 6 and 9 while the gNB transmits at 7 and 11. Everything decodes as noise.

9.1 Why S is capped for mapping type A

The chain of reasoning is short and it runs in the direction people usually do not expect. The DMRS symbol is fixed at slot symbol 2 or 3. The allocation must contain its own DMRS. Therefore S cannot exceed l0. The (S, L) validity table in TS 38.214 encodes that as S in {0, 1, 2, 3} for PDSCH mapping type A, with S = 3 usable only when dmrs-TypeA-Position = pos3. The restriction is not about control regions or about the CORESET -- it is entirely about the DMRS. The companion 32 SLIV and Time Domain Allocation document works the same constraint from the allocation side.

For PUSCH mapping type A the cap is tighter still: S = 0, full stop. There is no uplink control region to skip, so a nonzero S buys nothing, and the spec simply forbids it.

9.2 Mapping type B and the mini-slot

Mapping type B moves the reference point to the allocation, and that is the whole of what mapping type B is. Everything else about the mini-slot -- the ability to start at any symbol, the two-symbol PDSCH, the sub-slot PUSCH -- follows from the DMRS travelling with the grant. Rel-15 PDSCH type B permits L in {2, 4, 7} only; PUSCH type B permits L from 1 to 14.

Type B allocationldpos0pos1First DMRS at
PDSCH, L = 22{0}{0}S
PDSCH, L = 44{0}{0}S
PDSCH, L = 77{0}{0, 4}S, and S + 4 at pos1
PUSCH, L = 11{0}{0}S -- the entire allocation is DMRS
PUSCH, L = 55{0}{0, 4}S, and S + 4 at pos1
PUSCH, L = 66{0}{0, 4}S, and S + 4 at pos1

Table 11. Type B DMRS positions, relative to the start of the allocation, from TS 38.211 Table 7.4.1.1.2-3 (PDSCH) and Table 6.4.1.1.3-3 (PUSCH). Positions are given as offsets from S because l0 = 0 for type B. Below ld = 7 there is nowhere to put an additional position, so pos1, pos2 and pos3 all collapse to pos0.

🔍
What you see in logs

A single-symbol PUSCH -- legal for mapping type B -- is entirely DMRS. There is no data in it at all; it is a channel sounding opportunity that happens to be shaped like a grant. If you find L = 1 PUSCH grants in a log and no uplink transport blocks associated with them, nothing is broken.

10. Additional Positions: the TS 38.211 Tables

dmrs-AdditionalPosition says how many DMRS symbols the allocation gets beyond the front-loaded one, and the spec then decides where they go as a function of ld. It is not a free choice of positions -- the UE and the gNB both read the same table and there is no signalling of the result. The table is TS 38.211 Table 7.4.1.1.2-3, "PDSCH DM-RS positions l-bar for single-symbol DM-RS"; the PUSCH equivalent is Table 6.4.1.1.3-3 and has the same structure.

ldpos0pos1pos2pos3
3 to 7l0l0l0l0
8l0l0, 7l0, 7l0, 7
9l0l0, 7l0, 7l0, 7
10l0l0, 9l0, 6, 9l0, 6, 9
11l0l0, 9l0, 6, 9l0, 6, 9
12l0l0, 9l0, 6, 9l0, 5, 8, 11
13l0l0, 11l0, 7, 11l0, 5, 8, 11
14l0l0, 11l0, 7, 11l0, 5, 8, 11

Table 12. TS 38.211 Table 7.4.1.1.2-3, PDSCH mapping type A, single-symbol DMRS, normal CP -- the rows for ld = 3 to 14. Values other than l0 are absolute symbol indices within the slot, not offsets. For mapping type A, ld = S + L (§9). Rows below ld = 3 and the mapping type B columns are omitted; the type B columns are in §9.2.

Three structural properties of this table are worth having in your head before you use it:

  • Below ld = 8, every value of dmrs-AdditionalPosition gives the same answer. There is no room for an additional position in a seven-symbol allocation, so pos3 behaves exactly like pos0. Configuring pos3 on a cell that only schedules short allocations achieves nothing and costs nothing.
  • Only the entries after l0 are absolute. "l0, 7, 11" means the configured l0 -- 2 or 3 -- followed by symbols 7 and 11 of the slot. The second and third positions do not move when l0 moves from 2 to 3, which is why pos2 with l0 = 3 gives {3, 7, 11}: a 4-symbol gap followed by a 4-symbol gap, slightly more even than {2, 7, 11}.
  • The additional positions are not evenly spaced. pos2 at ld = 14 gives gaps of 5 and 4 symbols; pos3 gives 3, 3 and 3. The designers chose positions that keep the last pilot near the end of the allocation, because extrapolation past the final pilot is the worst part of the estimate.
Figure 5. The four values of dmrs-AdditionalPosition over one 14-symbol type A allocation, with the pilot spacing annotated. pos0 leaves symbol 13 eleven symbols away from the only measurement of the channel; pos3 never leaves any symbol more than two away from a pilot. The density change is the whole parameter, and §11 turns it into a speed limit.

10.1 The double-symbol table

With maxLength = len2, a different and much shorter table applies (TS 38.211 Table 7.4.1.1.2-4), and only pos0 and pos1 exist:

ldpos0pos1Pilot symbols total
4 to 9l0l02
10 to 12l0l0, and a second pair in the upper half of the slot2 at pos0, 4 at pos1
13 to 14l0l0, and a second pair later still2 at pos0, 4 at pos1

Table 13. TS 38.211 Table 7.4.1.1.2-4, double-symbol DMRS, condensed. The exact index of the second pair depends on ld -- check the table for your ld rather than assuming, because the second pair moves between the ld = 12 and ld = 13 rows. What is certain is that there are at most two double-symbol positions in a slot, and each of them occupies two symbols.

📘
Spec detail

maxLength len2 and dmrs-AdditionalPosition pos2 or pos3 is an invalid combination, and a configuration tool that emits it has a bug. The double-symbol table has no pos2 or pos3 rows: four double-symbol positions would be eight pilot symbols in a fourteen-symbol slot, which is not a transmission, it is a sounding signal. Some UEs reject the reconfiguration; others accept it and apply pos1. Both behaviours have been observed, and neither is documented, so do not rely on either.

11. Doppler, Coherence Time, and Why pos3 Exists

dmrs-AdditionalPosition is the only DMRS parameter whose correct value depends on something the configuration cannot see: how fast the UE is moving. This section does the arithmetic that turns a speed into a parameter value, because without it the four enumeration members are just four numbers.

A moving UE sees a Doppler shift, and the spread of Doppler shifts across the multipath components is what makes the channel change with time. The maximum Doppler frequency is:

Doppler and coherence time
    f_d  =  v * f_c / c

      v    UE speed, metres per second
      f_c  carrier frequency, hertz
      c    3 x 10^8 m/s

The coherence time -- the interval over which the channel stays
correlated enough to reuse an estimate -- is inversely proportional:

    T_c  ~  0.423 / f_d       (50% correlation, Clarke model)
    T_c  ~  0.179 / f_d       (a stricter 90% criterion)

The 0.423 figure is used below. It is an approximation and the exact
constant depends on the scattering model; treat the results as an
order of magnitude, not a specification.
🧮
Worked calculation

Case 1: 3 km/h at 3.5 GHz -- a pedestrian in an FR1 macro cell.

v = 0.833 m/s

f_d = 0.833 x 3.5e9 / 3e8 = 9.7 Hz

T_c = 0.423 / 9.7 = 43.5 ms

At 30 kHz SCS a slot is 0.5 ms, so T_c spans about 87 slots.

The channel is static across the whole allocation and then some.

-> pos0. Anything more is pure waste.

Case 2: 300 km/h at 3.5 GHz -- high-speed rail, FR1.

v = 83.3 m/s

f_d = 83.3 x 3.5e9 / 3e8 = 972 Hz

T_c = 0.423 / 972 = 435 us

At 30 kHz a symbol is 35.7 us, so T_c is about 12 symbols.

A pilot at symbol 2 is stale by symbol 13 of the same slot.

-> pos2 at minimum, pos3 to be safe. pos3's 3-symbol spacing is

107 us, comfortably inside 435 us.

Case 3: 3 km/h at 28 GHz -- a stationary FR2 user.

f_d = 0.833 x 28e9 / 3e8 = 77.8 Hz

T_c = 0.423 / 77.8 = 5.4 ms

At 120 kHz a slot is 125 us, so T_c spans about 43 slots.

-> pos0. Even walking pace is slow at FR2 if the slot is short

enough.

Case 4: 300 km/h at 28 GHz -- the hard case.

f_d = 83.3 x 28e9 / 3e8 = 7778 Hz

T_c = 0.423 / 7778 = 54 us

At 120 kHz a symbol is 8.93 us, so T_c is about 6 symbols.

-> pos3, and even that is marginal: 3-symbol spacing is 27 us

against a 54 us coherence time. This is why FR2 high mobility is

genuinely difficult and why beam management, not DMRS density,

usually becomes the limit first.

Two conclusions fall out. First, what matters is the ratio of coherence time to symbol duration, and because a higher SCS shortens the symbol almost as fast as a higher carrier raises the Doppler, FR2 at 120 kHz is not eight times worse than FR1 at 30 kHz -- compare cases 2 and 4 and the symbol counts are 12 and 6. Second, the parameter is genuinely per-UE: cases 1 and 2 are the same cell and the same numerology, and they want different values.

Scenariof_dT_c (0.423/f_d)T_c in symbolsSensible value
3 km/h, 3.5 GHz, 30 kHz9.7 Hz43.5 ms~1220pos0
30 km/h, 3.5 GHz, 30 kHz97 Hz4.4 ms~122pos0
120 km/h, 3.5 GHz, 30 kHz389 Hz1.09 ms~30pos1
300 km/h, 3.5 GHz, 30 kHz972 Hz435 us~12pos2 or pos3
500 km/h, 3.5 GHz, 30 kHz1620 Hz261 us~7pos3
3 km/h, 28 GHz, 120 kHz77.8 Hz5.4 ms~605pos0
120 km/h, 28 GHz, 120 kHz3111 Hz136 us~15pos1 or pos2
300 km/h, 28 GHz, 120 kHz7778 Hz54 us~6pos3

Table 14. The parameter as a speed limit. "T_c in symbols" is the coherence time divided by the symbol duration at that SCS. The rule of thumb the table encodes: pick a value whose worst pilot spacing is comfortably below T_c in symbols, and no denser. Approximate throughout -- the Clarke constant is model-dependent.

⚠️
Common pitfall

Over-configuring the additional positions is the more common error, and it is invisible because nothing fails. A cell serving a static fixed-wireless-access population with pos3 is throwing away 21.5% of its downlink capacity relative to pos0 (§18) for no benefit at all -- and the KPI dashboard shows healthy BLER, healthy SINR and healthy modulation, because everything is healthy. The only symptom is a throughput number lower than the link budget predicts, which almost nobody checks against theory.

The opposite error is easier to spot. Under-configuring produces BLER that rises with allocation length and with UE speed, and correlates with nothing else. A UE whose short grants succeed and whose 14-symbol grants fail, at good SINR, is a UE whose channel estimate has gone stale by the end of the allocation. Outer-loop link adaptation will respond by cutting the MCS, which fixes the BLER and hides the cause -- see the companion 34 Link Adaptation document for how that feedback loop converts a DMRS density problem into an apparent coverage problem.

12. Choosing a Configuration Before the First Grant

The gNB has to commit to a DMRS configuration in an RRCReconfiguration, before it has scheduled anything, and it cannot change it per grant -- only the number of ports actually used and the CDM groups without data are dynamic, through the antenna port field. So the configuration has to cover the whole envelope of what the scheduler might want to do with this UE.

The decision order matters, because the port requirement is a hard constraint and the Doppler requirement is a trade:

Figure 6. The decision, in the order it has to be taken. Ports first: the port count sets dmrs-Type and maxLength, and both are capability questions with a right answer. Doppler second: dmrs-AdditionalPosition is a trade, and §11 gives the arithmetic. Note the constraint flowing backwards -- choosing len2 for ports removes pos2 and pos3 from the Doppler decision, so a high-mobility 8-layer UE is a configuration NR cannot express well.
What the scheduler needsdmrs-TypemaxLengthTypical AdditionalPositionPilot symbols in a 14-symbol grant
1 to 2 layers, low mobilityabsent (type 1)absent (len1)pos0 or pos11 or 2
1 to 4 layers, low mobilityabsent (type 1)absent (len1)pos12
1 to 4 layers, high mobilityabsent (type 1)absent (len1)pos2 or pos33 or 4
Up to 6 layers, MU-MIMOtype2absent (len1)pos12
Up to 8 layers single-userabsent (type 1)len2pos0 or pos12 or 4
Up to 12 layers, dense MU-MIMOtype2len2pos0 or pos12 or 4
URLLC mini-slots, any mobilityabsent (type 1)absent (len1)pos0 -- the allocation is too short for more1

Table 15. Configurations that make sense together. The last row is why the mapping-type-specific structures exist: a cell serving both eMBB and URLLC configures pos2 for mapping type A and pos0 for mapping type B on the same UE, and the TDRA row's mappingType field picks between them per grant.

💡
Key point

The one combination NR handles badly is high port count and high mobility together. Eight layers needs maxLength len2, len2 caps dmrs-AdditionalPosition at pos1, and pos1 with double symbols samples the channel at only two instants in the slot. A 300 km/h UE cannot usefully be given eight layers, and that is a structural property of the DMRS design rather than an implementation limitation. In practice the scheduler resolves it the other way round: fast UEs get fewer layers, which they need anyway because rank collapses at speed.

13. Sequence Generation and the Scrambling Identities

Knowing which resource elements carry DMRS is half the problem. The other half is knowing what value each one carries, because a reference signal is only a reference if the receiver already knows it. For CP-OFDM PDSCH and PUSCH the values come from a length-31 Gold sequence -- a pseudo-noise sequence built from two maximal-length shift register sequences -- mapped to QPSK TS 38.211 cl. 7.4.1.1.1:

TS 38.211 cl. 7.4.1.1.1 -- PDSCH DMRS sequence initialisation
r(n) = (1/sqrt2)(1 - 2c(2n))  +  j (1/sqrt2)(1 - 2c(2n+1))

  c(i) is the length-31 Gold sequence of TS 38.211 cl. 5.2.1,
  initialised per DMRS symbol with:

c_init = ( 2^17 * ( N_symb_slot * n_s + l + 1 ) * ( 2 * N_ID + 1 )
           + 2 * N_ID + n_SCID )  mod  2^31

  N_symb_slot  14 for normal CP
  n_s          slot number within the frame
  l            OFDM symbol index within the slot
  N_ID         scramblingID0 if n_SCID = 0, scramblingID1 if n_SCID = 1;
               N_ID_cell if the field is absent
  n_SCID       0 or 1, from the DCI (see below)

-- Rel-15 form. Later releases add terms for the extended CDM group and
-- multi-TRP cases; check the release of the specification you are
-- working against before hand-computing a sequence.

Four things go into that initialisation, and each of them is doing a job:

InputWhere it comes fromWhy it is in the initialisation
Slot number n_sThe frame timingThe sequence changes every slot, so a persistent interferer does not correlate with a UE's pilots slot after slot
Symbol index lThe DMRS symbol positionEach DMRS symbol of a multi-position configuration gets a distinct sequence, so the additional positions do not reinforce interference
N_IDscramblingID0 / scramblingID1, or N_ID_cellThe identity that separates one cell's or one TRP's pilots from another's. This is the inter-cell interference randomisation term
n_SCIDThe 1-bit DMRS sequence initialization field in DCI 1_1 / 0_1; 0 for DCI 1_0 / 0_0Lets the scheduler switch between two identities dynamically, per grant, without an RRC reconfiguration

Table 16. The four inputs to c_init. Note that N_ID has a range of 0 to 65535 while there are only 1008 physical cell identities -- the scrambling identity is deliberately a much larger space, so that neighbouring cells and co-operating TRPs can be given distinct pilot sequences independently of their cell IDs.

13.1 Why the scrambling identity matters

Two cells transmitting DMRS on the same resource elements with the same sequence do not interfere randomly -- they interfere coherently. The victim UE's correlator sees the interferer's pilots as though they were its own, and the channel estimate it produces is a weighted sum of two channels. That is far worse than noise, because it biases the estimate rather than adding variance to it: the equaliser then confidently applies the wrong correction to every data symbol.

Distinct scrambling identities make that interference behave like noise, which averaging can suppress. So scramblingID0 and scramblingID1 want planning like a PCI: reusing a value across a cell boundary produces a localised throughput hole that moves with the interferer's traffic.

⚠️
Common pitfall

A scrambling ID mismatch between what the gNB's transmitter uses and what it signalled to the UE is the purest DMRS failure there is. The UE generates the wrong sequence, correlates it against the received pilots, and gets a channel estimate that is pure noise -- not a degraded estimate, an uncorrelated one. Every transport block then fails CRC, at every MCS, at every SINR, in every PRB. And because SSB is a completely separate signal with its own sequence generation, the UE's reported RSRP and SINR stay perfectly healthy throughout. High BLER with good reported RSRP is the discriminator: it says the problem is in the reference signal chain, not in the radio path. This one signature is the single most useful thing in this document.

13.2 nSCID and dynamic switching

The nSCID bit in the DCI lets the scheduler pick between scramblingID0 and scramblingID1 per grant. Its main uses are multi-TRP transmission, where the two TRPs need distinct pilot sequences, and MU-MIMO pairing across CDM groups, where two co-scheduled UEs benefit from decorrelated pilots even in different groups. A UE that is configured with only scramblingID0 still has the bit in its DCI, and nSCID = 1 then resolves to N_ID_cell rather than to a configured value -- a subtlety worth knowing when a log shows a single UE's DMRS identity changing between grants for no configured reason.

14. PUSCH DMRS: CP-OFDM, Transform Precoding and Low-PAPR Sequences

Uplink DMRS for a CP-OFDM PUSCH is structurally identical to downlink: the same two configuration types, the same CDM groups, the same additional-position tables, the same Gold sequence. The differences are the port numbering -- 0 to 11 rather than 1000 to 1011 -- and the fact that the configuration lives in DMRS-UplinkConfig with the scrambling identities pushed one level down into a transformPrecodingDisabled substructure.

That substructure exists because transform precoding changes the reference signal design completely. DFT-s-OFDM -- transform precoding enabled, the single-carrier waveform inherited from LTE's SC-FDMA -- is used for coverage-limited uplink, where the peak-to-average power ratio of CP-OFDM would force the UE's power amplifier to back off. A Gold-sequence QPSK DMRS would destroy the low-PAPR property it exists to protect, so a different sequence is used:

CP-OFDM PUSCHDFT-s-OFDM PUSCH (transform precoding on)
dmrs-Typetype 1 or type 2, configurableType 1 only. Type 2 is not defined for transform precoding
SequenceGold sequence mapped to QPSK, as §13A low-PAPR sequence: Zadoff-Chu based for longer allocations, computer-generated for the shortest ones TS 38.211 cl. 6.4.1.1.1.2
Occupied subcarriers in the DMRS symbolComb-2 or the type 2 pairs; the other CDM groups may carry dataEvery allocated subcarrier. The sequence is single-carrier by construction, so there is no comb and no CDM group free for data
Layers1 to 4 per codeword1. Transform precoding is single-layer only, so there is one DMRS port and CDM does not arise
Identity parameterscramblingID0 / scramblingID1, 0 to 65535nPUSCH-Identity, 0 to 1007 -- a smaller space, aligned with the physical cell identity range
Sequence hoppingn/asequenceGroupHopping and sequenceHopping, which rotate the base sequence per slot to randomise inter-cell collisions
Overhead in the DMRS symbolPartial: 4 to 12 REs of 12 per PRBTotal: 12 of 12 REs per PRB, always

Table 17. The two uplink waveforms and their DMRS. The last row is the practical consequence: a DFT-s-OFDM PUSCH spends its whole DMRS symbol on pilot, so a 14-symbol single-position grant is 7.1% pilot and there is no cheaper option. The companion 35 Physical Channels document owns the waveform choice itself.

Group hopping is the mechanism that replaces the scrambling identity. Where CP-OFDM DMRS randomises inter-cell interference with a different sequence, low-PAPR DMRS cycles through a family of base sequences and cyclic shifts slot by slot, driven by nPUSCH-Identity. Two cells with the same identity hop identically and collide every slot; two with different identities collide occasionally and at random.

🔍
What you see in logs

Transform precoding is enabled by msg3-transformPrecoder in RACH-ConfigCommon for MSG3 and by transformPrecoder in PUSCH-Config afterwards, and the two are independent. A UE whose MSG3 uses DFT-s-OFDM and whose subsequent PUSCH uses CP-OFDM changes DMRS structure entirely at that transition -- different sequence family, different subcarrier occupancy, different identity parameter. If uplink works during random access and fails afterwards, check which waveform each phase used before looking at anything else. The companion 03 Random Access document owns the MSG3 grant.

15. DMRS on PDCCH, PBCH and PUCCH

The logic of section 1 applies to every physical channel, not just to the data channels: each is beamformed, so each carries its own pilots. The three control-plane cases each solve the problem slightly differently, and each has a quirk worth knowing.

15.1 PDCCH DMRS

PDCCH DMRS is mapped to every fourth subcarrier of each resource element group, at k = 4n + 1 within the REG TS 38.211 cl. 7.4.1.3. A REG is one PRB in one symbol, so three of its twelve resource elements are DMRS and nine carry control information: PDCCH is permanently 25% reference signal. There is one port, port 2000, because PDCCH is never spatially multiplexed -- it has to be decodable by a UE that knows nothing about the channel yet.

ParameterInRange / valuesEffect
pdcch-DMRS-ScramblingIDControlResourceSet0 to 65535The scrambling identity for the PDCCH DMRS sequence. Absent means N_ID_cell. Same reasoning as §13.1, applied per CORESET
precoderGranularityControlResourceSetsameAsREG-bundle or allContiguousRBsWhether the UE may assume the same precoder across the whole contiguous RB span of the CORESET, and therefore whether it may average DMRS across it
reg-BundleSizeControlResourceSetn2, n3, n6The unit within which the UE may always average DMRS, even with sameAsREG-bundle

Table 18. The PDCCH DMRS controls, all of them in ControlResourceSet. The companion 30 CORESET and Search Space document owns these IEs; this table covers only their reference-signal consequence.

⚠️
Common pitfall

precoderGranularity = allContiguousRBs is a promise from the gNB to the UE that it will not change the precoder across the CORESET's contiguous RBs. The UE cashes that promise by averaging DMRS across all of them, which can improve the PDCCH channel estimate by several dB and materially raises blind-decoding success at low aggregation levels. A gNB that signals allContiguousRBs and then applies per-bundle precoding has broken the promise: PDCCH BLER rises, no counter records why, and the symptom is missed grants that look like coverage. The companion 31 PDCCH Blind Decoding document covers what a missed candidate does downstream.

15.2 PBCH DMRS, which is also a signalling channel

PBCH DMRS is the most interesting of the three because it carries information as well as enabling demodulation. It sits at k = 4n + v, one resource element in four, where v = N_ID_cell mod 4 -- so the frequency positions themselves depend on the cell identity. Across the SS/PBCH block there are 144 DMRS resource elements: 60 in each of symbols 1 and 3, and 12 at each edge of symbol 2 where the SSS occupies the centre. Of the 576 PBCH resource elements in the block, 144 are DMRS -- 25% of PBCH is reference signal, which is enormous by any data-channel standard and entirely correct for a channel that has to be decodable by a UE with no channel knowledge at all.

Figure 7. PBCH DMRS in the first 24 of the SS/PBCH block's 240 subcarriers. One resource element in four, offset by v = N_ID_cell mod 4 -- so a UE that has already found PSS and SSS, and therefore knows N_ID_cell, knows where to look. The companion 02 Radio Frame Structure document owns the SSB's four-symbol structure; this figure shows only the pilot layer of it.
PBCH DMRS: a pilot doing double duty
PBCH DMRS sequence initialisation (TS 38.211 cl. 7.4.1.4.1):

c_init = 2^11 * ( i_SSB + 1 ) * ( floor(N_ID_cell / 4) + 1 )
       + 2^6  * ( i_SSB + 1 )
       + ( N_ID_cell mod 4 )

  i_SSB depends on the maximum number of candidate SSB positions:
    L_max = 4        i_SSB = 2 LSBs of the SSB index, + 4 * n_hf
    L_max = 8 or 64  i_SSB = 3 LSBs of the SSB index

-- So the DMRS sequence itself encodes 2 or 3 bits of the SSB index
-- (and, at L_max = 4, the half-frame bit). The UE recovers them by
-- hypothesis testing: it correlates against each candidate sequence
-- and takes the one that fits. For L_max = 64 in FR2 the remaining
-- 3 MSBs of the index are carried in the PBCH payload instead.
💡
Key point

The PBCH DMRS is doing two jobs at once, and this is genuinely elegant engineering. The UE has to correlate against the DMRS anyway to demodulate PBCH; making the sequence a function of the SSB index means that correlation also identifies which beam the UE found, at zero additional resource cost. Two or three bits of signalling for free, recovered by a computation the receiver was already performing. It is also why a UE can determine the SSB index before decoding the MIB, which is what makes the SSB-to-RACH-occasion association work during initial access -- see the companion 03 Random Access document.

15.3 PUCCH DMRS, format by format

PUCCH DMRS varies more between formats than anywhere else in NR, because the formats themselves are structurally different: some are sequence-based and carry no explicit pilot at all, others are coherently modulated and need one TS 38.211 cl. 6.4.1.3:

FormatSymbolsPayloadDMRSFraction on DMRS
01 or 21 or 2 bitsNone. The whole transmission is a cyclic shift of a base sequence, detected non-coherently0% -- and 100%, depending how you count
14 to 141 or 2 bitsAlternate symbols, starting with the first: symbols 0, 2, 4, ...About 50%
21 or 2More than 2 bitsSubcarriers k with k mod 3 = 1 within each PRB, in the same symbols as the payload -- 4 REs of 12 per PRB33%
34 to 14More than 2 bits2 dedicated symbols for lengths 4 to 13; at 14 symbols, symbols 3 and 10. With additionalDMRS and length >= 10, 4 symbols14% to 50%
44 to 14More than 2 bitsSame symbol positions as format 3; the payload is spread with a frequency-domain OCC so several UEs share the PRB14% to 50%

Table 19. PUCCH DMRS by format, from TS 38.211 cl. 6.4.1.3 and Table 6.4.1.3.3.2-1. The exact symbol indices for formats 3 and 4 depend on the length, on whether frequency hopping is configured, and on additionalDMRS -- consult the table for your case rather than assuming. The companion 35 Physical Channels document owns the formats themselves.

Format 0 is the interesting case. It needs no DMRS: the receiver knows the finite set of sequences the UE might have sent and tests which one arrived. That is non-coherent detection, and it works for one or two bits and not for more. Format 1 pays half its symbols for pilots to get coherent detection of the same one or two bits over a longer transmission, which buys coverage. The trade between them is the clearest example in NR of pilot cost as a real engineering decision.

16. PT-RS: Tracking Phase Noise

DMRS estimates the channel once per position and the receiver interpolates between them. That works for amplitude and for the slow part of the phase, but there is a fast phase impairment it cannot follow: oscillator phase noise, which grows roughly with the square of carrier frequency and is essentially a common phase error rotating the whole constellation from symbol to symbol.

At 3.5 GHz with 64QAM the rotation over a slot is small enough to ignore. At 28 GHz with 256QAM it is not: the constellation points are separated by a few degrees of phase, and a common phase error of that size turns a clean symbol into a neighbouring one. Phase tracking reference signals exist to measure and remove it TS 38.211 cl. 7.4.1.2.

Figure 8. PT-RS time density. One resource element per PT-RS symbol per PT-RS PRB -- very cheap in frequency, potentially expensive in time. Note that the pattern restarts at every DMRS symbol: the DMRS gives a fresh absolute phase reference and PT-RS tracks away from it, so a configuration with several additional DMRS positions gets its PT-RS grid reset several times per slot.

16.1 Density, and how it is chosen

Neither density is signalled per grant. Both are derived from the grant by comparing it against thresholds the network configures TS 38.214 cl. 5.1.6.3, which is an unusual and easily missed piece of design: the same PT-RS configuration produces different PT-RS patterns on different grants to the same UE.

DensityDerived fromConfigured byValuesMeaning
Time, L_PT-RSThe scheduled MCStimeDensity, three thresholds (each INTEGER (0..29))no PT-RS, 4, 2, 1MCS below the first threshold: no PT-RS. Then every 4th, every 2nd, every symbol as the MCS climbs -- because phase noise matters more at higher modulation order
Frequency, K_PT-RSThe number of scheduled PRBsfrequencyDensity, two thresholds (each INTEGER (1..276))no PT-RS, 2, 4Narrow allocations: no PT-RS. Then every 2nd PRB, then every 4th -- because a wide allocation already gives plenty of PT-RS samples to average

Table 20. The two PT-RS densities and their derivation, TS 38.214 Tables 5.1.6.3-1 and 5.1.6.3-2. The frequency density moves the wrong way at first glance -- a wider allocation gets sparser PT-RS -- and the reason is that the receiver averages the PT-RS across PRBs to estimate a single common phase error, so a wide allocation needs fewer per PRB.

16.2 The DMRS association

A PT-RS resource element is not an independent reference signal. It is transmitted on the same antenna port as one of the DMRS ports of the grant, and it uses that DMRS port's channel estimate as its phase reference. Which DMRS port is signalled in the DCI, in a 2-bit PTRS-DMRS association field present when PT-RS is configured TS 38.212 cl. 7.3.1.2.2.

The association exists because the phase error the PT-RS measures is the combination of the transmitter's and receiver's oscillator noise along one spatial path. Different layers can see different common phase errors, so a PT-RS on the wrong port measures the wrong rotation. Up to two PT-RS ports exist for the two-codeword downlink case; a single-codeword transmission has one, associated with one of its DMRS ports.

FieldInRangeAbsent meansEffect
frequencyDensityPTRS-DownlinkConfig2 values, each 1 to 276K_PT-RS = 2 alwaysThe two PRB-count thresholds selecting no PT-RS, K = 2 or K = 4
timeDensityPTRS-DownlinkConfig3 values, each 0 to 29L_PT-RS = 1 alwaysThe three MCS thresholds selecting no PT-RS, L = 4, 2 or 1
epre-RatioPTRS-DownlinkConfig0 to 30PT-RS energy per resource element relative to PDSCH. A boost lets a single RE per PRB give a usable phase estimate
resourceElementOffsetPTRS-DownlinkConfigoffset01, offset10, offset11offset00Which subcarrier within the PRB carries the PT-RS, so that co-scheduled UEs do not collide
ptrs-PortsPTRS-UplinkConfign1 or n2n/aUplink only: how many PT-RS ports the UE may transmit
maxNrofPortsPTRS-UplinkConfig (transform precoding)n1 or n2n/aFor DFT-s-OFDM the PT-RS structure is entirely different -- chunks in the pre-DFT domain, controlled by sampleDensity

Table 21. PT-RS configuration fields. epre-Ratio matters more than it looks: one resource element per PRB is a very small measurement, and boosting its power is what makes the estimate usable without spending more resource elements.

🔍
What you see in logs

PT-RS is configured and then almost always absent in FR1. The timeDensity thresholds are typically set so that no PT-RS appears below 64QAM, and the frequencyDensity thresholds so that none appears on narrow allocations. A cell can carry phaseTrackingRS in every UE's configuration and transmit PT-RS on a small minority of grants. If you are looking for PT-RS in a log and not finding it, check the scheduled MCS against the thresholds before concluding anything is wrong.

17. DMRS, CSI-RS and SRS: Telling Them Apart

These three are confused constantly, and the confusion is understandable -- all three are known signals sent to let the other end estimate something. They differ in who sends them, what the estimate is for, and whether they exist when nothing is being scheduled.

DMRSCSI-RSSRS
Sent byWhoever transmits the channel: gNB for DL, UE for ULgNB onlyUE only
Measured byThe receiver of that channelThe UEThe gNB
PurposeDemodulate this transmission. Nothing elseReport channel state so the gNB can choose MCS, rank and precoder for future transmissionsLet the gNB choose an uplink precoder and grant, and measure uplink channel quality
Present when nothing is scheduled?No. It rides inside a transmission and cannot exist without oneYes -- periodic CSI-RS is transmitted on a configured cadence regardless of trafficYes -- periodic SRS likewise
UE-specific?Yes. Its precoder, ports and density are per grantConfigured per UE, but a resource may be shared by many UEsYes, per UE
Beamformed with the data?Yes, by definition -- that is the pointNo. CSI-RS probes candidate beams, which is a different questionUsually wide-beam or per-panel
Used for RSRP?NoYes, CSI-RSRPn/a
PortsUp to 12 (24 in Rel-18)Up to 32Up to 4 (8 in Rel-18)
Port numbers0-11 UL, 1000-1011 DL3000 and up1000 to 1003
Spec clauseTS 38.211 cl. 7.4.1 and 6.4.1TS 38.211 cl. 7.4.1.5TS 38.211 cl. 6.4.1.4

Table 22. The three reference signals that people mix up. The "present when nothing is scheduled" row is the fastest discriminator: if a log shows a reference signal on an idle UE, it is not DMRS. The companion 20 Measurements and Events document owns CSI-RS as a measurement resource.

💡
Key point

The cleanest way to hold the distinction: CSI-RS and SRS answer "what should I send next?" DMRS answers "what did I just receive?" CSI-RS is measured, reported, and acted on some milliseconds later, by which time the channel has moved. DMRS is measured and used inside the same transmission, so it is never stale in the same way. That is why a CSI report can be wrong without anything failing -- link adaptation absorbs it -- while a DMRS error fails the transport block outright.

18. Overhead, and What It Costs in Throughput

Every DMRS resource element is a resource element the transport block does not get. The accounting is simple enough to do in your head once you have the structure, and it is worth doing because the numbers are larger than most people expect.

🧮
Worked calculation

Setup. One PRB, a 14-symbol allocation, normal CP.

Total REs = 12 subcarriers x 14 symbols = 168

Type 1, pos0, 1 CDM group without data.

1 DMRS symbol, 6 of its 12 REs reserved

6 / 168 = 3.6%

Type 2, pos0, 1 CDM group without data.

1 DMRS symbol, 4 of its 12 REs reserved

4 / 168 = 2.4% <- the cheapest DMRS in NR

Type 1, pos0, 2 CDM groups without data.

1 DMRS symbol fully reserved: 12 REs

12 / 168 = 7.1%

Type 1, pos2, 2 CDM groups without data.

3 DMRS symbols at {2, 7, 11}, each fully reserved: 36 REs

36 / 168 = 21.4%

Type 1, pos3, 2 CDM groups without data.

4 DMRS symbols at {2, 5, 8, 11}: 48 REs

48 / 168 = 28.6%

Type 1, maxLength len2, pos1, 2 CDM groups without data.

2 positions x 2 symbols = 4 symbols: 48 REs

48 / 168 = 28.6% <- same cost as pos3, half the time samples

Figure 9. The same seven configurations as a bar chart. The spread is twelvefold, from 2.4% to 28.6%, and every point on it is a legal configuration a scheduler might be running. Two observations: the cheapest configuration is type 2 with one CDM group, which almost nobody uses; and len2 with pos1 costs exactly what pos3 costs while sampling the channel in time half as often.

18.1 Carried through to a throughput number

Percentages are abstract. Here is the same arithmetic on a full carrier, so the cost has a unit:

🧮
Worked calculation

Given: 100 MHz TDD carrier, 30 kHz SCS, 273 PRB, 4 layers, 256QAM (8 bits per RE), code rate 0.85, 14-symbol slots, 2000 slots per second. Type 1, 2 CDM groups without data. Ignoring PDCCH, CSI-RS, SSB and TDD downlink duty cycle -- this is a peak-rate comparison, not a cell capacity figure.

Total REs per slot = 273 x 12 x 14 = 45 864

DMRS REs per symbol of pilot = 273 x 12 = 3 276

pos0: 1 pilot symbol -> 42 588 data REs

42 588 x 8 x 0.85 x 4 x 2000 = 2.317 Gbit/s

pos1: 2 pilot symbols -> 39 312 data REs

39 312 x 8 x 0.85 x 4 x 2000 = 2.139 Gbit/s

pos2: 3 pilot symbols -> 36 036 data REs

36 036 x 8 x 0.85 x 4 x 2000 = 1.960 Gbit/s

pos3: 4 pilot symbols -> 32 760 data REs

32 760 x 8 x 0.85 x 4 x 2000 = 1.782 Gbit/s

pos0 to pos3 costs 535 Mbit/s, or 23% of the peak rate. That is the price of the Doppler tolerance in §11, and it is why the parameter is worth getting right rather than setting defensively.

Every real cell has more overhead on top -- PDCCH, CSI-RS, SSB, the TDD pattern -- which the companion 35 Physical Channels document accounts for. What survives all of it is the ratio: whatever the cell achieves, pos0 to pos3 removes about 23% of it and pos1 to pos2 removes about 8%.

⚠️
Common pitfall

A useful sanity check on any throughput anomaly: compute the expected rate from the PRB count, the layer count, the modulation order, the code rate and the DMRS overhead, and compare it with what the cell is delivering. A 20%-ish shortfall with healthy BLER and healthy MCS is very often DMRS overhead that nobody accounted for -- either an over-configured dmrs-AdditionalPosition or a scheduler emitting 2 CDM groups without data on single-layer grants. Both are configuration problems that no counter reports and no alarm raises.

19. Parameter and Range Reference

ParameterWhere it livesRangeTypicalEffect if wrong
dmrs-TypeDMRS-DownlinkConfig, DMRS-UplinkConfigtype2, or absent for type 1absent (type 1)Pilots sought on the wrong subcarriers entirely: 100% BLER on every grant. The antenna port field is also a different width, so the DCI size may mismatch too
dmrs-AdditionalPositionsamepos0, pos1, pos3, or absent for pos2pos1 for mapping type A, pos0 for mapping type BRate matching diverges from the DMRS symbol onward. Long allocations fail, short ones may survive
maxLengthsamelen2, or absent for len1absent (len1)Changes the antenna port field width and therefore the DCI size. Blind decoding fails and no grant is found at all
scramblingID0sameINTEGER (0..65535)Often set equal to N_ID_cell, or planned per cellChannel estimate is uncorrelated noise. High BLER with good RSRP (§13.1)
scramblingID1sameINTEGER (0..65535)A second planned value, or absentSame, but only where the DCI sets nSCID = 1 -- an intermittent failure correlating with nothing visible
phaseTrackingRSsameSetupRelease { PTRS-DownlinkConfig }absent in FR1, present in FR2PT-RS resource elements treated as data or vice versa: raised BLER at high MCS only
dmrs-TypeA-PositionMIB, and ServingCellConfigCommonpos2, pos3pos2Every type A grant fails, type B grants succeed. Also selects which column of the default TDRA table applies (§8.2)
dmrs-DownlinkForPDSCH-MappingTypeAPDSCH-ConfigSetupRelease { DMRS-DownlinkConfig }presentAbsent means the all-defaults case, not "no DMRS": type 1, pos2, len1
dmrs-DownlinkForPDSCH-MappingTypeBPDSCH-ConfigSetupRelease { DMRS-DownlinkConfig }present when the TDRA list has type B rowsMini-slot grants fail while slot-based grants succeed
transformPrecoderPUSCH-Configenabled, disabled, or absentdisabled for capacity cells, enabled for coverageSelects the whole uplink DMRS sequence family (§14); a mismatch means the gNB correlates the wrong sequence type
pdcch-DMRS-ScramblingIDControlResourceSetINTEGER (0..65535)absent, i.e. N_ID_cellPDCCH channel estimate fails, so no grants are decoded at all -- much louder than a PDSCH DMRS fault

Table 23. Every parameter that changes what a DMRS resource element is or where it goes. Typical values are what many vendors ship and are not spec requirements. Note how many of the "effect if wrong" entries are total, binary failures rather than degradations -- that is the character of this whole area.

20. Failure Modes and What Each One Means

DMRS has no acknowledgement, no error indication and no negotiation. Both ends apply a mapping rule from configuration they believe they share, and when they do not share it there is nothing in the protocol that says so. Every failure below therefore presents as a decoding failure, and the diagnostic work is entirely in distinguishing them from each other and from a genuine radio problem.

💡
Key point

The discriminator, stated once. A DMRS fault produces high block error rate with good reported RSRP and good reported SINR. The UE's measurements come from SSB and CSI-RS, which have their own resource elements and their own sequence generation, and are entirely unaffected by a DMRS problem. So the radio looks fine and the data does not work. A coverage problem degrades both together. If BLER and RSRP disagree, the fault is in the reference-signal or rate-matching chain, and this section is the list of candidates.

FailureDetected byWhat the UE doesLog signature and what it points at
Scrambling ID mismatch between the gNB's transmitter and its own signalled scramblingID0Nobody. No protocol element checks itGenerates the wrong Gold sequence, correlates, and obtains an uncorrelated channel estimate100% DL BLER at every MCS and SINR, with healthy RSRP and SINR reports. The outer loop drives MCS to the floor and BLER stays at 100% -- the give-away, since real coverage problems improve as MCS falls
dmrs-TypeA-Position in dedicated configuration disagreeing with the value broadcast in MIBNobodyLooks for the type A DMRS in symbol 2 while the gNB transmits in symbol 3, or the reverseType A grants fail, type B grants succeed -- almost diagnostic on its own. Initial access works, because SIB1, the RAR and MSG4 use the MIB value, so the failure appears immediately after RRCReconfiguration
Mapping type A allocation whose S excludes the DMRS symbol (S > l0)In principle the configuration tool; in practice nobodyAttempts reception with no channel estimate at all100% failure on every grant using that TDRA row, at any SINR, with the PDCCH decoded correctly. A row-correlated 100% error rate is the fingerprint (companion 32 SLIV, §18)
Too few additional positions for the UE's DopplerNobody, but the effect is graded rather than binaryUses a stale channel estimate for the later symbols of the allocationBLER that rises with allocation length and with UE speed, at good SINR. Short grants succeed, 14-symbol grants fail. Link adaptation responds by cutting MCS, which hides the cause (§11)
Antenna port field indicating more CDM groups without data than the UE expectsNobodyRate matching diverges at the DMRS symbol; every code block after it is misalignedCRC failure on the whole transport block with no partial success. Correlates with layer count if the scheduler emits the value only for multi-layer grants (§5.3)
dmrs-Type mismatch between configuration and what the gNB actually transmitsSometimes the UE, via a DCI size mismatchEither finds no DCI at all (if the port field width differs) or looks for pilots on the wrong subcarriersTwo symptoms from one cause. If the port field width happens to match: total DL failure with healthy RSRP. If not: no grants decoded at all, which looks like a PDCCH problem
PT-RS configured without the DMRS port association the UE expectsNobodyTreats PT-RS resource elements as data, or data as PT-RSA small, MCS-dependent rate mismatch: fine at QPSK and 16QAM, raised BLER at 64QAM and above, because the PT-RS only appears above the timeDensity threshold (§16.1)
DMRS colliding with another signal in the same resource elements -- SSB, CSI-RS, a rate-matching pattern or another UE's DMRSNobody at the protocol levelReceives a superposition and estimates a channel that is the sum of twoFailures periodic with the colliding signal: SSB every 20 ms, CSI-RS on its cadence. Periodicity is the tell, and it points at resource planning rather than at DMRS
maxLength len2 combined with pos2 or pos3Some UEs at reconfiguration; others not at allUndefined. Commonly applies pos1 silentlyRate mismatch on long allocations only, and it differs between UE vendors in the same cell -- which is the clue (§10.1)
Absent DMRS-DownlinkConfig read by a tool as "unconfigured"Nobody -- it is an analysis errorNothing. The UE applied type 1, pos2, len1 correctlyYour model disagrees with the PHY trace by exactly two additional DMRS symbols' worth of resource elements. Check the four absent-case defaults in §8 first
Uplink waveform mismatch: gNB correlating a Gold sequence against a low-PAPR DMRS or vice versaNobodyThe UE transmits correctly; the gNB fails to estimateUplink works during random access and fails after RRCSetup, or the reverse. Check msg3-transformPrecoder against transformPrecoder (§14)

Table 24. DMRS failure modes. Nine of the eleven are detected by nobody, which is the defining property of this area: there is no negotiation, no acknowledgement and no error code anywhere in the DMRS chain. The rightmost column is where the diagnostic value is.

20.1 A decision procedure for a high-BLER cell

  1. Check whether RSRP and SINR are healthy. If not, this is a coverage, interference or beam problem, not a DMRS one.
  2. Check whether lowering the MCS helps. A radio problem improves as the MCS falls; a DMRS problem does not improve at all, because the channel estimate is wrong however robustly the data is coded. This test separates the two classes of fault in a couple of minutes.
  3. Check whether mapping type A and mapping type B behave differently. A split points hard at dmrs-TypeA-Position or at one of the two mapping-type-specific configurations being absent or wrong.
  4. Check whether the failures correlate with a TDRA row. Row-correlated 100% failure is an (S, L) problem: either S excludes the DMRS symbol, or the ld you get from S + L indexes a position table row the gNB is not using.
  5. Check whether the failures correlate with layer count. If single-layer grants work and multi-layer grants do not, look at the antenna port field and the CDM-groups-without-data value.
  6. Check whether the failures are periodic. Periodicity means collision, and the period identifies the colliding signal.

21. Configuration Reference (ASN.1)

Abridged from TS 38.331; ... marks omitted extension markers and unrelated fields. The comments on the OPTIONAL fields are the field descriptions' absent-case behaviour, which as §8 argued is the part that matters most:

DMRS-DownlinkConfig ::= SEQUENCE {
    dmrs-Type                  ENUMERATED {type2}              OPTIONAL,
                                    -- Need S; absent = DMRS type 1
    dmrs-AdditionalPosition    ENUMERATED {pos0, pos1, pos3}   OPTIONAL,
                                    -- Need S; absent = pos2
    maxLength                  ENUMERATED {len2}               OPTIONAL,
                                    -- Need S; absent = len1, i.e.
                                    -- single-symbol DMRS only
    scramblingID0              INTEGER (0..65535)              OPTIONAL,
                                    -- Need S; absent = N_ID_cell
    scramblingID1              INTEGER (0..65535)              OPTIONAL,
                                    -- Need S; absent = N_ID_cell
    phaseTrackingRS            SetupRelease { PTRS-DownlinkConfig }
                                                               OPTIONAL,
                                    -- Need M
    ...
}

-- and where it hangs:

PDSCH-Config ::= SEQUENCE {
    dataScramblingIdentityPDSCH    INTEGER (0..1023)           OPTIONAL,
    dmrs-DownlinkForPDSCH-MappingTypeA
                     SetupRelease { DMRS-DownlinkConfig }      OPTIONAL,
    dmrs-DownlinkForPDSCH-MappingTypeB
                     SetupRelease { DMRS-DownlinkConfig }      OPTIONAL,
    ...
}

Listing 1. DMRS-DownlinkConfig and its two homes. Note dataScramblingIdentityPDSCH: a separate identity for the PDSCH data scrambling, unrelated to the DMRS scrambling identities, and a frequent source of confusion when both appear in the same configuration dump.

DMRS-UplinkConfig ::= SEQUENCE {
    dmrs-Type                  ENUMERATED {type2}              OPTIONAL,
                                    -- Need S; absent = type 1
    dmrs-AdditionalPosition    ENUMERATED {pos0, pos1, pos3}   OPTIONAL,
                                    -- Need S; absent = pos2
    phaseTrackingRS            SetupRelease { PTRS-UplinkConfig }
                                                               OPTIONAL,
    maxLength                  ENUMERATED {len2}               OPTIONAL,
                                    -- Need S; absent = len1
    transformPrecodingDisabled SEQUENCE {
        scramblingID0          INTEGER (0..65535)              OPTIONAL,
        scramblingID1          INTEGER (0..65535)              OPTIONAL,
        ...
    }                                                          OPTIONAL,
                                    -- Need R
    transformPrecodingEnabled  SEQUENCE {
        nPUSCH-Identity        INTEGER (0..1007)               OPTIONAL,
        sequenceGroupHopping   ENUMERATED {disabled}           OPTIONAL,
        sequenceHopping        ENUMERATED {enabled}            OPTIONAL,
        ...
    }                                                          OPTIONAL,
                                    -- Need R
    ...
}

Listing 2. DMRS-UplinkConfig. The two waveform substructures are alternatives, selected by transformPrecoder in PUSCH-Config rather than by which one is present -- so a configuration can legitimately carry both, and reading the wrong one gives a plausible wrong answer. Note that sequenceGroupHopping ENUMERATED {disabled} follows the same absence convention: absent means hopping is enabled.

PTRS-DownlinkConfig ::= SEQUENCE {
    frequencyDensity      SEQUENCE (SIZE (2)) OF INTEGER (1..276)
                                                               OPTIONAL,
                              -- Need S; absent = K_PT-RS 2 for all
                              -- scheduled bandwidths
    timeDensity           SEQUENCE (SIZE (3)) OF INTEGER (0..29)
                                                               OPTIONAL,
                              -- Need S; absent = L_PT-RS 1 for all MCS
    epre-Ratio            INTEGER (0..3)                       OPTIONAL,
                              -- Need S; absent = 0
    resourceElementOffset ENUMERATED {offset01, offset10, offset11}
                                                               OPTIONAL,
                              -- Need S; absent = offset00
    ...
}

-- The two density fields are THRESHOLD LISTS, not densities:
--   frequencyDensity = { N_RB0, N_RB1 }   two PRB-count thresholds
--   timeDensity      = { MCS1, MCS2, MCS3 }  three MCS thresholds
-- The actual K_PT-RS and L_PT-RS are derived per grant by comparing
-- the scheduled bandwidth and MCS against them (TS 38.214 cl. 5.1.6.3).

Listing 3. PTRS-DownlinkConfig. The comment at the bottom is the point worth carrying away: these fields do not set the density, they set the thresholds from which the density is derived per grant. A log that prints frequencyDensity as though it were a density is printing a threshold.

22. Three More Worked Calculations

22.1 A DMRS sequence initialisation, both nSCID values

Worth doing once by hand, because it shows how completely the two identities diverge and why a mismatch produces noise rather than degradation:

🧮
Worked calculation

Given: N_symb_slot = 14, slot n_s = 7, DMRS symbol l = 2, scramblingID0 = 231, scramblingID1 = 872.

The common factor first:

14 x 7 + 2 + 1 = 101

2^17 x 101 = 131 072 x 101 = 13 238 272

nSCID = 0, N_ID = 231:

c_init = ( 13 238 272 x (2 x 231 + 1) + 2 x 231 + 0 ) mod 2^31

= ( 13 238 272 x 463 + 462 ) mod 2^31

= ( 6 129 319 936 + 462 ) mod 2 147 483 648

= 6 129 320 398 - 2 x 2 147 483 648

= 1 834 353 102 = 0x6D5601CE

nSCID = 1, N_ID = 872:

c_init = ( 13 238 272 x (2 x 872 + 1) + 2 x 872 + 1 ) mod 2^31

= ( 13 238 272 x 1745 + 1745 ) mod 2^31

= ( 23 100 784 640 + 1745 ) mod 2 147 483 648

= 23 100 786 385 - 10 x 2 147 483 648

= 1 625 949 905 = 0x60EA06D1

Two initialisations, and the Gold sequence they seed diverges within a few bits. The low bits are 2 * N_ID + n_SCID -- 462 and 1745, visible as 0x1CE and 0x6D1 -- which is a useful check when you are verifying a sequence generator: the bottom 11 bits of c_init should equal 2 x N_ID + n_SCID for any N_ID below 1024.

22.2 Getting resource elements back with one CDM group

The most under-used lever in DMRS configuration is the CDM-groups-without-data value, because it costs nothing and the scheduler controls it per grant:

🧮
Worked calculation

Given: 100 PRB, 14-symbol allocation, type 1, pos1 (two DMRS symbols), single layer, QPSK (2 bits per RE), code rate 0.5.

Total REs = 100 x 12 x 14 = 16 800

2 CDM groups without data -- the defensive setting:

DMRS REs = 2 symbols x 100 x 12 = 2 400

data REs = 14 400

TB bits = 14 400 x 2 x 0.5 = 14 400 bits

1 CDM group without data -- correct for a single layer with no co-scheduled UE:

DMRS REs = 2 symbols x 100 x 6 = 1 200

data REs = 15 600

TB bits = 15 600 x 2 x 0.5 = 15 600 bits

8.3% more transport block for free, on every single-layer grant, with identical pilot density and identical estimation quality. The only thing given up is the ability to co-schedule another UE in the other CDM group of the same DMRS symbol.

With type 2 the gap is wider still: 1 group of 4 REs against 3 groups of 12 gives 16 000 data REs against 14 400, or 11.1% more.

22.3 PT-RS overhead at two densities

🧮
Worked calculation

Given: 100 PRB, 12-symbol allocation (S = 2, L = 12), one DMRS symbol at l = 2. Total REs = 100 x 12 x 14 = 16 800 in the slot, of which the allocation holds 100 x 12 x 12 = 14 400.

Worst case, K_PT-RS = 2 and L_PT-RS = 1 -- 256QAM on a mid-width allocation:

PT-RS PRBs = 100 / 2 = 50

PT-RS symbols = 11 (every symbol from l = 3 to l = 13)

PT-RS REs = 50 x 11 x 1 = 550

550 / 14 400 = 3.8%

Cheapest case, K_PT-RS = 4 and L_PT-RS = 4 -- 64QAM on a wide allocation:

PT-RS PRBs = 100 / 4 = 25

PT-RS symbols = 2 (l = 6 and l = 10)

PT-RS REs = 25 x 2 x 1 = 50

50 / 14 400 = 0.35%

So PT-RS ranges from negligible to about half the cost of one additional DMRS position, and is never the dominant overhead -- which is why it is reasonable to configure it generously in FR2 and let the thresholds switch it off where it is not needed.

23. Illustrative Message Traces

🔍
ABOUT THESE TRACES

Illustrative trace. Field names and encodings follow 3GPP; the values are constructed for this document and are not a capture from any deployed or lab network.

All five traces belong to one scenario: a 100 MHz TDD cell at 30 kHz SCS, N_ID_cell 231, DDDSU with a 2.5 ms period, and one UE with C-RNTI 0x5A2C. The pdsch-TimeDomainAllocationList is the eight-row list of the companion 32 SLIV and Time Domain Allocation document, so TDRA field value 2 resolves to k0 0, mapping type A, SLIV 53, which is S = 2 and L = 12. The first four traces are within a few milliseconds of each other in frame SFN 618; the last is a separate incident, days later, after a configuration change.

23.1 The configuration, as decoded from RRCReconfiguration

[RRC-DL-DCCH] RRCReconfiguration -- DMRS configuration
RRCReconfiguration
 secondaryCellGroup / spCellConfig / spCellConfigDedicated
  downlinkBWP-ToAddModList[0] / bwp-Dedicated / pdsch-Config

   dmrs-DownlinkForPDSCH-MappingTypeA ..... setup
     dmrs-Type ............................ absent    -- type 1
     dmrs-AdditionalPosition .............. pos1
     maxLength ............................ absent    -- len1
     scramblingID0 ........................ 231
     scramblingID1 ........................ 872
     phaseTrackingRS ...................... absent    -- no PT-RS

   dmrs-DownlinkForPDSCH-MappingTypeB ..... setup
     dmrs-Type ............................ absent    -- type 1
     dmrs-AdditionalPosition .............. pos0
     maxLength ............................ absent    -- len1
     scramblingID0 ........................ 231
     scramblingID1 ........................ 872
     phaseTrackingRS ...................... absent

   dataScramblingIdentityPDSCH ............ 231       -- NOT a DMRS field

  uplinkBWP-ToAddModList[0] / bwp-Dedicated / pusch-Config
   transformPrecoder ...................... absent    -- CP-OFDM
   dmrs-UplinkForPUSCH-MappingTypeA ....... setup
     dmrs-AdditionalPosition .............. pos1
     transformPrecodingDisabled
       scramblingID0 ...................... 231
       scramblingID1 ...................... 872

-- Resolved configuration, both directions:
--   type A: type 1, pos1, len1  -> DMRS at symbols {2, 11} for ld 14
--   type B: type 1, pos0, len1  -> DMRS at symbol S only
--   antenna port field width: type1 + len1 -> 4 bits (Table 7.3.1.2.2-1)

Listing 4. One UE's complete DMRS configuration. Note that four fields per structure are absent and every one of them is significant: absent dmrs-Type is type 1, absent maxLength is len1. Note also dataScramblingIdentityPDSCH = 231 sitting next to scramblingID0 = 231 -- two different identities that happen to share a value, which is exactly how they get conflated.

23.2 A DCI antenna port field, decoded to ports and CDM groups

[PHY/MAC] DCI 1_1 antenna port field 10 -> four ports
14:07:22.4180  [PHY-DL] PDCCH candidate hit, SFN 618 slot 12
               CORESET 1  AL 4  candidate 1  DCI size 41 bits
               CRC descrambled with C-RNTI 0x5A2C -> DCI format 1_1

14:07:22.4180  [MAC-DL] DCI 1_1 fields (DMRS-relevant only)
               Time domain resource assignment . 2
                 -> list entry [2]: k0 0, typeA, SLIV 53 -> S=2 L=12
               Antenna port(s) ................. 10       -- 4 bits
                 -> Table 7.3.1.2.2-1, dmrsType1 + maxLength1
                 -> number of DMRS CDM groups without data = 2
                 -> DMRS ports = 0, 1, 2, 3
                 -> absolute ports 1000, 1001, 1002, 1003
                 -> 4 layers
               DMRS sequence initialization .... 0        -- nSCID = 0
                 -> N_ID = scramblingID0 = 231
               Modulation and coding scheme .... 24       -- 256QAM
               Antenna port to CDM group map:
                 port 1000  CDM group 0  k = 0,2,4,6,8,10  wf [+1,+1]
                 port 1001  CDM group 0  k = 0,2,4,6,8,10  wf [+1,-1]
                 port 1002  CDM group 1  k = 1,3,5,7,9,11  wf [+1,+1]
                 port 1003  CDM group 1  k = 1,3,5,7,9,11  wf [+1,-1]

-- 2 CDM groups without data -> all 12 subcarriers of each DMRS symbol
-- are reserved. No PDSCH in symbol 2 or symbol 11 for this UE.

Listing 5. The antenna port field is the only place the layer count appears. Value 10 in a 4-bit field is the maximum for type 1 single-symbol: four ports, two CDM groups, the whole DMRS symbol reserved. Compare field value 2, which also gives two layers but keeps them in one CDM group and leaves six subcarriers per PRB for data.

23.3 The DMRS symbol position derivation

[PHY] SLIV 53 -> DMRS symbols {2, 11}
14:07:22.4181  [PHY-DL] DMRS position derivation, SFN 618 slot 12

               inputs
                 mappingType ........... typeA
                 S ..................... 2      (from SLIV 53)
                 L ..................... 12     (from SLIV 53)
                 dmrs-TypeA-Position ... pos2   (from MIB)
                 dmrs-AdditionalPosition pos1   (mapping type A config)
                 maxLength ............. len1

               step 1: l0 = dmrs-TypeA-Position = 2
                       (slot-referenced, NOT allocation-referenced)
               step 2: ld = S + L = 2 + 12 = 14
                       (type A counts from the first symbol of the SLOT)
               step 3: Table 7.4.1.1.2-3, row ld=14, column pos1
                       -> l-bar = { l0, 11 } = { 2, 11 }
               step 4: single-symbol, so l = l-bar

               result: DMRS in symbols 2 and 11
                       12 REs per PRB in each -> 24 REs per PRB total
                       allocation is 12 x 12 = 144 REs per PRB
                       overhead = 24 / 144 = 16.7%

14:07:22.4181  [PHY-DL] rate matching: 273 PRB x (144 - 24) = 32 760
                       data REs, 4 layers, 256QAM, R 0.85
                       -> TBS 890 880 bits (before quantisation)
14:07:22.4186  [PHY-DL] PDSCH CRC pass, HARQ 6, 4 layers

-- If ld had been read as L = 12 instead of S + L = 14, step 3 would
-- have given { l0, 9 } = { 2, 9 }. The UE would look for the second
-- DMRS in symbol 9 while the gNB transmits it in symbol 11, and both
-- the channel estimate and the rate matching would be wrong.

Listing 6. The derivation in full, including the ld = S + L step that §9 flags as the commonest error. The comment at the bottom is the counterfactual: one wrong input, two wrong DMRS symbols, and a transport block that fails CRC with no indication of why.

23.4 An overhead accounting, printed by the scheduler

[SCHED] DMRS overhead audit for one grant
14:07:22.5000  [SCHED] DL overhead audit, SFN 618, C-RNTI 0x5A2C

               allocation ........ 273 PRB, S 2, L 12, typeA
               REs in allocation . 273 x 12 x 12 = 39 312

               DMRS  type 1, pos1, len1, symbols {2, 11}
                 CDM groups w/o data 2   -> 12 REs per PRB per symbol
                 REs ............. 273 x 12 x 2 = 6 552   (16.67%)
               PT-RS ............. absent, 0 REs           (0.00%)
               CSI-RS this slot .. 0 REs                   (0.00%)

               data REs .......... 32 760                 (83.33%)
               4 layers, 256QAM (8 bits/RE), code rate 0.8525
               -> TBS ............ 892 928 bits

               hypothetical, pos0: DMRS 3 276 REs (8.33%)
                 data REs 36 036 -> TBS 982 016 bits  (+9.98%)
               hypothetical, pos3: DMRS 13 104 REs (33.33%)
                 data REs 26 208 -> TBS 714 240 bits  (-20.0%)

-- The three hypotheticals differ only in dmrs-AdditionalPosition and
-- span a 37% range in transport block size. Nothing else changes:
-- same PRBs, same layers, same MCS, same code rate.

Listing 7. The same accounting §18 does by hand, as a scheduler might print it. The two hypotheticals at the bottom are the argument for getting the Doppler assessment right: the parameter is worth about a fifth of the cell's downlink capacity in either direction. Note that pos1 here uses a 12-symbol allocation, so the percentages differ from the 14-symbol figures in §18.

23.5 A scrambling identity mismatch

[PHY] Scrambling ID mismatch: high BLER, good RSRP
09:41:07.2210  [PHY-DL] PDCCH hit, SFN 204 slot 4, C-RNTI 0x5A2C
               DCI 1_1, TDRA 2, antenna port 2, MCS 19, NDI 1, HARQ 0
09:41:07.2214  [PHY-DL] PDSCH CRC **FAIL**, HARQ 0, RV 0
09:41:07.2214  [PHY-DL]   DMRS correlation peak .... 0.04
                          (expected > 0.6 at this SINR)
09:41:07.2214  [PHY-DL]   estimated SNR from DMRS .. -2.1 dB
09:41:07.2216  [PHY-UL] PUCCH NACK, HARQ 0

09:41:07.2610  [PHY-DL] PDSCH CRC FAIL, HARQ 0, RV 2
09:41:07.3010  [PHY-DL] PDSCH CRC FAIL, HARQ 0, RV 3
09:41:07.3410  [PHY-DL] PDSCH CRC FAIL, HARQ 0, RV 1  -> TB discarded

09:41:07.4000  [RRC-UL] MeasurementReport, servingCellMeasurements
                 rsrp ............... 68   -- about -88 dBm. HEALTHY
                 rsrq ............... 51
                 sinr ............... 74   -- about +18 dB. HEALTHY

09:41:08.1000  [SCHED] outer loop: BLER 100% over 40 grants
                 MCS 19 -> 14 -> 9 -> 4 -> 0
09:41:09.4000  [SCHED] BLER still 100% at MCS 0 over 60 grants
                 -- MCS reduction has produced NO improvement

09:41:10.0000  [PHY-DL] configuration audit
                 signalled scramblingID0 ......... 231
                 transmitter DMRS N_ID in use .... 872
                 -- the transmitter is using the scramblingID1 value
                 -- while the DCI signals nSCID = 0

-- Signature: 100% BLER, no response to MCS reduction, healthy RSRP and
-- SINR, DMRS correlation peak at the noise floor. SSB-based measurement
-- is unaffected because SSB has its own sequence generation, which is
-- exactly why the radio looks fine and nothing works.

Listing 8. The §13.1 failure as it presents. Three things make it identifiable: the correlation peak at the noise floor, the complete non-response to MCS reduction, and the healthy RSRP alongside 100% BLER. Any one of those alone could be something else; together they are diagnostic. Note the outer loop faithfully driving the MCS to zero and achieving nothing -- see the companion 34 Link Adaptation document for why that loop cannot recover from a reference-signal fault.

24. Release Deltas: Rel-15 to Rel-18

ReleaseChangeWhy it matters when reading DMRS in logs
Rel-15Configuration types 1 and 2; single and double symbol; dmrs-AdditionalPosition pos0 to pos3; up to 8 ports (type 1) and 12 (type 2); scramblingID0 / scramblingID1 and nSCID; front-loaded mapping for both mapping types; PT-RS; low-PAPR DMRS for DFT-s-OFDMThe baseline. §3 through §18 are almost entirely Rel-15, and most deployed cells use nothing beyond it
Rel-16Separate DMRS configurations for the compact DCI formats: dmrs-DownlinkForPDSCH-MappingTypeA-DCI-1-2-r16 and the type B and uplink equivalentsA UE can have four downlink DMRS configurations at once: two mapping types times two DCI format families. Establish which format a grant used before applying a configuration to it
Rel-16Multi-TRP transmission with two DMRS port groups and distinct nSCID per TRPTwo channel estimates in one grant, from two physical locations. nSCID switching between grants is normal here rather than suspicious (§13.2)
Rel-17DMRS bundling for PUSCH and PUCCH repetition -- dmrs-BundlingPUSCH-Config-r17. The UE maintains phase continuity across a bundle of repetitions so the gNB can jointly estimate the channel from all of their DMRSThe largest interpretive change since Rel-15: DMRS from different transmissions are now combinable. Several dB of coverage, at the cost of a UE requirement to hold phase and power constant across the bundle -- which it cannot do across a frequency hop
Rel-17PT-RS for the 480 and 960 kHz numerologies in the 52.6 to 71 GHz range, and new PT-RS patterns for DFT-s-OFDMPhase noise dominates at those carriers, so PT-RS density rises sharply and the overhead calculations in §22.3 no longer bound it
Rel-17Enhancements to dmrs-AdditionalPosition handling for PUSCH repetition and TB processing over multiple slotsThe position table applies per actual repetition, so a nominal repetition split at a slot boundary can carry different DMRS counts in its two halves
Rel-18Increased DMRS port count for MU-MIMO -- up to 24 orthogonal ports, via longer frequency-domain cover codes for type 1 and a doubled type 2 structureThe port-to-CDM-group mapping tables of §6 are extended, and the antenna port field widens again. A Rel-15 decoder reading a Rel-18 grant will mis-resolve the port list
Rel-188-port uplink SRS and the associated PUSCH DMRS for 8Tx UEsUplink DMRS port counts above 4 become real, having been theoretical since Rel-15
Rel-18Unified TCI framework applying to DMRS as well as to other reference signalsWhich beam a DMRS traverses becomes an explicitly indicated property rather than an implicit one -- relevant to §1's argument, and it changes what a beam-related failure looks like

Table 25. DMRS changes by release. Every one is gated on UE capability -- the companion 26 UE Capability document covers confirming that a feature is available before reading a log as though it were. Note that Rel-15 covers everything most cells actually do; the later entries matter mostly when a specific feature is switched on.

25. Reading DMRS in Logs: A Checklist

  1. Establish the four absent-case defaults before anything else. Find dmrs-DownlinkForPDSCH-MappingTypeA and -MappingTypeB in the most recent RRCReconfiguration and write out the resolved configuration, not the signalled one: absent dmrs-Type is type 1, absent dmrs-AdditionalPosition is pos2, absent maxLength is len1, absent scramblingID0 is N_ID_cell (§8). Half the analysis errors in this area happen at this step.
  2. Find dmrs-TypeA-Position in the MIB, and check it against ServingCellConfigCommon. They must agree. If they do not, every mapping type A grant will fail while type B grants succeed, and the failure starts at the reconfiguration rather than at attach (§8.2).
  3. For each grant, derive ld before touching the position table. For mapping type A, ld = S + L, counted from the first symbol of the slot. For mapping type B, ld = L. Getting this wrong moves the additional positions and is completely silent (§9).
  4. Read the DMRS symbol positions out of TS 38.211 Table 7.4.1.1.2-3 using ld and the resolved dmrs-AdditionalPosition, and remember that everything after l0 in the table is an absolute slot symbol index, not an offset (§10).
  5. Decode the antenna port field to a port list and a CDM-groups-without-data value. Use the table selected by dmrs-Type and maxLength -- the field is 4, 5, 5 or 6 bits wide depending on them, so the wrong table gives a plausible wrong answer (§6). The layer count is the length of the port list and appears nowhere else.
  6. Compute the pilot resource elements per PRB and check them against the reported transport block size. Number of DMRS symbols times (6, 4, 8 or 12 REs depending on type and groups without data). If your TBS calculation and the log's disagree, one of the previous four steps is wrong (§18, §23.4).
  7. When BLER is high, check RSRP and SINR first, then check whether lowering the MCS helps. Healthy RSRP with high BLER means the reference-signal or rate-matching chain, not the radio; and a radio problem improves as the MCS falls while a DMRS problem does not improve at all. Those two comparisons route the whole investigation (§20).
  8. Split the failures by mapping type, by TDRA row, by layer count and by period. Each split points at a different entry in §20: mapping type at dmrs-TypeA-Position, TDRA row at an (S, L) or ld problem, layer count at the antenna port field, periodicity at a collision with SSB or CSI-RS.
  9. For uplink, establish the waveform before anything else. transformPrecoder decides which sequence family the DMRS comes from, and msg3-transformPrecoder may differ from it. Uplink that works during random access and fails afterwards is this (§14).
  10. For PT-RS, check the scheduled MCS and PRB count against the thresholds before concluding it is missing. timeDensity and frequencyDensity are threshold lists, not densities, and most FR1 grants legitimately carry no PT-RS at all (§16.1).

26. Glossary

TermExpansionMeaning in this document
DMRSDemodulation Reference SignalThe pilot carried inside a physical channel, in the same beam and with the same precoder as the data, whose only purpose is to let the receiver estimate the channel it needs in order to demodulate that channel
CRSCell-specific Reference SignalThe LTE cell-wide pilot that NR does not have, because a cell-wide pilot cannot represent a per-UE beam (§1.1)
Front-loaded--The first DMRS symbol placed at the start of the allocation, so decoding can begin before the transmission ends. A latency choice, not an estimation choice (§2)
CDM groupCode Division Multiplexing groupA set of resource elements shared by two, and with double-symbol DMRS four, antenna ports, separated by orthogonal cover codes rather than by occupying different resource elements
OCCOrthogonal Cover CodeThe length-2 code ([+1,+1] or [+1,−1]) applied across the two resource elements of a CDM group pair in frequency, or across the two symbols of a double-symbol DMRS in time
Configuration type 1--Comb-2 frequency mapping, two CDM groups, 6 REs per group per PRB, up to 4 ports single-symbol and 8 double-symbol (§3)
Configuration type 2--Adjacent-pair frequency mapping, three CDM groups, 4 REs per group per PRB, up to 6 ports single-symbol and 12 double-symbol (§4)
l0--The first DMRS symbol position. dmrs-TypeA-Position for mapping type A, referenced to the slot boundary; 0 for mapping type B, referenced to the start of the allocation
ld--The duration used to index the position tables. S + L for mapping type A, L for mapping type B. The commonest source of wrong answers (§9)
nSCID--The 1-bit DCI field selecting scramblingID0 or scramblingID1 for the DMRS sequence of this grant (§13.2)
CDM groups without data--The DCI-signalled count of CDM groups whose resource elements carry no PDSCH for this UE, and which the UE must therefore exclude from rate matching. 1, 2 or 3 (§5.3)
Antenna port--Defined by its reference signal, not by hardware: two signals share a port if the channel of one can be inferred from the channel of the other. In practice a DMRS port is a spatial layer
PT-RSPhase Tracking Reference SignalOne resource element per PRB per symbol, at configured densities, tracking the common phase error caused by oscillator phase noise. Associated with one DMRS port (§16)
Coherence time, T_c--The interval over which a channel estimate stays usable. Approximately 0.423 / f_d. The quantity that decides dmrs-AdditionalPosition (§11)
Low-PAPR sequence--The Zadoff-Chu-based or computer-generated DMRS sequence used with transform precoding, chosen to preserve the single-carrier waveform's peak-to-average power ratio (§14)

27. References

  • 3GPP TS 38.211 -- Physical channels and modulation. Clause 4.4 (antenna port numbering), clause 5.2.1 (the length-31 Gold sequence), clause 6.4.1.1 (PUSCH DMRS: 6.4.1.1.1 for the CP-OFDM sequence, 6.4.1.1.1.2 for the low-PAPR sequence with transform precoding, 6.4.1.1.2 and 6.4.1.1.3 for the mapping and the position tables), clause 6.4.1.2 (PUSCH PT-RS), clause 6.4.1.3 (PUCCH DMRS, including Table 6.4.1.3.3.2-1 for the format 3 and 4 symbol positions), clause 6.4.1.4 (SRS), clause 7.4.1.1 (PDSCH DMRS: 7.4.1.1.1 for the sequence and the type 1 and type 2 mappings, 7.4.1.1.2 for the symbol positions and Tables 7.4.1.1.2-3 and 7.4.1.1.2-4), clause 7.4.1.2 (PDSCH PT-RS), clause 7.4.1.3 (PDCCH DMRS), clause 7.4.1.4 (PBCH DMRS, including 7.4.1.4.1 for the sequence initialisation and i_SSB), clause 7.4.1.5 (CSI-RS), clause 7.4.2 (the SS/PBCH block).
  • 3GPP TS 38.214 -- Physical layer procedures for data. Clause 5.1.6.2 (DMRS reception procedure and the CDM-groups-without-data interpretation), clause 5.1.6.3 (PT-RS reception, and Tables 5.1.6.3-1 and 5.1.6.3-2 for the time and frequency density derivation), clause 5.1.2.1 (the (S, L) validity tables that the DMRS position constrains), clause 6.2.2 and 6.2.3 (uplink DMRS and PT-RS procedures), clause 5.1.3 (modulation and TBS determination, which consumes the DMRS RE count).
  • 3GPP TS 38.212 -- Multiplexing and channel coding. Clause 7.3.1.1 (DCI formats 0_0, 0_1, 0_2 -- the uplink antenna port, DMRS sequence initialisation and PTRS-DMRS association fields), clause 7.3.1.2 (DCI formats 1_0, 1_1, 1_2 -- the downlink equivalents, and Tables 7.3.1.2.2-1 to 7.3.1.2.2-4 for the antenna port field code points).
  • 3GPP TS 38.331 -- RRC protocol specification. DMRS-DownlinkConfig, DMRS-UplinkConfig, PTRS-DownlinkConfig, PTRS-UplinkConfig, PDSCH-Config, PUSCH-Config, ControlResourceSet (pdcch-DMRS-ScramblingID, precoderGranularity), PUCCH-FormatConfig (additionalDMRS), MIB (dmrs-TypeA-Position), ServingCellConfigCommon, RACH-ConfigCommon (msg3-transformPrecoder).
  • 3GPP TS 38.306 -- UE radio access capability parameters, for the capability gating on configuration type 2, maxLength len2, PT-RS, DMRS bundling and the Rel-18 extended port counts.
  • 3GPP TS 38.300 -- NR overall description, clause 5.1 for the physical-layer context and clause 9.2 for the beam management that §1 argues makes per-channel DMRS unavoidable.

Companion documents in this set

  • 02 Radio Frame Structure -- the resource grid every figure in this document is drawn on, the slot and symbol numbering l0 indexes into, the SS/PBCH block whose pilot layer §15.2 dissects, and dmrs-TypeA-Position as it arrives in the MIB.
  • 03 Random Access -- the MSG3 grant, whose DMRS structure depends on msg3-transformPrecoder and may differ from every subsequent PUSCH (§14), and the SSB-to-RACH-occasion association that PBCH DMRS makes possible (§15.2).
  • 05 HARQ -- k1 and the N1 processing time, which is the latency budget front-loading exists to protect (§2), and the retransmission behaviour every failure in §20 produces.
  • 06 Channel Mapping -- how a transport block reaches PDSCH, and the rate matching that a wrong DMRS resource-element count destroys (§5.3).
  • 08 Scheduling -- the DCI formats field by field, of which this document covers only the antenna port field, the DMRS sequence initialisation bit and the PTRS-DMRS association.
  • 18 MIB and SIB1 IEs -- the MIB payload in full, including the single dmrs-TypeA-Position bit that §8.2 depends on.
  • 20 Measurements and Events -- CSI-RS as a measurement resource, and the RSRP and SINR reporting that stays healthy through every DMRS failure in §20.
  • 26 UE Capability -- confirming that type 2, maxLength len2, PT-RS, DMRS bundling and the Rel-18 port extensions are actually supported before reading a log as though they were.
  • 30 CORESET and Search Space -- ControlResourceSet, precoderGranularity and pdcch-DMRS-ScramblingID, whose reference-signal consequences §15.1 covers and whose IEs that document owns.
  • 31 PDCCH Blind Decoding -- why a change in dmrs-Type or maxLength changes the DCI size (§6.1), and why a DCI-size mismatch produces total silence rather than a detectable error.
  • 32 SLIV and Time Domain Allocation -- S, L and the SLIV encoding; mapping type A versus type B from the allocation side; and the S ∈ {0, 1, 2, 3} restriction that exists precisely so that a type A allocation contains its own DMRS symbol (§9.1).
  • 34 Link Adaptation -- the outer loop that responds to a reference-signal fault by cutting the MCS, achieves nothing, and thereby converts a DMRS problem into an apparent coverage problem (§11, §23.5).
  • 35 Physical Channels -- where PDSCH, PUSCH, PDCCH and PUCCH sit in the resource grid, the PUCCH formats whose DMRS §15.3 tabulates, and the waveform choice that §14 turns into two different uplink DMRS designs.