How Radios Are Driven
Racora does not talk to radios. The DU does, CNS OCUDU (the gNB), over UHD for a USRP or
over a virtual transport for a simulator. What Racora owns is everything around that:
which node runs which radio, the fields on the NRCell that describe it, and the shape of
the DU pod it generates for each backend. Declaring one is Connect a Radio.
What Each Backend Produces
spec.radioBackend.ruType selects the backend; only the matching block of the NRCell is
read, and the API server rejects any other value at apply time.
uhd, a USRP over UHD. The DU runs with SYS_NICE, IPC_LOCK and PERFMON, pins
its real-time threads to the node's isolated CPUs (read at pod start from the node
itself), requests one ettus.com/usrp, carries the racora.io/rf-ready=true node
selector, and uses the Recreate strategy: the radio is exclusive, so a replacement pod
cannot start while the old one holds it. The USRP device plugin mounts the host's UHD
firmware images (/usr/share/uhd/) read-only into the pod and attaches the radio's
/dev/bus/usb device; a node with two USRPs advertises 2 and can run two cells.
zmq, a virtual radio. The DU's radio driver is zmq with tx_port, rx_port and
base_srate as its device arguments, so IQ samples flow over ZeroMQ instead of RF; the
controller adds a Service on port 2000 (zmq-tx) for the transmit side and no node
selector, so the DU schedules anywhere. The peer is a UE simulator you deploy, such as
srsUE with its ZMQ radio, in the namespace the controller's ueNamespace value names
(default user-equipment), which is where the default rxPort name resolves; Racora
ships no UE.
dummy, no radio. The DU runs with no radio and no UEs: the CU plane, the F1
connection, identity, mobility configuration and telemetry are all real. It is what the
example cell uses and the right backend for a control-plane-only lab.
The Clock Decides Whether Mobility Is Possible
A single cell runs on the radio's internal clock. Cells between which UEs hand over need frame-aligned radios, GPS-disciplined on USRPs; why that is the precondition is How Mobility Reaches the CU-CP, and setting the clock and checking lock is Connect a Radio.
Radios That Cannot Be Declared
The CRD accepts uhd, zmq and dummy, so an O-RU over Open Fronthaul cannot be
declared. The node side of fronthaul (a NIC with hardware timestamping and a PTP hardware
clock, ptp4l and phc2sys, the racora.io/fronthaul-ready label) is what the
provisioner prepares; no shipped workload selects that
label. The USRP device plugin advertises the USB B200 family only (B200, B210, B200mini),
so other UHD radios are not supported: a uhd DU requests ettus.com/usrp and would
stay Pending.