Bring Up Your First Cell
This tutorial declares one cell on a virtual radio, watches the dormant RAN come up for it, and removes it again.
Before You Begin
- A control node with the RAN installed and dormant (Install the Control Node). No radio and no RF are needed.
Declare a Cell and Watch the RAN Materialize
Apply an NRCell (racora.io/v1alpha1) in racora-system. You declare only the
radio-facing fields — band, ARFCN, bandwidth, subcarrier spacing, PLMN, TAC (and
optionally pci or a node pin). The controller scales the CU plane 0→1, generates the matching DU, and assigns
the cell's identity for you: a unique, stable sectorId and gnbDuId, the CU-wide
gnbId, and the resulting NCI — recorded read-only in status, never set by hand.
Declaring a second cell just gets the next free identity, so cells coexist under one CU
without you tracking IDs. This is the example cell, cell-1.yaml —
the reference deployment's carrier (n78, 10 MHz, PLMN 90170, TAC 7) on a virtual radio
(ruType: dummy, so it runs anywhere; the same cell on a real B210 is in
Deploy Cells):
apiVersion: racora.io/v1alpha1
kind: NRCell
metadata:
name: cell-1
namespace: racora-system
spec:
band: 78
dlArfcn: 632628
channelBandwidthMHz: 10
commonScs: 30
plmn: "90170"
tac: 7
radioBackend:
ruType: dummy
Its PLMN and TAC are the network identity a fresh install declares by default (PLMN
90170, tracking area 7 — the core serves it, the CU-CP advertises it); a cell outside the
identity is refused with a condition, and Configure the 5G Core is where the
identity is changed.
Save it as cell-1.yaml and apply it:
kubectl apply -f cell-1.yaml
kubectl get deploy -n centralized-unit # cu-cp/cu-up/cuip scale to 1
kubectl get deploy -n distributed-unit # the DU for cell-1 appears
kubectl get nrcell -n racora-system # Sector / DU-ID / NCI — assigned by the controller
NAME PCI PCI-SOURCE SECTOR DU-ID NCI BAND PHASE AGE
cell-1 1002 controller-temp 0 0 0x66C000 78 ConfigGenerated 12s
The phase reads Pending for a moment before ConfigGenerated. The PCI is a temporary
one (controller-temp, from the pool 1002 to 1007) because the example declares none;
once cuip (CU-IP) runs on the control node's GPU the Intelligence Plane replaces it with
an assigned PCI.
Remove It
Deleting the last cell dissolves the CU plane back to 0/0:
kubectl delete nrcell cell-1 -n racora-system
What's Next
- A cell on a real radio and a phone on it: Attach a Phone to a Live Cell.
- What an NRCell is and what the controller does with it: The Racora API.
- Every field: the NRCell API.