Skip to content

BS YAML Reference

BS reads BS.yaml from its current working directory at startup. Copy a config/BS_*.yaml preset that matches your hardware and scenario, then edit the copy. Configuration is not hot-reloaded; restart the BS after making changes.

The tables follow the top-level YAML structure and use full paths such as uplink.arq_enabled to distinguish similarly named fields. A typical value is guidance, not a guaranteed default for every preset. If an optional section is omitted, the parser supplies its default values.

Keep coupled frame-structure, duplex, frequency, and resource-mapping fields consistent with the UE configuration.

PathType/UnitTypical ValueDescription
radio.radio_backendstringuhdRadio I/O backend. Use uhd for real USRPs or sim for the shared-memory channel simulator.
PathType/UnitTypical ValueDescription
simulation.sessionstringoisac_simShared simulator session namespace used by BS, UE, and ChannelSimulator.
simulation.enable_comm_rxbooltrueSimulator produces the communication RX path for UE.
simulation.enable_sensing_rxbooltrueSimulator produces monostatic sensing RX paths.
simulation.enable_uplinkboolfalseSimulator routes the UE-to-BS uplink stream.
simulation.pacing_enabledbooltruePace simulator output to wall-clock sample time.
simulation.noise_power_dbfsfloat / dBFS-70AWGN power per RX channel; very low values effectively disable noise.
simulation.snr_control_enableboolfalseScale the clean simulated signal before AWGN to maintain target_snr_db.
simulation.target_snr_dbfloat / dB40Initial SNR target when SNR control is enabled.
simulation.control_portint10002ChannelSimulator ZMQ control port for runtime SNR commands.
simulation.cfo_hzfloat / Hz0Initial BS-to-UE CFO before UE RX correction. The initial UE-to-BS CFO has the opposite sign, is carrier-ratio-scaled in FDD, and its residual then follows UE uplink TX retuning.
simulation.sample_rate_offset_ppmfloat / ppm0UE sample-clock offset relative to the BS clock.
simulation.timing_offset_samplesint / samples0Constant integer sample delay injected on RX.
simulation.array_spacing_mfloat / m0.04283Physical ULA element spacing; set <=0 to use array_spacing_lambda.
simulation.array_spacing_lambdafloat / lambda0.5Legacy ULA spacing in wavelengths.
simulation.ring_capacity_samplesint / samples262144Per-stream shared-memory ring capacity.
simulation.steering_override_filestring""Optional array-manifold matrix file. When empty, the simulator generates a ULA manifold from angle_deg. When set, angle_deg no longer affects the array response; encode the angle-dependent amplitude and phase directly in the matrix.
simulation.comm_multipath_taps[]object[]optionalCommunication tapped-delay-line taps with delay_samples, gain_db, and phase_deg.
simulation.targets[]object[]optionalMonostatic point scatterers with range_m, velocity_mps, gain_db, and angle_deg.
simulation.bistatic_targets[]object[]optionalBistatic/communication point scatterers with the same target fields.
PathType/UnitTypical ValueDescription
rf_sampling.sample_ratefloat / Hz50000000Baseband sample rate.
rf_sampling.bandwidthfloat / Hz50000000Analog bandwidth, usually matching sample_rate.
PathType/UnitTypical ValueDescription
usrp_device.device_argsstringaddr=...Shared USRP device args fallback.
PathType/UnitTypical ValueDescription
clock_time.clock_sourcestringexternalGlobal clock source: internal, external, or gpsdo.
clock_time.time_sourcestringinternalGlobal time/PPS source; empty follows clock_source.
PathType/UnitTypical ValueDescription
ofdm_frame.fft_sizeint1024OFDM FFT size.
ofdm_frame.cp_lengthint / samples128Cyclic prefix length.
ofdm_frame.sync_posint1Sync symbol index inside each frame.
ofdm_frame.enable_sec_sync_symbolboolfalseReserve sync_pos-1 as a duplicate ZC sync symbol.
ofdm_frame.enable_cfo_training_sequenceboolfalseReserve sync_pos+1 as a repeated CFO training field.
ofdm_frame.cfo_training_period_samplesint / samples16Repetition period of the CFO training field; must divide fft_size.
ofdm_frame.num_symbolsint100Number of OFDM symbols per frame.
ofdm_frame.sensing_symbol_numint100Number of symbols used in sensing processing.
ofdm_frame.zc_rootint29Zadoff-Chu root for sync/preamble.
ofdm_frame.pilot_positionsint[][571,...]Comb-pilot subcarrier indices.
ofdm_frame.midframe_pilot_symbolsint[][]Optional in-frame BPSK pilot symbol indices.
ofdm_frame.midframe_pilot_seedint1296453708Deterministic mid-frame BPSK pilot seed; must match TX/RX.
PathType/UnitTypical ValueDescription
cuda.cuda_mod_pipeline_slotsint3CUDA modulation pipeline slots; values below 1 are clamped.
PathType/UnitTypical ValueDescription
ldpc.fixed_pointboolfalseUse the int16/Q16 layered-NMS CPU decoder instead of float32.
ldpc.fixed_point_scaleint16Power-of-two LLR scale before int16 saturation in fixed-point mode.
PathType/UnitTypical ValueDescription
downlink.center_freqfloat / Hz2400000000BS downlink RF center frequency.
downlink.tx_gainfloat / dB60BS downlink TX gain.
downlink.tx_channelint0BS downlink TX channel index.
downlink.tx_device_argsstring""TX-specific device args; empty uses usrp_device.device_args.
downlink.tx_clock_sourcestring""TX clock source override.
downlink.tx_time_sourcestring""TX time source override.
downlink.wire_format_txstringsc16TX wire format, typically sc16 or sc8.
downlink.arq_enabledboolfalseEnable downlink ARQ on the BS transmitter.
downlink.arq_window_packetsint256Downlink ARQ outstanding packet window; valid range 132767.
downlink.arq_retransmit_timeout_msint / ms100Downlink ARQ retransmission timeout.
downlink.arq_max_retriesint5Max downlink retransmission retries; 0 means unlimited within the window.
PathType/UnitTypical ValueDescription
downlink_pipeline.tx_circular_buffer_sizeint8Capacity of the modulated-frame queue feeding TX.
downlink_pipeline.data_packet_buffer_sizeint256Capacity of the encoded-packet buffer.
PathType/UnitTypical ValueDescription
uplink.enabledboolfalseMaster switch for the UE-to-BS uplink/duplex path.
uplink.duplex_modestringtddtdd uses an uplink symbol window; fdd uses uplink.center_freq and a full-frame uplink.
uplink.center_freqfloat / Hz2500000000FDD-only uplink carrier. TDD uses the downlink center frequency.
uplink.symbol_startint90TDD-only first uplink symbol in the downlink frame.
uplink.symbol_countint10TDD-only uplink window length; 0 disables TDD uplink.
uplink.guard_symbolsint1TDD-only leading guard symbols inside the uplink window.
uplink.bs_dl_ul_timing_diffint / samples50BS-side uplink RX window offset relative to the downlink TX frame anchor.
uplink.debug_self_channelboolfalseEstimate local TX leakage/self channel from uplink RX windows for DUTI debugging.
uplink.ertm_to_enableboolfalseEnable eRTM timing-offset payloads and UE-side TO logs.
uplink.ertm_report_interval_framesint / frames32BS eRTM payload/report cadence in downlink TX frames.
uplink.rx_gainfloat / dB0BS uplink RX gain.
uplink.rx_channelint0BS uplink RX channel index.
uplink.rx_wire_formatstringsc16BS uplink RX wire format.
uplink.rx_device_argsstring""Uplink RX device args override.
uplink.rx_clock_sourcestring""Uplink RX clock source override.
uplink.rx_time_sourcestring""Uplink RX time source override.
uplink.rx_agc_enableboolfalseEnable BS uplink hardware RX AGC.
uplink.rx_agc_low_threshold_dbfloat / dB14Increase uplink RX gain below this filtered delay-spectrum peak threshold.
uplink.rx_agc_high_threshold_dbfloat / dB16Decrease uplink RX gain above this threshold.
uplink.rx_agc_max_step_dbfloat / dB1Maximum uplink RX gain step per AGC update.
uplink.rx_agc_update_framesint4Minimum processed-uplink-frame interval between AGC updates.
uplink.equalizer_modestringmmseBS uplink equalizer inverse mode: zf or mmse.
uplink.channel_tracking_modestringpilot_phaseUplink per-symbol comb-pilot tracking mode: disabled or pilot_phase.
uplink.equalizer_mag_floorfloat1e-6Lower bound for `
uplink.channel_tracking_min_pilot_snrfloat1e-4Minimum comb-pilot residual weight before falling back.
uplink.arq_enabledboolfalseEnable uplink ARQ on the BS receiver.
uplink.arq_ordered_deliveryboolfalseBuffer accepted uplink packets for in-order UDP delivery.
uplink.arq_window_packetsint256Uplink ARQ receive/reorder window; valid range 132767.
uplink.arq_feedback_interval_msint / ms10Minimum interval between uplink ARQ ACK feedback packets.
PathType/UnitTypical ValueDescription
sensing.rx_wire_formatstringsc16Default sensing RX wire format.
sensing.rx_device_argsstring""Default sensing RX args.
sensing.rx_clock_sourcestring""Default sensing RX clock source override.
sensing.rx_time_sourcestring""Default sensing RX time source override.
sensing.rx_channel_countint1Number of monostatic sensing RX channels; 0 disables sensing RX.
sensing.rx_channels[]object[]see belowPer-channel sensing RX settings.
sensing.range_fft_sizeint1024Range FFT size.
sensing.doppler_fft_sizeint100Doppler FFT size.
sensing.view_range_binsint0Backend RD view width; 0 means full range_fft_size.
sensing.view_doppler_binsint0Backend RD view height; 0 means full doppler_fft_size.
sensing.output_modestringdensedense uses STRD-based full output; compact_mask exports selected RE only.
sensing.on_wire_formatstringcomplex_float32Sensing payload wire format.
sensing.backend_processing_enabledboolfalsePublish backend RD/CFAR/micro-Doppler sidecars when supported.
sensing.symbol_strideint20Default dense-mode STRD applied at startup.
sensing.paired_frame_queue_sizeint64Per-channel RX/TX frame-pairing queue capacity.
sensing.mask_blocksvia resource_preview.mask_blocksoptionalRuntime sensing mask derived from resource preview.
FieldType/UnitTypical ValueDescription
usrp_channelint1USRP RX channel index for this sensing path.
device_argsstring""Per-channel device args override.
clock_sourcestring""Per-channel clock source override.
time_sourcestring""Per-channel time source override.
wire_formatstring""Per-channel wire-format override.
rx_gainfloat / dB30Per-channel RX gain.
alignmentint / samples63Per-channel timing alignment offset.
rx_antennastringRX2RX antenna port, such as RX1, RX2, or TX/RX.
enable_system_delay_estimationboolfalseRun periodic ZC-based system-delay estimation and disable normal sensing for this channel.
enable_sensing_outputboolinherits output switchPer-channel monostatic output switch.
rx_cpu_coreint-1CPU core for the channel RX loop.
processing_cpu_coreint-1CPU core for the channel sensing-processing loop.
PathType/UnitTypical ValueDescription
resource_preview.data_resource_blocks[]object[]optionalPayload / sensing-pilot RE rectangles. Each item has kind, symbol_start, symbol_count, subcarrier_start, and subcarrier_count.
resource_preview.mask_blocks[]object[]optionalCompact sensing RE rectangles with symbol_start, symbol_count, subcarrier_start, and subcarrier_count.
PathType/UnitTypical ValueDescription
measurement.measurement_enableboolfalseEnable internal PRBS measurement traffic.
measurement.measurement_modestringinternal_prbsMeasurement generator/checker mode.
measurement.measurement_run_idstring""Run identifier written into measurement CSV summaries.
measurement.measurement_output_dirstring""Output directory for measurement CSV summaries.
measurement.measurement_payload_bytesint / bytes1024Bytes per generated measurement payload.
measurement.measurement_prbs_seedint0x5ABase seed for deterministic PRBS payload contents.
measurement.measurement_packets_per_pointint1Packets sent for one measurement epoch.
measurement.measurement_max_packets_per_frameint1Max measurement packets pulled per frame; 0 means unlimited.
PathType/UnitTypical ValueDescription
network_output.udp_input_ipstring / IPv40.0.0.0BS downlink payload UDP bind IP.
network_output.udp_input_portint50000BS downlink payload UDP bind port.
network_output.udp_output_ipstring / IPv4127.0.0.1BS decoded uplink UDP destination IP.
network_output.udp_output_portint50003BS decoded uplink UDP destination port.
network_output.udp_egress_pacer_enabledboolfalseEnable queued pacing for decoded UDP egress.
network_output.udp_egress_pacer_target_mbpsfloat / Mbps0Egress pacer target rate; 0 auto-estimates from enqueue rate.
network_output.udp_egress_pacer_queue_packetsint10240Egress pacer queue capacity in datagrams.
network_output.udp_egress_pacer_max_delay_msfloat / ms0Max queued packet age; 0 disables age drops.
network_output.mono_sensing_output_enabledbooltrueEnable monostatic sensing ZMQ output.
network_output.mono_sensing_ipstring / IPv40.0.0.0Monostatic sensing/control ZMQ bind IP.
network_output.mono_sensing_portint8888Monostatic sensing PUB port.
network_output.uplink_channel_ipstring / IPv40.0.0.0BS uplink channel-estimate debug PUB IP.
network_output.uplink_channel_portint12358BS uplink channel-estimate debug PUB port.
network_output.uplink_pdf_ipstring / IPv40.0.0.0BS uplink delay-spectrum debug PUB IP.
network_output.uplink_pdf_portint12359BS uplink delay-spectrum debug PUB port.
network_output.uplink_constellation_ipstring / IPv40.0.0.0BS uplink constellation debug PUB IP.
network_output.uplink_constellation_portint12356BS uplink constellation debug PUB port.
network_output.self_channel_ipstring / IPv40.0.0.0BS self-channel debug PUB IP.
network_output.self_channel_portint12360BS self-channel debug PUB port.
network_output.self_pdf_ipstring / IPv40.0.0.0BS self-delay-spectrum debug PUB IP.
network_output.self_pdf_portint12361BS self-delay-spectrum debug PUB port.
network_output.ertm_debug_ipstring / IPv40.0.0.0eRTM debug PUB IP.
network_output.ertm_debug_portint12362eRTM debug PUB port.
network_output.control_portint9999ZMQ ROUTER port for runtime control.
PathType/UnitTypical ValueDescription
cpu_cores.downlink_cpu_coresint[][1,2,3,-1]BS downlink cores: TX, modulation, LDPC encode, UDP receive.
cpu_cores.uplink_cpu_coresint[][]BS uplink cores: RX ingest, OFDM/LLR processing, LDPC decode + UDP output.
cpu_cores.main_cpu_coreint-1Main-thread CPU core; -1 disables binding.

Profile timing dumps and diagnostic logs are gated by the hierarchical logging filter (not a separate profiling_modules key).

PathType/UnitTypical ValueDescription
logging.default_levelstringwarnGlobal verbosity: off / error / warn / info / debug.
logging.force_errorbooltrueAlways emit unrecoverable Error lines.
logging.timestampsboolfalsePrefix lines with local HH:MM:SS.uuuuuu.
logging.modulesmap{}Per-module overrides. Debug modules inherit parents (e.g. mod, sensing, ertm). Performance modules end with _profiling (e.g. mod_profiling, sensing_profiling) and stay off until set explicitly.