Skip to main content

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.