LTE / 5G NR
Radio Network Optimization
Interview Prep
A rapid-recall technical cheat sheet. Covers KPI domains, RF planning, troubleshooting flows, SQL, and Python β built for 5-minute pre-interview review.
3-step answer structure: (1) Define the KPI / concept. (2) State the root cause chain. (3) Name the optimization action + expected impact. Always end with a number or % improvement.
| Interview Type | What They Really Test | Your Winning Move |
|---|---|---|
| KPI Deep Dive | Do you know counter relationships? | Draw counterβKPI chain on whiteboard |
| Troubleshooting Scenario | Structured problem-solving | Use systematic elimination: coverage β interference β config β capacity |
| Planning Question | Link budget & tradeoff reasoning | Name the variables, state assumptions, compute estimate |
| SQL/Python | Real data analysis experience | Show telecom-specific queries β GROUP BY cell, time window, KPI filter |
RRC + ERAB setup success rates.
Drop rate, abnormal release counters.
HO prep, exec, success rates.
| KPI | LTE Formula / Source | Typical Target | Key Counters |
|---|---|---|---|
| CSSR | RRC SR Γ ERAB SR | β₯ 99.0% | RRC.ConnEstab.Att / Succ; E-RAB.EstabInit.Att / Succ |
| DCR | Abnormal Releases / (Succ + Abnormal) | β€ 0.5% | E-RAB.RelAbnormal; RRC.ConnRelease.Cause |
| HO SR | HO Succ / HO Att | β₯ 99.0% | HOExeAtt.ToEUTRAN; HOExeSucc.ToEUTRAN |
| DL TP | DL Volume / Active Time | Context-dependent | DRB.UEThpDl; pdcp.SduDelayDl |
| UL TP | UL Volume / Active Time | Context-dependent | DRB.UEThpUl; UL SINR average |
CSSR is NOT one counter β it's a compound. Always say "RRC Setup SR multiplied by ERAB Setup SR". Confusing them signals a shallow understanding.
- Radio Link Failure (RLF) β poor coverage / high interference
- No Reply from UE β UE power off, PRACH congestion
- Timeout β timing advance issues, UE OOM
- Configuration Error β SIB mismatch, parameter error
- S1 Interface β S1-AP path failure, MME congestion
- Radio Resource β PRB congestion, bearer limit hit
- QoS Mismatch β requested QCI not supportable
- UE Capability β UE rejects bearer setup
RRC fail β check RSRP/coverage β then PRACH config β then interference (SINR). ERAB fail β check S1, PRB utilization, then QCI config.
π Accessibility Interview Questions
| Drop Category | Root Cause | Action |
|---|---|---|
| RLF (Radio Link Failure) | Coverage hole, high interference, ping-pong HO | Coverage optimization, TTT/A3 offset, antenna tilt |
| S1 Release β eNB Request | Abnormal UE state, RLC max retx | Check UE logs, Inactivity timer review |
| S1 Release β EPC | SGW/MME disconnection, PDN error | Core team escalation, S1 trace analysis |
| UE Lost | Deep indoor, coverage boundary | Coverage layer design, indoor solution |
| X2 HO Failure leading to drop | Missing X2 link, neighbor missing | Add X2, audit neighbor list |
Normal UE-initiated releases are NOT drops. Only abnormal releases count in DCR. Examiners test this distinction.
π Retainability Interview Questions
A3 trigger
TTT + Offset
to target eNB
RACH + sync
path switch
- Too Early HO β A3 offset too small, TTT too short β RLF in target
- Too Late HO β A3 offset too large, TTT too long β RLF in source
- Wrong Cell HO β Neighbor not configured, pilot pollution
- Ping-Pong β Hysteresis too small, antenna overlap
| HO Type | Interface | Path Switch | Key Parameter |
|---|---|---|---|
| Intra-eNB / Intra-Freq | Internal | No S1 switch | A3 offset, TTT, Hys |
| Inter-eNB (X2) | X2 | X2-based path switch | X2 existence, CIO |
| Inter-eNB (S1) | S1 (MME) | MME-mediated | S1 latency, MME load |
| LTEβNR (EN-DC) | Xn/X2 | SgNB add/change | B1/B2 threshold, MCG/SCG |
| LTEβ2G/3G (IRAT) | X2/S1 | MME-mediated | B2 threshold, TTT |
π Mobility Interview Questions
| SINR Range | Modulation / MCS | Throughput Impact | Action |
|---|---|---|---|
| β₯ 20 dB | 256QAM (or 64QAM) | Peak throughput | Maintain |
| 10β20 dB | 64QAM / 16QAM | Good | Monitor CQI |
| 0β10 dB | QPSK / low MCS | Reduced | Check interference/coverage |
| < 0 dB | Min MCS / QPSK r1/3 | Poor, near RLF | Coverage/interference action |
π Integrity Interview Questions
- Scope the problem β time, area, cell cluster, UE type
- Identify KPI domain (access / retain / mobility / integrity)
- Pull counters β calculate sub-KPIs β isolate stage
- Check RF (coverage, interference) β then configuration β then core
- Correlate with change history (parameter, SW, hardware)
- Apply fix β validate KPI delta β document
| SINR Good | SINR Bad | |
|---|---|---|
| RSRP Good | Best case | Interference |
| RSRP Bad | Edge but clean | Coverage hole |
| KPI | Numerator Counter | Denominator Counter | Movement Meaning |
|---|---|---|---|
| RRC SR | RRC.ConnEstabSucc | RRC.ConnEstabAtt | β = UE can't connect β check coverage/PRACH |
| ERAB SR | E-RAB.EstabInitSucc | E-RAB.EstabInitAtt | β = bearer setup failing β check S1 / PRB load |
| DCR | E-RAB.RelAbnormal | E-RAB.RelTotal | β = drops increasing β check RLF/S1 |
| HO SR | HO.ExeSucc.ToEUTRAN | HO.ExeAtt.ToEUTRAN | β = mobility issue β check coverage overlap / neighbors |
| DL TP | DRB.ThpVolDl | DRB.ThpTimeDl | β = less data per time β check PRB util / interference |
| PDSCH BLER | PDSCH.DTX | PDSCH.Total | β = retransmissions β check SINR / HARQ |
CCQI β Coverage β Capacity β Quality β Interference. The order of planning priority in most networks.
| Component | Typical Value | Impact |
|---|---|---|
| eNB Tx Power (per port) | 20 W (43 dBm) | Drives EIRP |
| Antenna Gain | 16β21 dBi | +1 dBi β +11% range |
| Shadow Fade Margin | 8β10 dB | Location probability (90β95%) |
| Body Loss | 3 dB | Handheld UE penalty |
| Penetration Loss (outdoor) | 0β5 dB | Varies by environment |
| Penetration Loss (indoor, concrete) | 15β25 dB | Major coverage reducer |
| Interference Margin | 2β5 dB | Accounts for co-channel interference |
Link budget is not symmetric. UL is usually the limiting direction in LTE because UE Tx power (23 dBm) is much less than eNB (43 dBm). Always state UL-limited first.
| Environment | Path Loss Model | Typical ISD (LTE 1800) |
|---|---|---|
| Dense Urban | COST 231, ray tracing | 200β500 m |
| Urban | Okumura-Hata extended | 500 m β 1.5 km |
| Suburban | Hata | 1β3 km |
| Rural / Open | Free space / Hata | 3β10 km |
| LTE Config | BW | Peak DL (SISO) | Peak DL (2Γ2) | Peak DL (4Γ4) |
|---|---|---|---|---|
| LTE Cat 4 | 20 MHz | 75 Mbps | 150 Mbps | 300 Mbps |
| LTE-A (256QAM) | 20 MHz | β | ~200 Mbps | ~300+ Mbps |
| 5G NR (FR1, 100 MHz) | 100 MHz | ~400 Mbps | β | ~1 Gbps+ |
| 5G NR (FR2/mmWave) | 400 MHz | β | β | ~20 Gbps peak |
| Measure | Range | Good |
|---|---|---|
| RSRP | β44 to β140 dBm | β₯ β100 dBm |
| RSRQ | β3 to β19.5 dB | β₯ β10 dB |
| SINR | β20 to +30 dB | β₯ 10 dB |
| RSSI | wideband Rx power | Context |
| Concept | Definition | Interview Point |
|---|---|---|
| Pilot Pollution | β₯3 cells with RSRP within 6 dB of best cell | Causes low SINR, HO instability β fix with tilt/power/PCI plan |
| Downlink ICIC (LTE) | X2-based coord. of PRB allocation between neighbors | Reduces inter-cell interference at cell edge |
| eICIC (LTE-A HetNet) | ABS subframes for small cell protection | Separates macro and pico/femto resources |
| Massive MIMO (5G) | 32β256 antenna elements, digital beamforming | Improves both coverage and capacity via beam separation |
| PCI (Physical Cell ID) | 0β503 in LTE, 0β1007 in 5G NR | Must avoid PCI mod3 confusion (PDSCH), mod6 confusion (PRS) |
- Layer 1 β RSRP map β coverage holes, PCI best server plot
- Layer 2 β SINR map β interference zones, pilot pollution
- Layer 3 β CQI distribution β throughput estimation
- Layer 4 β Event log (A3, HO, RLF) β mobility issues
- Layer 5 β Call setup events β accessibility failures
- Coverage hole β Increase Tx power, uptilt, add site
- Pilot pollution β Downtilt, reduce power, PCI replan
- Overshooting cell β Electrical/mechanical downtilt
- Missing neighbor β ANR update or manual NL addition
- HO boundary mismatch β CIO / A3 offset adjustment
| Feature | LTE / LTE-A | 5G NR (SA/NSA) |
|---|---|---|
| Frame Structure | 10 ms, 1 ms subframe, 0.5 ms slot | 10 ms frame, flexible numerology (ΞΌ=0β4), mini-slot |
| Duplex | FDD / TDD | FDD / TDD / SUL |
| Reference Signals | CRS (cell-specific, always on) | SSB + CSI-RS + DMRS (UE-specific, on-demand) |
| Beamforming | 2D (4T4R, 8T8R limited) | 3D (Massive MIMO, analog+digital hybrid) |
| Mobility | A3/B2 events, RRC idle/connected | A3/B1 events, SMTC/SSB, RRC_INACTIVE state |
| KPI Measurement | RSRP/RSRQ on CRS | SS-RSRP / SS-RSRQ / SS-SINR on SSB |
| HetNet | eICIC, CoMP | IAB, CU/DU split, integrated access |
| Slice | Not native (QCI only) | Network slicing (S-NSSAI, URLLC/eMBB/mMTC) |
| Frequency | FR1 only (sub-6 GHz typical) | FR1 (sub-6) + FR2 (mmWave, 24β100 GHz) |
SSB (Synchronization Signal Block) replaces CRS for beam management. gNB-CU/DU split changes where optimization happens (CU = RRC/PDCP; DU = PHY/MAC). NSA Option 3x = LTE anchor + NR SCG. SA = NR standalone with 5G Core.
π§± The QCI / Bearer Model β know this cold
| QCI | Role in VoLTE | Type | Priority | PDB | PELR |
|---|---|---|---|---|---|
| QCI 1 | Voice media (RTP / AMR) | GBR | 2 | 100 ms | 10β»Β² |
| QCI 2 | Video (conversational) | GBR | 4 | 150 ms | 10β»Β³ |
| QCI 5 | IMS / SIP signaling | Non-GBR | 1 | 100 ms | 10β»βΆ |
| QCI 8/9 | Default data bearer (best effort) | Non-GBR | 8/9 | 300 ms | 10β»βΆ |
Don't say "VoLTE uses QCI 1." Say it precisely: QCI 5 carries the SIP signaling, QCI 1 carries the voice media. A call can fail at the QCI 5 (registration/setup) stage even when QCI 1 radio is perfect β and the fix is completely different.
ποΈ The Optimization Levers
π VoLTE KPIs & Targets
| KPI | What It Measures | Typical Target | Key Counters / Source |
|---|---|---|---|
| VoLTE Accessibility | QCI 1 E-RAB setup success | β₯ 99.5% | E-RAB.EstabAdd.Succ/Att (QCI=1) |
| VoLTE Retainability (DCR) | QCI 1 abnormal release rate | β€ 0.5% | E-RAB.RelAbnormal (QCI=1) / E-RAB.RelTotal |
| SRVCC Success Rate | Active-call handover to CS | β₯ 98% | SRVCC.ExecSucc / SRVCC.ExecAtt |
| Call Setup Time (PDD) | Post-Dial Delay (SIP INVITEβringing) | < 3β4 s | SIP trace / IMS CDR |
| Voice Quality (MOS) | Perceived audio quality | β₯ 3.5 (POLQA) | RTCP, probe, drive test |
| Packet Loss Rate | QCI 1 RTP packet loss | < 1% | RTCP, PDCP discard counters |
| Jitter / Delay | RTP inter-arrival variation / mouth-to-ear | Jitter < 20 ms | RTCP, jitter buffer stats |
| Mute / Silent Call Rate | One-way / no audio | Minimize | RTP gap analysis, complaints |
π οΈ Step-by-Step Optimization Workflow
- Baseline & scope β pull VoLTE accessibility, DCR, SRVCC SR, MOS per cell/cluster; rank worst offenders.
- Classify the symptom β setup failure, drop, or quality (MOS/mute)? Each maps to a different layer.
- Coverage first β check RSRP/SINR on the VoLTE bearer; voice needs roughly RSRP β₯ β118 dBm, SINR β₯ β3 dB (with TTI bundling) to hold a call.
- Enable edge features β turn on TTI bundling + RoHC where UL is the limiter; verify SPS for capacity-bound cells.
- Tune SRVCC β set B2 thresholds so handover to 3G fires before RLF, not after; verify neighbor & CS readiness.
- Protect quality β check codec (AMR-WB vs NB), rate adaptation, jitter buffer, transport QoS/DSCP marking.
- Validate & document β re-measure KPI delta after each change; correlate with parameter/SW change history.
| SINR Good | SINR Poor | |
|---|---|---|
| RSRP Good | Healthy VoLTE | Interference β check overshoot / PCI / overlap |
| RSRP Poor | Edge β TTI bundling + RoHC, tune SRVCC | Coverage hole β SRVCC out, or add coverage |
π Troubleshooting Playbook
| Symptom | Most Likely Causes | Where to Look / Action |
|---|---|---|
| Call setup fails | IMS registration fail; QCI 5 signaling issue; QCI 1 admission rejected; P-CSCF unreachable | SIP trace, IMS registration status, QCI=1 E-RAB setup counters, PRB/admission control |
| Call drops mid-conversation | RLF at edge; failed/late SRVCC; QCI 1 abnormal release; handover failure | SRVCC.ExecAtt/Succ, B2 thresholds, RLF counters, neighbor relations, CS core readiness |
| One-way / mute audio | RTP path broken one direction; UL grant starvation; NAT/transport; bearer mismatch | RTP/RTCP both directions, UL scheduling, jitter buffer, P-CSCF media path, DSCP marking |
| Poor voice quality (low MOS) | Packet loss, jitter, interference, low AMR rate, over-aggressive C-DRX | RTCP loss/jitter, SINR, codec rate adaptation, DRX timers, transport QoS |
| Robotic / choppy voice | High jitter, packet bursts, frame erasure | Jitter buffer tuning, scheduler latency, RoHC context loss, PDCP discard |
| Long Post-Dial Delay | IMS signaling latency, SIP retransmissions, slow QCI 1 setup | SIP INVITEβ18x timing, signaling transport, dedicated bearer setup time |
π§ MOS Scale (know the numbers)
| MOS | Quality | User Perception |
|---|---|---|
| 4.3 β 5.0 | Excellent | AMR-WB / HD Voice, imperceptible impairment |
| 4.0 β 4.3 | Good | Toll quality, very satisfied |
| 3.5 β 4.0 | Fair | Acceptable β typical VoLTE target floor |
| 3.0 β 3.5 | Poor | Noticeable degradation, some annoyance |
| < 3.0 | Bad | Hard to understand, complaints likely |
(1) Always split the problem into signaling (QCI 5) vs media (QCI 1) before hypothesizing. (2) Optimize coverage before features β TTI bundling and RoHC extend the edge, they don't fix a hole. (3) A correctly-tuned SRVCC B2 threshold is the single biggest lever on VoLTE drop rate at coverage edge. (4) Protect QCI 1 with admission control and scheduler priority so a data surge never starves voice. (5) Quality issues (MOS) live in packet loss + jitter + codec β and often in transport QoS/DSCP, not the air interface.
Treating a drop at coverage edge as a "retainability/RLF problem" when it's really a late SRVCC. If SRVCC fires after the radio link is already lost, the call drops. The fix is the B2 threshold/timing, not more LTE power.
π VoLTE Interview Questions
- GROUP BY cell, hour β always aggregate by time + cell for KPI
- HAVING β filter after aggregation (not WHERE)
- Window functions β LAG/LEAD for trend, RANK for worst cells
- CASE WHEN β conditional KPI categories inline
- CTE / WITH β readable multi-step KPI calculation
- NULLIF β prevent divide-by-zero in KPI ratios
- Always filter by date partition first β major performance gain on Hive/Presto
- Use CAST for integer counter to float division
- Check for zero denominators (idle cells) before KPI calc
- Join cell dimension table for site_id, sector, azimuth
- Qualify table names:
schema.tableon Presto
-- Basic KPI: CSSR by cell and hour
WITH raw AS (
SELECT
cell_id,
date_hour,
SUM(rrc_conn_estab_succ) AS rrc_succ,
SUM(rrc_conn_estab_att) AS rrc_att,
SUM(erab_estab_init_succ) AS erab_succ,
SUM(erab_estab_init_att) AS erab_att
FROM mr_kpi_hourly
WHERE dt BETWEEN '2025-06-01' AND '2025-06-07'
GROUP BY 1, 2
)
SELECT
cell_id,
date_hour,
ROUND(rrc_succ * 100.0 / NULLIF(rrc_att, 0), 2) AS rrc_sr_pct,
ROUND(erab_succ * 100.0 / NULLIF(erab_att, 0), 2) AS erab_sr_pct,
ROUND(rrc_succ * 100.0 / NULLIF(rrc_att,0)
* erab_succ / NULLIF(erab_att,0), 2) AS cssr_pct
FROM raw
ORDER BY cssr_pct ASC
LIMIT 50;
-- Worst cells by DCR with window rank
SELECT
cell_id,
site_id,
ROUND(erab_rel_abnormal * 100.0 / NULLIF(erab_rel_total, 0), 2) AS dcr,
RANK() OVER (ORDER BY
erab_rel_abnormal * 1.0 / NULLIF(erab_rel_total, 0) DESC) AS rank
FROM mr_kpi_daily
WHERE dt = '2025-06-07'
HAVING erab_rel_total > 100 -- filter low-traffic cells
ORDER BY rank
LIMIT 20;
π SQL Interview Questions
| Library | Use Case |
|---|---|
pandas | KPI tabular data, groupby, merge |
numpy | Array math, signal processing |
matplotlib/seaborn | KPI visualization, heatmaps |
folium/geopandas | RF geo maps |
re | Log parsing, counter extraction |
pyodbc/pyhive | Hive/Presto connectivity |
openpyxl/xlrd | Excel KPI reports |
- KPI automation β read CSV from NMS β groupby cell β compute ratio β flag bad cells
- Log parsing β regex on eNB alarm/event logs β extract timestamps + causes
- Report generation β pandas β openpyxl β styled Excel report
- Geospatial β drive test .csv β folium map with RSRP colour coding
- Anomaly detection β rolling mean / z-score on hourly KPI time series
# KPI calculation from raw counters CSV
import pandas as pd
df = pd.read_csv('kpi_raw.csv')
# Compute CSSR and DCR
df['rrc_sr'] = df['rrc_succ'] / df['rrc_att'].replace(0, pd.NA) * 100
df['erab_sr'] = df['erab_succ'] / df['erab_att'].replace(0, pd.NA) * 100
df['cssr'] = df['rrc_sr'] * df['erab_sr'] / 100
df['dcr'] = df['erab_rel_abn'] / df['erab_rel_tot'].replace(0, pd.NA) * 100
# Flag underperforming cells
df['bad_cssr'] = df['cssr'] < 99.0
df['bad_dcr'] = df['dcr'] > 0.5
worst = df[df['bad_cssr'] | df['bad_dcr']].sort_values('cssr')
print(worst[['cell_id', 'cssr', 'dcr']].head(20))
# Log parsing β extract RLF events from eNB trace
import re
from datetime import datetime
pattern = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*RLF.*cell=(\w+).*cause=(\w+)')
events = []
with open('enb_trace.log') as f:
for line in f:
m = pattern.search(line)
if m:
events.append({'ts': m.group(1), 'cell': m.group(2), 'cause': m.group(3)})
df_rlf = pd.DataFrame(events)
print(df_rlf.groupby(['cell', 'cause']).size().reset_index(name='count').sort_values('count', ascending=False))
π Python Interview Questions
- Symptom: DCR jumped 0.3% β 1.8% on 12 cells overnight
- Root Cause: SW upgrade changed TTT from 160ms β 40ms β ping-pong β RLF
- Action: Reverted TTT; verified X2 HO ping-pong counter confirmed cause
- Result: DCR back to 0.35% within 2 hours
- Symptom: DL throughput 20 Mbps on 20 MHz cell, target 80+ Mbps
- Root Cause: RSRP β95 dBm (edge), SINR β2 dB (interference), CQI median = 4
- Action: Downtilted overshooting neighbor by 2Β°, reduced neighbor Tx power by 3 dB
- Result: SINR improved to +6 dB, throughput to 65 Mbps
- Symptom: HO SR 92% on 5 cells near motorway
- Root Cause: Missing X2 link, S1 HO through MME β latency 200ms β UE RLF before HO complete
- Action: Established X2 link, reduced HO execution time
- Result: HO SR 99.2%
- Symptom: CSSR 94% during event (normally 99.5%)
- Root Cause: PRACH congestion β all preamble groups full, RRC reject spike
- Action: Increased PRACH resources (numRaPreamblesGrpA), activated congestion control
- Result: CSSR 98.5% at next event
- Symptom: VoLTE DCR 1.2% on an edge cluster (QCI 1 abnormal releases), data DCR normal
- Root Cause: Late SRVCC β B2 threshold too low, handover to 3G fired after RLF β call dropped before completion
- Action: Raised B2 serving threshold so SRVCC triggers earlier; verified inter-RAT neighbors & CS readiness; enabled TTI bundling for UL edge
- Result: VoLTE DCR fell to 0.3%; SRVCC success rate up from 94% β 99%
| Mistake | Why It Fails | What to Do Instead |
|---|---|---|
| Confusing CSSR with RRC SR | Shows superficial counter knowledge | Always say "CSSR = RRC SR Γ ERAB SR" |
| Not distinguishing normal vs abnormal release | Wrong DCR interpretation | "Only abnormal releases count in DCR" |
| Saying "just add more sites" for capacity | No tradeoff awareness | Discuss spectral efficiency, sectorization, small cells first |
| Confusing RSRP and RSSI | Basic RF knowledge fail | RSRP = per-RE CRS power; RSSI = wideband total |
| Ignoring UL in link budget | Incomplete analysis | Always state UL is typically limiting direction |
| Blaming coverage when it's interference | Wrong root cause β wrong fix | Use RSRP vs SINR matrix to distinguish |
| SQL: using WHERE after GROUP BY | Syntax error β shows lack of practice | Use HAVING for post-aggregation filters |
| Python: not handling divide-by-zero | Runtime crash in production | Use .replace(0, pd.NA) or np.where(denom>0,...) |
ACCESS
- CSSR = RRC SR Γ ERAB SR
- RRC fail β coverage / PRACH
- ERAB fail β S1 / PRB congestion
- Target: β₯ 99.0%
RETAIN
- DCR = abnormal / total rel Γ 100%
- Normal UE release β drop
- RLF causes: coverage, interference, ping-pong
- Target: β€ 0.5%
MOBILITY
- A3 event β TTT β HO decision
- Too early: offsetβ TTTβ β RLF at target
- Too late: offsetβ TTTβ β RLF at source
- X2 faster than S1; always prefer X2
INTEGRITY
- C = BΒ·logβ(1+SINR)
- RSRP good + SINR bad β interference
- RSRP bad + SINR bad β coverage
- PRB util > 80% β capacity action
RF PLANNING
- MAPL = EIRP β Sensitivity β Margins
- UL is usually limiting (23 dBm vs 43 dBm)
- Pilot pollution: β₯3 cells within 6 dB
- PCI mod3 conflict β PDSCH interference
SQL
- GROUP BY cell + time always
- NULLIF(denom,0) for safe division
- HAVING after GROUP BY, not WHERE
- RANK() OVER for worst cell analysis
PYTHON
- pandas: groupby β agg β compute KPI
- replace(0, pd.NA) for safe division
- re.compile() + findall() for log parsing
- folium for geospatial RSRP maps
5G NR DELTA
- SSB (not CRS) for beam/mobility meas.
- SS-RSRP / SS-SINR KPIs
- RRC_INACTIVE state (no LTE equiv.)
- NSA Option 3x: LTE anchor + NR SCG
CSSR = RRC Γ ERAB Β· DCR = abnormal only Β· A3 β TTT β HO Β· SINR bad + RSRP good = interference Β· UL limits link budget Β· NULLIF in SQL Β· replace(0,NA) in pandas