Mobility & Feeder-Link Switch in 5G NTN
Cell types (earth-fixed, quasi-earth-fixed, earth-moving), location- and time-based cell reselection, conditional handover for NTN, and the hard/soft feeder-link switch.
In a terrestrial network the cell stands still and the phone walks around it. In Non-Terrestrial Networks the roles invert: the satellite is the fast-moving thing, and a low-Earth-orbit (LEO) bird races overhead at roughly 7.5 km/s. Its cell footprint sweeps across the ground, so even a phone bolted to a rooftop is handed from cell to cell every few seconds. That single fact reshapes how mobility works, and it is why Rel-17 NR-NTN adds location- and time-based handover triggers on top of the familiar radio ones. This page is grounded in TS 38.331 (RRC) and TS 38.304 (idle-mode UE procedures).
Introduction
NTN mobility is the set of procedures that keep a UE attached as the serving satellite — and therefore its cell — moves out from over you. It spans two states: the connected-mode handover of an RRC_CONNECTED UE from one cell/beam/satellite to the next, and the idle-mode cell reselection of an RRC_IDLE / RRC_INACTIVE UE. In both, the trigger to move is anchored to predictable geometry and time rather than to a fading radio measurement.
It sits immediately after cell selection and registration in the UE lifecycle: once the UE has camped and (for connected mode) established a bearer, mobility is what preserves that service through the relentless churn of a LEO constellation. Get it wrong and a stationary sensor drops its session every few seconds; get it right and coverage feels continuous even though no single satellite is ever overhead for long.
Because NTN mobility is a sequence of distinct signalling steps — measurement/assistance configuration, the conditional-handover trigger, the RACH to the target, and the completion — a failure almost always lives in one step. Knowing which step broke (did the CHO ever get provisioned? did D1 fire? did RACH to the target complete?) narrows the root cause enormously, which is exactly the step-by-step habit this page builds.
On this page
Why NTN mobility is needed
In plain words: terrestrial mobility is a passenger walking through a train station, handed from one fixed CCTV camera to the next as they move. NTN mobility is the opposite — the passenger stands perfectly still while the cameras themselves glide past overhead on rails. You must be handed to the next camera not when you move, but on a schedule, before the current one slides out of view.
Concretely, mobility exists to solve one problem: a LEO satellite is only above your horizon for a few minutes, and any single beam dwells over a ground point for only seconds to tens of seconds. Without a mobility procedure, a connected UE would lose its serving cell — and its bearer — the instant the beam swept away. So the network must (1) provision the next cell as a candidate before the current one dies, (2) trigger the move on something predictable, and (3) execute a fast, usually contention-free, access to the target so the session survives the gap. NTN mobility is the only thing standing between a moving constellation and a dropped call.
A set of RRC and MAC procedures — conditional handover in connected mode, location/time-assisted reselection in idle mode — that move a UE from a departing cell to an arriving one as the constellation sweeps.
A LEO cell serves any ground point only briefly. Service must be handed to the next beam/satellite on schedule, before the current radio collapses, or every session drops.
Pre-provision candidates over Xn, store a condRRCReconfig with a geometric condExecutionCond (CondEvent D1/T1), and let the UE execute the stored handover locally — typically via contention-free RACH to the target.
Why NTN mobility is upside-down
The intuition to unlearn is "the cell is a fixed place." For a LEO satellite the beam painted on the ground is moving with the satellite, so the geometry between you and your serving cell changes continuously whether or not you move. A stationary IoT sensor in a field will still see its serving satellite climb the sky, pass overhead, and drop toward the far horizon in the space of a few minutes — and during that pass it may be handed over several times as successive beams and successive satellites take over. Handover in NTN is therefore driven by orbital geometry, not by user movement.
The second thing to unlearn is "RSRP tells me when to move." In terrestrial mobility a falling SS-RSRP is a reliable proxy for "you are leaving the cell." In LEO NTN it is not. The whole footprint is sweeping, the path length to the satellite is enormous and changes fast, and a beam can stay roughly equally strong right up until it leaves you behind — or fade and recover as the satellite's antenna pattern rolls over you. Signal strength no longer maps cleanly to "where am I in the cell," so a purely RSRP-triggered handover fires late, early, or not at all. What is reliable is that the satellite's position as a function of time is known precisely from ephemeris, and your own position is known from GNSS. Mobility in NTN leans on that predictable geometry instead of on noisy radio measurements. See ntn-orbits for why LEO in particular forces this.
The core inversion: terrestrial = fixed cell, moving UE, RSRP-triggered handover. NTN LEO = moving cell, (often) fixed UE, geometry-triggered handover. A stationary UE still hands over constantly because the footprint, not the user, is what moves.
Earth-moving, earth-fixed and quasi-earth-fixed cells
How the footprint behaves on the ground depends on whether the satellite steers its beams, and 3GPP names three patterns. They matter because each produces a different handover cadence.
The beam is fixed relative to the satellite, so the footprint slides across the ground as the satellite flies. A ground point is covered only while the moving beam happens to be over it. Simplest for the payload, hardest for mobility — frequent, unavoidable handovers even for a still UE.
The satellite steers its beams to hold a footprint over one fixed geographic area for a dwell time, then re-points to the next area as it flies on. The ground cell looks stationary — like a terrestrial cell — for the dwell, so a fixed UE mostly stays put until the cell is handed off wholesale.
A practical middle ground: the beam is held on a fixed area for a bounded period, then jumps to serve the next area. Coverage of any one spot is fixed-then-gap-then-next, rather than a continuous slide. Common for LEO where continuous steering over a full pass is not feasible.
All three tie into one broadcast parameter from SIB19: t-Service. This tells the UE the time at which the serving cell will stop serving its current area — the moment an earth-fixed or quasi-earth-fixed cell is about to re-point away, or the moment a moving beam will have swept past. Knowing t-Service in advance, the UE (idle or connected) can prepare to move before the radio actually collapses, which is exactly the kind of predictive trigger that pure RSRP cannot give you.
| Pattern | What moves | Dwell over a ground point | Handover frequency for a still UE |
|---|---|---|---|
| Earth-moving | Footprint slides continuously with the satellite | Short — only while the beam passes over | High and continuous |
| Quasi-earth-fixed | Beam held on an area, then jumps to the next | A bounded period, then a jump | Periodic — at each re-point / t-Service |
| Earth-fixed | Beam steered to hold one area for a dwell | Full configured dwell time | Lowest — cell looks stationary until handed off |
Location- and time-based conditional handover
Because radio measurements alone are unreliable, Rel-17 extends Conditional Handover (CHO) with two execution conditions that key off geometry instead of RSRP. The network still pre-provisions candidate targets early over Xn and stores a condRRCReconfig plus a condExecutionCond in the UE inside conditionalReconfiguration; only the trigger changes. The two new NTN CHO events are:
CondEvent D1— a distance/location condition. The UE computes its distance (from its own GNSS position) to a configured serving-side anchorreferenceLocation1and a target-side anchorreferenceLocation2, and executes when it moves further thandistanceThreshFromReference1from the serving reference and closer thandistanceThreshFromReference2to the target reference. In effect: "when I have crossed geometrically from the serving cell's area into the target's."CondEvent T1— a time-window condition. The UE executes when a measured time passes a start thresholdt1-Thresholdand stays within a configuredduration. Because the serving cell's coverage end is predictable (it maps ontot-Service/ ephemeris), the network can simply tell the UE "hand over inside this time window."
Contrast this with the classic radio events. Ordinary CHO uses CondEvent A3 (a candidate becomes an a3-Offset better than the serving cell) or CondEvent A5 (serving falls below a5-Threshold1 while a candidate rises above a5-Threshold2) — both comparing SS-RSRP/SS-RSRQ. In NTN those still exist, but D1 and T1 are the workhorses because they fire on where you are and what time it is, quantities that are dead-reckonable from ephemeris and GNSS long before the radio tells you anything. The RRC machinery lives in TS 38.331; the idle/location handling in TS 38.304.
referenceLocation1) grows and its distance to the target anchor (referenceLocation2) shrinks. CondEvent D1 executes the stored handover when both distance thresholds are crossed — no RSRP report needed.Same CHO container, geometric trigger: D1 and T1 plug into the ordinary CHO framework — stored condRRCReconfig, up to eight candidates, UE-local execution — but the condExecutionCond points at a condTriggerConfig carrying distance thresholds (distanceThreshFromReference1/2) or a time threshold (t1-Threshold) rather than an RSRP offset.
LTE ↔ NR: LTE had no conditional handover at all — every handover was a hard, network-commanded RRCConnectionReconfiguration with mobilityControlInfo that could arrive too late if the radio dropped first. NR added baseline CHO in Rel-16 (radio events A3/A5), and Rel-17 NTN added the geometric events CondEvent D1/T1. There is no LTE-NTN equivalent of D1/T1; NB-IoT/eMTC over NTN reuse the NR-NTN assistance concepts rather than an LTE mechanism.
The CHO flow, step by step
Even though the UE executes the handover locally, an NTN CHO is a signalling sequence with four distinct phases. Walk them in order — the first phase that misbehaves is your root cause.
D1/T1 condition, the UE evaluates it locally against its GNSS fix and t-Service, and on trigger runs contention-free RACH to the target and completes there.Step 1 — Candidate preparation and CHO configuration
The serving gNB decides, from ephemeris and the UE's reported GNSS/measurements, which cells will next cover the UE, and prepares them over Xn (an Xn Handover Request / acknowledge). It then sends the UE an RRCReconfiguration carrying conditionalReconfiguration — one or more condRRCReconfig entries (each a full target config with its reconfigurationWithSync), each paired with a condExecutionCond selecting CondEvent D1 and/or T1. The UE confirms with RRCReconfigurationComplete and starts evaluating locally. This message is scheduled like any dedicated DL RRC: PDSCH โ DCI format 1_1 / C-RNTI in the UE-specific search space.
✅ Debugging steps
- Confirm the UE actually received and stored the
conditionalReconfiguration— check forRRCReconfigurationwith acondRRCReconfiglist and a matchingRRCReconfigurationComplete. - Verify each candidate carries valid
referenceLocation1/2and thresholds (distanceThreshFromReference1/2) ort1-Threshold/durationconsistent with the serving cell'st-Service. - Check the Xn preparation succeeded for every candidate (no
Xn Handover Preparation Failure); an unprepared target cannot be executed to. - Confirm the UE has a current GNSS fix — a stale or missing fix means
D1can never be evaluated.
⚠ Common causes of failure
- CHO never provisioned — serving gNB failed to prepare candidates over Xn, so there is nothing to execute.
- Thresholds mis-set relative to ephemeris/
t-Service, soD1/T1would fire far too early or after the cell is already gone. - Missing/stale GNSS fix at the UE, so distance to the reference locations cannot be computed.
- Wrong or absent
referenceLocation2for the target, so the "near the target" half ofD1is never satisfied.
Step 2 — Local evaluation and trigger
The UE now continuously computes its distance from referenceLocation1 and referenceLocation2 (using its GNSS position) and tracks the clock against t1-Threshold/t-Service. When CondEvent D1 (far enough from serving and close enough to target) or CondEvent T1 (inside the time window) is satisfied for a prepared candidate, the UE selects that candidate and begins execution — no measurement report is sent to the network; the decision is entirely UE-local.
✅ Debugging steps
- In the UE trace, check the evaluated distances against
distanceThreshFromReference1/2— are both halves ofD1crossing as expected? - For
T1, verify the UE clock andepochTime/ephemeris are aligned sot1-Thresholdis evaluated against the right reference time. - Confirm exactly one candidate is selected on trigger; multiple simultaneous triggers can indicate overlapping thresholds.
- Check the GNSS update rate is fast enough that the trigger is not detected several seconds late.
⚠ Common causes of failure
- Trigger never fires — thresholds too loose, or GNSS fix drifted/lost so distances are wrong.
- Trigger fires too late — sparse GNSS updates or a coverage gap delay evaluation until the serving radio is already gone.
- Clock/ephemeris misalignment makes
T1evaluate against the wrong epoch. - Selected candidate is no longer suitable (its own
t-Servicealready elapsed), so the UE hands over to a dying cell.
Step 3 — Random access to the target
On trigger the UE applies the stored target configuration (the reconfigurationWithSync inside the chosen condRRCReconfig) and runs random access toward the target cell. NTN handover normally uses contention-free RACH via a rach-ConfigDedicated in the stored config, so the target already reserves a dedicated preamble for this UE. The critical NTN twist: the UE pre-compensates the target's timing advance and Doppler from that cell's ephemeris (in its SIB19) plus the UE's own GNSS position, so Msg1 lands inside the target's window despite the enormous round trip. The RAR (Msg2) is carried on PDSCH โ DCI format 1_0 / RA-RNTI in the Type1-PDCCH common search space, exactly as in terrestrial RACH — only the timing pre-compensation differs.
✅ Debugging steps
- Confirm the UE launched RACH on the target — check for a dedicated preamble from
rach-ConfigDedicatedand a matching RAR (DCI 1_0/RA-RNTI). - Verify the UE-computed NTN timing advance/Doppler for the target used the target's ephemeris, not the serving cell's.
- Check the RAR arrived within the (NTN-extended)
ra-ResponseWindow, which must account for the long propagation delay. - Cross-check the reserved preamble index at the target against what the UE transmitted.
⚠ Common causes of failure
- Wrong TA/Doppler pre-compensation (used serving-cell ephemeris) so
Msg1lands outside the target's window and is never detected. ra-ResponseWindowtoo short for the NTN round trip, so a valid RAR is declared missing.- Dedicated preamble not actually reserved at the target (Xn prep incomplete), forcing a contention-based fallback or failure.
- Target beam already swept past by the time RACH starts — a late Step-2 trigger cascading into RACH failure.
Step 4 — Completion and release
After RACH succeeds, the UE sends RRCReconfigurationComplete to the target gNB, which becomes the new serving cell; the path is switched in the core and the old serving resources (and the other prepared candidates) are released. From here the UE resumes normal scheduling under its C-RNTI on the target. If any step failed before completion, the UE falls back to re-establishment (RRCReestablishmentRequest) or, if idle, to reselection.
✅ Debugging steps
- Confirm
RRCReconfigurationCompletereached the target and the target began scheduling the UE under itsC-RNTI. - Verify the core path switch completed (Xn
Path Switch/ user-plane update) so downlink data now flows via the target. - Check the serving side released the UE context and the stale candidate configurations were cleared.
- If completion failed, look for a subsequent
RRCReestablishmentRequest— that is the recovery path, and its cause points back to the broken step.
⚠ Common causes of failure
- Completion message lost on a poor target downlink, so the target never adopts the UE.
- Path switch failure in the core, so user-plane data still targets the old cell.
- Serving context not released, leaving stale bearers and duplicate paging.
- Handover ping-pong across a fixed-TA/beam boundary from thresholds too tight.
Representative UE mobility log (NTN CHO) — illustrative, values vary by vendor/build:
| Field | Meaning | Example | Check |
|---|---|---|---|
numCandidates | How many CHO targets were provisioned in conditionalReconfiguration. | 3 | Zero means CHO never provisioned; must be ≤ 8 candidates. |
event | Trigger type stored for the candidate (D1/T1/A3/A5). | D1 | Should be geometric (D1/T1) for LEO; a bare A3 may fire unreliably. |
refLoc1/refLoc2 | Serving/target reference anchors for D1 (referenceLocation1/2). | lat/lon pairs | Must be present and geographically sane vs the cells' footprints. |
distThreshRef1/2 | Distance thresholds (distanceThreshFromReference1/2). | 40000/35000 m | Both halves must be crossable before t-Service elapses. |
t-Service | Time the serving cell stops serving this area (from SIB19). | +21.0 s | Trigger must fire comfortably before this, or the radio dies first. |
gnssFixAge | Age of the UE's GNSS position fix. | 1.2 s | A stale fix (large age) invalidates D1 distance math. |
taNTN/dopplerHz | UE pre-computed timing advance / Doppler for the target service link. | 8.42 ms/-41230 | Must be derived from the target's ephemeris, not the serving cell's. |
RRCReconfigurationComplete | Completion sent to the target — handover succeeded. | sent to pci=214 | Absent = HO failed; expect re-establishment next. |
Feeder-link switch: changing the ground gateway
There are two radio hops in NTN: the service link (UE ↔ satellite) and the feeder link (satellite ↔ NTN gateway on the ground). As the satellite flies, it eventually moves out of the sky above its current gateway and must hand its feeder link to the next gateway further along the track. This is the feeder-link switch, and it has no analogue in terrestrial networks. Depending on the architecture it can change which gNB (or gNB-DU, for a regenerative payload) serves you, or it can be invisible to the UE if the ground network stitches the change together behind the 5GC.
The periodic re-pointing of the satellite's feeder link from one ground gateway to another as the satellite moves across the sky, so it always has a live backhaul to the terrestrial network.
A single gateway is only visible for part of an orbit. To keep the satellite connected, its feeder link must roll from gateway to gateway along the ground track — a mobility event on the network side rather than the UE side.
Either a hard switch (drop the old feeder link, acquire the new one) or a soft switch (bring the new feeder link up before releasing the old). The choice trades payload complexity against service continuity.
| Feeder-link switch | Mechanism | Service impact on the UE | Cost |
|---|---|---|---|
| Hard switch | Break-before-make: release the old feeder link, then acquire the new gateway | Brief interruption during the change; may coincide with a cell/gNB change the UE sees | Simple payload; a short outage |
| Soft switch | Make-before-break: two feeder links active simultaneously, old released after new is up | Continuous service — ideally transparent to the UE | Needs dual feeder-link capability at satellite and gateways |
From the UE's point of view the feeder-link switch may show up as an ordinary handover (if the serving cell's identity or gNB changes with the gateway) or as nothing at all (if the payload is transparent and the ground side keeps the same logical cell). Networks that must protect real-time traffic prefer soft switching so that no user plane is dropped; simpler deployments accept the brief hard-switch gap, often scheduling it for a moment when few UEs are affected.
✅ Debugging steps
- Correlate a UE-visible handover or brief outage against the gateway's scheduled feeder-link switch time — a periodic, network-side event points here, not at the UE's radio.
- Check whether the serving
gNB/cell identity changed at the switch (regenerative/DU change) versus stayed constant (transparent payload). - For soft switching, confirm both feeder links overlapped so no user-plane packets were dropped.
⚠ Common causes of failure
- Hard-switch gap dropping real-time bearers where soft switching was needed.
- Feeder-link switch coinciding with a service-link handover, so two mobility events stack and the UE re-establishes.
- Gateway acquisition delay leaving the satellite briefly without backhaul, seen as a mass outage across all UEs under the beam.
Idle-mode reselection with location and timing
An idle NTN UE cannot lean on RSRP ranking the way a terrestrial idle UE does, for the same geometric reason. Instead, cell reselection in NTN is assisted by location and timing. The cell broadcasts a reference location and satellite ephemeris in SIB19, and the UE combines that with its own GNSS fix to reason about which cell it should be on and how long the current one will last. Crucially, the UE is told t-Service — the time the serving cell will stop serving its area — so it can reselect in time, before coverage of that cell ends, rather than waiting to discover a dead radio and then scrambling. The ordinary S-criterion (Srxlev) and the broadcast q-RxLevMin thresholds still apply for suitability, but the timing of the move is anchored to predictable geometry, not to a fade.
Why a still, idle UE still reselects: with an earth-moving beam the serving satellite simply flies out of range on schedule. The UE reads t-Service and the ephemeris, sees the clock running out on its current cell, and reselects to the next satellite/cell before the old one goes dark — all with no signalling, exactly as terrestrial reselection is connectionless.
✅ Debugging steps
- Confirm the idle UE decoded SIB19 with a valid
t-Service, reference location and ephemeris. - Check the UE holds a fresh GNSS fix so it can evaluate
Srxlev/q-RxLevMinsuitability and the geographic anchor. - Verify the UE reselects before
t-Servicerather than after the serving radio collapses.
⚠ Common causes of failure
- Missing/stale GNSS fix, so the UE cannot judge suitability or timing and camps too long.
t-Servicenot read (SIB19 decode failure), so the UE reselects reactively after the cell dies.- No suitable neighbour available in the gap for a sparse constellation — see discontinuous coverage handling in NTN registration.
Summary
The fastest way to root-cause an NTN mobility failure is to remember that the cell, not the user, is what moves — then walk the handover phases in order and find the first that broke. Provision → Trigger → RACH → Complete: if the UE never has a candidate, suspect Xn preparation or a missing conditionalReconfiguration. If the candidate is stored but D1/T1 never fires, suspect thresholds versus t-Service, or a stale GNSS fix. If the trigger fires but RACH to the target fails, suspect TA/Doppler pre-compensation against the wrong ephemeris, or an ra-ResponseWindow too short for the round trip. If RACH succeeds but the UE never settles on the target, suspect the completion message, the core path switch, or context release.
The unifying idea is that NTN replaces the terrestrial "RSRP fell, so move" logic with "geometry and time say the cell is about to leave, so move first." Isolating the broken phase turns a vague "NTN drop" into a specific, testable hypothesis — each phase points at a small, distinct set of causes, so knowing where it broke usually tells you why.
Interview quickfire
Q. Why are RSRP-based handover triggers unreliable in LEO NTN?
A. The whole footprint sweeps with the fast-moving satellite, and the very long, rapidly changing path length means SS-RSRP no longer maps cleanly to "where am I in the cell." A beam can stay strong until it leaves you, or fade and recover with the antenna pattern, so a purely RSRP-triggered handover fires late, early, or not at all. Geometry — ephemeris plus the UE's GNSS position — is predictable and is used instead.
Q. What new CHO trigger types did Rel-17 add for NTN, and why?
A. CondEvent D1 (distance/location): execute when the UE is farther than distanceThreshFromReference1 from serving referenceLocation1 and closer than distanceThreshFromReference2 to target referenceLocation2. And CondEvent T1 (time): execute inside a window defined by t1-Threshold and duration. Both key off predictable geometry/time rather than noisy radio, which is far more reliable when the cell itself is moving.
Q. What is different about the RACH the UE runs toward the target during an NTN handover?
A. It is normally contention-free (a dedicated preamble from rach-ConfigDedicated in the stored reconfigurationWithSync), and the UE must pre-compensate the target's timing advance and Doppler from the target cell's ephemeris plus its own GNSS position — not the serving cell's. The RAR still comes on PDSCH via DCI format 1_0 / RA-RNTI in the Type1-PDCCH CSS, but ra-ResponseWindow is extended to absorb the long round trip.
Q. Hard versus soft feeder-link switch?
A. Hard is break-before-make — the satellite drops the old gateway then acquires the new one, causing a brief interruption. Soft is make-before-break — two feeder links run simultaneously so service is never dropped, at the cost of dual feeder-link capability. Either may appear to the UE as a handover or be transparent, depending on whether the serving gNB/cell changes.
Q. Why does a stationary NTN UE still hand over?
A. Because in NTN the cell moves, not the user. A LEO satellite's footprint sweeps across the ground (earth-moving beams) or re-points periodically (quasi-earth-fixed), so a fixed UE is handed between successive beams and satellites as they pass. The UE uses t-Service and ephemeris to move before its current cell stops serving.
Where NTN mobility connects
Mobility rests on what the cell broadcasts about itself, on why a single beam can span many jurisdictions, and on how the core keeps a moving UE reachable. Follow these next.