5G RRCSetupComplete Message Explained

The RRCSetupComplete message is the uplink NR RRC message that the UE sends after successfully receiving and applying RRCSetup. This message is one of the most important checkpoints in the entire RRC connection establishment procedure because it does two things at once:

  • confirms that the UE successfully completed the radio-side setup, and
  • carries the first dedicated NAS message from the UE toward the network.

In a real 5G call trace, RRCSetupComplete is often the message that bridges the radio access procedure and the core-network procedure. It is the point where radio setup becomes registration signaling, service request signaling, or another UE-triggered NAS procedure.

Why RRCSetupComplete matters

This message is much more than a simple acknowledgment.

It matters because it:

  • confirms successful completion of RRC connection establishment
  • is the first uplink RRC message sent on SRB1
  • carries the UE’s initial NAS dedicated information/message
  • tells the network which PLMN or SNPN the UE selected
  • can optionally transfer the registered AMF identity, slice information, and NG-5G-S-TMSI value
  • leads directly into NGAP and NAS processing toward the AMF

If RRCSetupComplete is missing or malformed, the network may have radio connectivity but still cannot continue the UE’s core signaling procedure.

Where RRCSetupComplete appears in the call flow

A successful NR connection establishment flow is:

  1. RRCSetupRequest from UE to gNB
  2. RRCSetup from gNB to UE
  3. RRCSetupComplete from UE to gNB

This is the successful branch shown in the RRC connection establishment procedure.

From a system perspective, that sequence means:

  • the UE requested the connection
  • the gNB admitted the UE and configured SRB1
  • the UE confirmed setup and transferred the first NAS message

After that, the gNB typically packages the NAS message into an Initial UE Message on NGAP and forwards it toward the AMF.

Transport characteristics

RRCSetupComplete is carried differently from RRCSetupRequest.

  • Direction: UE to network
  • Signaling radio bearer: SRB1
  • RLC mode: AM
  • Logical channel: DCCH
  • Message class: UL-DCCH

This is a critical detail in trace analysis. If you still see only SRB0 / CCCH behavior, you are not yet at the RRCSetupComplete stage.

What RRCSetupComplete means operationally

When the UE sends this message, it is telling the network:

  • the RRCSetup message was received and successfully applied
  • the UE has moved into RRC_CONNECTED
  • SRB1 is active and usable
  • the UE is now ready to deliver the initial NAS message

So RRCSetupComplete is effectively the handover point from pure radio setup to access-plus-core signaling.

ASN.1 structure of RRCSetupComplete

A simplified ASN.1-style view is:

RRCSetupComplete ::= SEQUENCE {
  rrc-TransactionIdentifier RRC-TransactionIdentifier,
  criticalExtensions CHOICE {
    rrcSetupComplete RRCSetupComplete-IEs,
    criticalExtensionsFuture SEQUENCE {}
  }
}

RRCSetupComplete-IEs ::= SEQUENCE {
  selectedPLMN-Identity INTEGER (1..maxPLMN),
  registeredAMF RegisteredAMF OPTIONAL,
  guami-Type ENUMERATED {native, mapped} OPTIONAL,
  s-NSSAI-List SEQUENCE (SIZE (1..maxNrofS-NSSAI)) OF S-NSSAI OPTIONAL,
  dedicatedNAS-Message DedicatedNAS-Message,
  ng-5G-S-TMSI-Value CHOICE {
    ng-5G-S-TMSI NG-5G-S-TMSI,
    ng-5G-S-TMSI-Part2 BIT STRING (SIZE (9))
  } OPTIONAL,
  lateNonCriticalExtension OPTIONAL,
  nonCriticalExtension OPTIONAL
}

Compared with RRCSetupRequest, this is a much richer message because the UE now has an established signaling bearer and can provide more access and core-related context.

Important information elements in RRCSetupComplete

1. rrc-TransactionIdentifier

This field ties the UE response to the transaction initiated by RRCSetup.

Why it matters

It allows the receiving side to correlate the completion message with the correct RRC procedure instance.

Troubleshooting value

If the transaction identifier does not line up with the corresponding RRCSetup, decoders and protocol stacks may treat the procedure as invalid or unmatched.

2. selectedPLMN-Identity

This is a mandatory field and one of the most important IEs in the entire message.

It identifies the index of the PLMN or SNPN selected by the UE from the broadcast information in SIB1.

Why it matters

The network needs to know exactly which broadcast identity context the UE selected when it accessed the cell.

How the UE sets it

The UE sets the value as follows:

  • if upper layers selected an SNPN or a PLMN and, in the PLMN case, the UE is allowed or instructed to access that PLMN via a cell broadcasting at least one CAG ID, then the UE sets selectedPLMN-Identity from npn-IdentityInfoList
  • otherwise, the UE sets selectedPLMN-Identity to the PLMN selected by upper layers from plmn-IdentityInfoList

Troubleshooting value

If the selected PLMN index does not match the SIB1 broadcast lists, the network can interpret the access under the wrong PLMN or NPN context.

3. registeredAMF

This optional field transfers the GUAMI of the AMF where the UE is registered, when upper layers provide it.

The RegisteredAMF structure contains:

  • plmn-Identity optional
  • amf-Identifier

Why it matters

This helps the access network and core procedures understand the UE’s prior registered AMF context.

UE setting logic

If upper layers provide a Registered AMF, the UE includes it. If the PLMN identity of that Registered AMF is different from the currently selected PLMN, the UE includes the AMF PLMN identity explicitly.

Troubleshooting value

This field is highly useful in mobility, AMF selection, AMF relocation, and access debugging, especially when the UE is not performing a brand-new registration from scratch.

4. guami-Type

This optional IE indicates whether the GUAMI is native or mapped.

Why it matters

This gives context for how the AMF identity should be interpreted.

Troubleshooting value

It can help explain differences between identity handling in interworking or mapped-identity scenarios.

5. s-NSSAI-List

This optional field carries one or more S-NSSAI values provided by upper layers.

Why it matters

It gives the network slice-related information that may be relevant at the time of access and initial NAS transfer.

Troubleshooting value

For slicing-related access issues, this field can explain why the network selected a particular behavior, policy, or routing path.

6. dedicatedNAS-Message

This is the most operationally important IE in RRCSetupComplete. It is mandatory.

The DedicatedNAS-Message IE is defined as an OCTET STRING, and the RRC layer is transparent for this information.

Why it matters

This field is the actual NAS message the UE wants to send into the core network.

Typical examples include:

  • Registration Request
  • Service Request
  • other UE-specific NAS messages depending on the procedure

Troubleshooting value

If a registration flow stalls right after RRC connection establishment, this is one of the first places to inspect. The radio procedure may be perfectly fine, while the embedded NAS message may be malformed, unexpected, or rejected later by the core.

7. ng-5G-S-TMSI-Value

This optional IE carries the NG-5G-S-TMSI value.

It has two forms:

  • ng-5G-S-TMSI
  • ng-5G-S-TMSI-Part2

Important standards behavior

If upper layers provide a 5G-S-TMSI and the RRCSetup was received in response to an RRCSetupRequest, the UE sets this field to ng-5G-S-TMSI-Part2.

Otherwise, the UE sets it to the full ng-5G-S-TMSI form.

Why it matters

This field is part of the identity chain that helps the network associate the newly established RRC connection with an existing UE context.

Practical interpretation

A common engineering pattern is:

  • Part1 of the 5G-S-TMSI appears earlier in RRCSetupRequest
  • Part2 can appear here in RRCSetupComplete

That split helps the overall access procedure carry UE identity information efficiently across the early connection-establishment phase.

8. lateNonCriticalExtension and nonCriticalExtension

These extension containers are important for release evolution.

Later releases add fields such as:

  • iab-NodeIndication-r16
  • idleMeasAvailable-r16
  • ue-MeasurementsAvailable-r16
  • mobilityHistoryAvail-r16
  • mobilityState-r16
  • ul-RRC-Segmentation-r16
  • onboardingRequest-r17
  • ncr-NodeIndication-r18
  • mobileIAB-NodeIndication-r18
  • reselectionMeasAvailable-r18
  • other release-specific indicators

Why they matter

In many commercial deployments, these fields are absent. But for advanced features, relay scenarios, mobility analytics, RedCap-like evolution paths, IAB, and onboarding-related implementations, they can become highly relevant.

Troubleshooting value

If your decoder ignores extension branches, you may miss fields that explain real network behavior.

How the UE builds RRCSetupComplete

After receiving and applying RRCSetup, the UE enters connected mode and then constructs RRCSetupComplete.

The standards-based behavior includes:

  • setting selectedPLMN-Identity
  • optionally including registeredAMF
  • optionally including guami-Type
  • optionally including s-NSSAI-List
  • setting the mandatory dedicatedNAS-Message
  • optionally including ng-5G-S-TMSI-Value
  • including later-release extension flags when applicable

That means RRCSetupComplete is the message where several upper-layer access decisions become visible to the radio/control-plane trace.

RRCSetupComplete vs RRCSetupRequest

  • RRCSetupRequest starts the connection establishment attempt.
  • RRCSetupComplete confirms success and carries the first NAS message.

RRCSetupComplete vs RRCSetup

  • RRCSetup is the network’s acceptance and SRB1 configuration.
  • RRCSetupComplete is the UE’s confirmation that setup succeeded.

RRCSetupComplete vs Initial UE Message

  • RRCSetupComplete is an RRC message on the radio side.
  • Initial UE Message is an NGAP message on the N2 interface.

In practice, the dedicatedNAS-Message inside RRCSetupComplete is later forwarded by the gNB toward the AMF using Initial UE Message.

What to verify in a live trace

When analyzing RRCSetupComplete, check the following.

1. Was RRCSetup successfully received first?

The message should come only after a valid RRCSetup. If not, the procedure sequence is broken.

2. Is the message on SRB1 / DCCH?

If the bearer and channel mapping do not match, your trace classification or protocol processing may be wrong.

3. Does selectedPLMN-Identity match SIB1?

Verify that the selected PLMN or SNPN index lines up with the broadcast information in SIB1.

4. Is the dedicatedNAS-Message correct for the scenario?

Examples:

  • Registration Request for initial registration
  • Service Request for UE-triggered service restoration

A mismatch here can explain why the radio side looks correct but the core-side procedure fails.

5. Is ng-5G-S-TMSI-Value present when expected?

Check whether the UE had a 5G-S-TMSI from upper layers and whether the field appears in the correct form.

6. Are registeredAMF and guami-Type consistent?

If present, they should align with the UE’s prior registration context and the selected access identity.

7. Are extension fields present?

For advanced deployments, extension flags can explain unexpected behavior related to mobility history, measurement availability, onboarding, NCR, or mobile IAB.

Common troubleshooting scenarios

RRCSetupComplete missing after RRCSetup

This usually means the UE failed to apply the received RRCSetup, failed to build SRB1/DCCH signaling, or encountered another problem before it could complete the procedure.

RRC connection succeeds but registration does not

This often means the radio side is healthy, but the dedicatedNAS-Message is rejected or mishandled later in NAS or NGAP.

Wrong PLMN or NPN context

If the network interprets the access under the wrong PLMN, one of the first fields to inspect is selectedPLMN-Identity.

If the UE appears to be associated with the wrong AMF context, inspect registeredAMF, guami-Type, and the later NGAP forwarding behavior.

Summary

If you are searching for 5G RRCSetupComplete, NR RRC Setup Complete decode, RRCSetupComplete dedicated NAS message, or 3GPP TS 38.331 RRCSetupComplete, the key point is this:

RRCSetupComplete is the uplink NR RRC message sent on SRB1 and DCCH to confirm successful RRC connection establishment and transfer the initial UE-specific NAS message toward the network.

FAQ

What is RRCSetupComplete in 5G NR?

It is the uplink RRC message that confirms successful RRC connection establishment and carries the UE's initial NAS message toward the network.

What NAS message is usually inside RRCSetupComplete?

Common examples are Registration Request and Service Request, depending on why the UE initiated the connection.

Does RRCSetupComplete use SRB0 or SRB1?

RRCSetupComplete is sent on SRB1 using DCCH and RLC AM, unlike RRCSetupRequest which is sent on SRB0 and CCCH.

What comes after RRCSetupComplete?

The network typically forwards the NAS message toward the AMF and continues with procedures such as Initial UE Message, Downlink NAS Transport, and Security Mode Command.

Summary

Uplink NR RRC message sent by the UE on SRB1 and DCCH to confirm successful RRC connection establishment and transfer the initial NAS message.