1xBTS 1xBTS

Configuration Reference

Run the integrated runtime with a config directory:

cargo run --release -p cdma-nib -- --config-dir config

Runtime Flags

FlagPurpose
--config-dir <DIR>Directory containing per-node JSON config files (CDMA_CONFIG_DIR env fallback)
--radio-config <FILE>Override the radio config embedded in bts.json
--null-radioRun without SDR hardware (TX drops, no RX)
--a1-addr <ADDR>MSC A1 signaling listen address (default 127.0.0.1:17013)
--msc-mgmt-addr <ADDR>MSC management gRPC listen address (default 127.0.0.1:17017)

bts.json

BTS radio and PHY configuration.

Top-level

FieldTypeDefaultDescription
pilot_offsetinteger0Pilot PN offset in chips (0–511)

overhead

Cell identity and system parameters broadcast on the paging channel.

FieldTypeDefaultDescription
sidinteger1System ID
nidinteger1Network ID
base_idinteger1Base station ID
reg_zoneinteger0Registration zone
total_zonesinteger1Total number of registration zones
zone_timerinteger0Zone timer index
max_slot_cycle_indexinteger0Maximum slot cycle index
page_chaninteger1Paging channel number (1–7)
config_seqinteger23Configuration sequence number
acc_config_seqinteger1Access configuration sequence number
power_up_regbooleantrueRequire power-up registration
parameter_regbooleanfalseRequire parameter-change registration
auth_modeinteger0Authentication mode (0–3)
p_revinteger6Protocol revision
min_p_revinteger3Minimum protocol revision accepted
lp_secinteger0Leap seconds offset
ltm_offinteger0Local time offset from UTC (30-min units)
dayltinteger0Daylight saving time indicator
pratinteger0Paging rate
cdma_freqinteger384CDMA channel number (CDMA frequency assignment)
ext_cdma_freqinteger0Extended CDMA channel number

runtime

PHY/MAC/LAC runtime settings.

FieldTypeDefaultDescription
spreading_ratestring"sr1"Spreading rate: "sr1" or "sr3"
orthogonal_code_lengthinteger64Walsh code length
chip_rate_hzinteger1228800Chip rate in Hz
tx_sample_rate_hzinteger4915200TX SDR sample rate (4× chip rate for SR1)
tx_bandwidth_hzinteger3000000TX RF bandwidth in Hz
tx_center_frequency_hzinteger881520000TX center frequency in Hz
tx_lo_offset_hzinteger0TX LO hardware offset in Hz
tx_digital_backofffloat0.15TX amplitude scale factor (0.0–1.0)
block_size_chipsinteger64Internal processing block size in chips
tx_batch_chipsinteger3072TX batch size in chips (2× PCG = 3072 for SR1)
short_code_length_chipsinteger32768Short PN code period in chips
max_tx_lookahead_msinteger5Maximum TX lookahead in milliseconds

runtime.downlink.pilot

FieldTypeDefaultDescription
walsh_codeinteger0Walsh code for pilot channel (always W0)
gainfloat1.0Pilot channel amplitude gain

runtime.downlink.sync

FieldTypeDefaultDescription
walsh_codeinteger32Walsh code for sync channel (always W32)
walsh_repetitioninteger4Walsh repetition factor
data_rate_bpsinteger1200Sync channel data rate
symbol_repeatinteger2Symbol repetition count
interleaver.block_sizeinteger128Interleaver block size
interleaver.minteger7Interleaver M parameter
interleaver.jinteger1Interleaver J parameter
gainfloat0.6Sync channel amplitude gain
availability_max_size_bitsinteger32Max bits in sync availability buffer

runtime.downlink.paging

FieldTypeDefaultDescription
walsh_codeinteger1Walsh code for paging channel (W1)
paging_channel_numberinteger1Paging channel number (1–7)
data_rate_bpsinteger9600Paging channel data rate
interleaver.block_sizeinteger384Interleaver block size
interleaver.minteger6Interleaver M parameter
interleaver.jinteger6Interleaver J parameter
gainfloat0.8Paging channel amplitude gain
availability_max_size_bitsinteger96Max bits in paging availability buffer

runtime.downlink.paging.message_defaults

Overhead messages broadcast on the paging channel. schedule controls which messages are transmitted and in what order.

extended_system_parameters — IMSI defaults and soft-handoff thresholds:

FieldTypeDefaultDescription
mccstring"310"Mobile country code (3-digit string)
imsi_11_12string"55"IMSI digits 11–12 (2-digit string)
pref_msid_typeinteger3Preferred mobile ID type
p_revinteger6Protocol revision
min_p_revinteger6Minimum protocol revision
soft_slopeinteger16Soft handoff slope
add_interceptinteger8T_ADD intercept
drop_interceptinteger6T_DROP intercept
packet_zone_idinteger0Packet zone ID
use_tmsibooleanfalseTMSI assignment enabled
delete_for_tmsibooleanfalseDelete TMSI on reassignment

system_parameters — core cell parameters:

FieldTypeDefaultDescription
home_regbooleantrueHome registration enabled
for_sid_regbooleantrueForeign SID registration enabled
for_nid_regbooleantrueForeign NID registration enabled
power_down_regbooleanfalsePower-down registration enabled
reg_prdinteger29Registration period (timer index)
base_latintegerBase station latitude (in units per spec)
base_longintegerBase station longitude
reg_distinteger0Registration distance
srch_win_ainteger6Active set search window
srch_win_ninteger8Neighbor set search window
srch_win_rinteger9Remaining set search window
t_addinteger18Pilot T_ADD threshold (0.5 dB units)
t_dropinteger28Pilot T_DROP threshold
t_compinteger8T_COMP comparison threshold
t_tdropinteger3T_TDROP timer index
pwr_rep_threshinteger2Power report threshold
pwr_rep_framesinteger9Power report frame count
pwr_thresh_enablebooleantrueThreshold-based power reporting
pwr_period_enablebooleantruePeriodic power reporting
pwr_rep_delayinteger2Power report delay

access_parameters — reverse access channel configuration:

FieldTypeDefaultDescription
acc_chaninteger0Access channel number
nom_pwrinteger0Nominal TX power adjustment
init_pwrinteger0Initial power offset
pwr_stepinteger3Power step size (dB)
num_stepinteger3Number of power steps per probe
max_cap_szinteger4Maximum access capsule size
pam_szinteger10Preamble length
max_req_seqinteger3Maximum request sequences
max_rsp_seqinteger3Maximum response sequences
acc_tmointeger3Access timeout
probe_bkoffinteger0Probe backoff
bkoffinteger0Sequence backoff

Reverse link configuration.

FieldTypeDefaultDescription
access_channels_per_paging_channelinteger1R-ACH channels per paging channel
access_channel_numbersarray[0]Access channel number list
access_channel_rate_bpsinteger4800Access channel data rate
access_frame_msinteger20Access frame duration in ms
require_r_csch_f_csch_arq_ackbooleantrueRequire ACK on access channel messages
arq_ack_timeout_msinteger400ARQ ACK timeout (T1m)
reverse_access_finger_pool_sizeinteger8Number of RAKE fingers for access channel
global_finger_pool_sizeinteger1Global RAKE finger pool size

runtime.overhead

Overhead channel scheduling.

FieldTypeDefaultDescription
fragment_availability_interval_chipsinteger32768Paging fragment scheduling interval
sync_superframe_interval_chipsinteger98304Sync superframe interval
t1b_msinteger1280T1b timer period in ms
require_spmbooleantrueRequire System Parameters Message
require_apmbooleantrueRequire Access Parameters Message
require_cclmbooleantrueRequire CDMA Channel List Message
require_espmbooleantrueRequire Extended System Parameters Message

abis

Abis TCP signaling address (BTS side).

FieldTypeDefaultDescription
bind_addrstring"127.0.0.1:5604"Local TCP bind address for the BTS Abis signaling listener

bearer

Abis UDP bearer addressing (BTS side).

FieldTypeDefaultDescription
bind_addrstring"127.0.0.1:17014"Local UDP bind address
remote_addrstring"127.0.0.1:17022"BSC bearer address

bsc.json

BSC radio access control and paging policy.

traffic_assignment

FieldTypeDefaultDescription
supported_for_rcsarray[1, 3]Supported forward radio configurations
supported_rev_rcsarray[1, 3]Supported reverse radio configurations
preferred_pairsarray[{for_rc:3, rev_rc:3}]Preferred forward/reverse RC pairs, tried in order
idle_timeout_sinteger30Traffic channel idle timeout before release
rev_fch_gating_modebooleanfalseReverse FCH gating mode

traffic_retry

FieldTypeDefaultDescription
ack_timeout_msinteger400Traffic assignment ACK timeout (T1m)
max_retriesinteger3Maximum retransmissions

paging_retry

FieldTypeDefaultDescription
ack_timeout_msinteger10000Paging ACK timeout in ms
max_retriesinteger0Maximum paging retries

abis_timers

BSC-side Abis timers per A.S0003-A §8 Table 8-1. Granularity is 100 ms; ranges are 0–1000 ms except tsetupb_ms (0–500).

FieldTypeDefaultDescription
tsetupb_msinteger100§8.2 — Abis BTS Setup timer (range 0–500)
tchanstatb_msinteger500§8.3 — Abis Traffic Channel Status timer
tdrptgtb_msinteger500§8.5 — Abis BTS Release Ack timer
tbstreqb_msinteger500§8.6 — Abis Burst Response timer

abis

Abis TCP signaling address (BSC side).

FieldTypeDefaultDescription
remote_addrstring"127.0.0.1:5604"BTS Abis signaling endpoint the BSC connects to

bearer

Abis UDP bearer addressing (BSC side).

FieldTypeDefaultDescription
bind_addrstring"127.0.0.1:17022"Local UDP bind address
remote_addrstring"127.0.0.1:17014"BTS bearer address

Other top-level fields

FieldTypeDefaultDescription
mobile_idle_timeout_sinteger3600Evict idle registered mobiles with no access activity and no active traffic channel after this many seconds. Set to 0 to disable.
voice_bearer_bind_ipstring"127.0.0.1"Local IP that voice bearer UDP sockets bind to. Set to the host’s network-facing IP when BSC and voice gateway are on separate hosts.
node_idstring"bsc"Stable identifier for this BSC node, written to the HLR on every registration and included in management events. Must be unique across BSC instances.

msc.json

MSC call control and voice policy.

Top-level

FieldTypeDefaultDescription
a1_listen_addrstring"127.0.0.1:17013"A1 signaling listen address
mgmt_grpc_addrstring"127.0.0.1:17017"MSC management gRPC listen address
a1_peersarray[]Static A1 peer list (peer_id + addr)

voice

FieldTypeDefaultDescription
supported_service_optionsarray[3, 68, 70]Accepted EVRC service options. Shipped msc.json widens this to [3, 17, 68, 73].
wav_filestringnullWAV audio file path for fallback playback
media_ringback_enabledbooleanfalseGenerate ringback tone in media path
media_ringback_typestring"nanp"Ringback tone type: "nanp" or "etsi"
answer_delay_msinteger10000Delay before automatic answer in local simulation paths
release_timeout_msinteger5000Call release timeout in ms
service_connect_timeout_msinteger20000Service connect timeout in ms
voice_bearer_bind_ipstring"127.0.0.1"Local IP that voice bearer UDP sockets bind to. Set to the host’s network-facing IP when MSC and voice gateway run on separate hosts.

voice.gateway

FieldTypeDefaultDescription
enabledbooleanfalseEnable external SIP voice gateway
endpointstring"http://127.0.0.1:17015"Voice gateway gRPC endpoint
fallback_to_wavbooleantruePlay WAV audio if gateway is unreachable

welcome_sms

FieldTypeDefaultDescription
enabledbooleanfalseEnable welcome SMS on registration
textstring"Welcome to 1xBTS!"SMS body text
originating_numberstring"0000"Originating number shown to subscriber
inactive_days_thresholdinteger30Days of inactivity before re-sending

pdsn.json

Packet data transport configuration.

Top-level

FieldTypeDefaultDescription
packet_grpc_listen_addrstring"127.0.0.1:17021"Packet service gRPC listen address

packet

FieldTypeDefaultDescription
transportstring"tun"Transport mode: "tun", "fou", or "fou_tcp"
fou_remotestringnullFOU or FOU-TCP remote endpoint (host:port)
fou_local_portinteger17011Local FOU receive port
tun_nat_interfacestringnullNetwork interface name for TUN NAT (required when transport="tun")

Transport modes:

  • tun — kernel TUN device; packets routed via NAT on tun_nat_interface
  • fou — FOU (Foo-over-UDP) tunnel; direct UDP encapsulation
  • fou_tcp — FOU with TCP relay (for NAT traversal); connects to fou_remote

hlr.json

HLR subscriber database configuration.

FieldTypeDefaultDescription
grpc_listen_addrstring"127.0.0.1:17019"HLR service gRPC listen address
postgres_dsnstring | nullnullPostgreSQL connection string. When unset, HLR runs without persistence. Shipped sample: "postgres://1xbts:1xbts@localhost:45432/1xbts".

smsc.json

SMSC message store configuration.

FieldTypeDefaultDescription
grpc_listen_addrstring"127.0.0.1:17020"SMSC service gRPC listen address
postgres_dsnstring | nullnullPostgreSQL connection string. When unset, SMSC runs without persistence. Shipped sample: "postgres://1xbts:1xbts@localhost:45432/1xbts".

management.json

Management gRPC facade configuration.

FieldTypeDefaultDescription
grpc_listen_addrstring"127.0.0.1:17016"Management gRPC listen address
tokio_consolebooleanfalseEnable Tokio console on port 17018
iq_capture_dirstring"capture-iq-wav"Directory for IQ capture WAV output
mtlsobjectnullmTLS config (see below); omit for plaintext

mtls (optional)

FieldTypeDescription
cert_pathstringPath to PEM-encoded server certificate
key_pathstringPath to PEM-encoded server private key
client_ca_pathstringPath to PEM-encoded CA bundle for client certificate verification

pcf.json

PCF-side packet service client configuration.

FieldTypeDefaultDescription
packet_grpc_endpointstring"http://127.0.0.1:17021"Packet service endpoint consumed by the BSC-facing PCF client

Real A8/A9 network transport is still planned work; this gRPC endpoint is the current local service boundary for packet sessions.


Radio Configs

Radio config files are standalone JSON passed via --radio-config. They are independent of the config/ directory.

Common Fields

FieldTypeDescription
kindstringBackend: "uhd", "lime", "blade_rf", "soapy"
devicestringDevice selector string (empty = first found)
channelintegerRF channel index
tx_antennastringTX antenna port name
tx_gain_dbfloatTX gain in dB
rx_antennastringRX antenna port name
rx_gain_dbfloatRX gain in dB
rx_freq_hzintegerRX center frequency in Hz
rx_sample_rate_hzintegerRX sample rate (must be 4× chip rate = 4915200 for SR1)
rx_bandwidth_hzintegerRX RF bandwidth in Hz
rx_sample_delayintegerRX timing compensation in samples
rx_batch_pcgsintegerRX batch size in PCGs (default: 2)

UHD (kind: "uhd")

{
  "kind": "uhd",
  "device": "type=b200,num_recv_frames=1024,num_send_frames=1024",
  "channel": 0,
  "antenna": "TX/RX",
  "tx_gain_db": 65.0,
  "rx_antenna": "RX2",
  "rx_gain_db": 50.0,
  "rx_freq_hz": 836520000,
  "rx_sample_rate_hz": 4915200,
  "rx_bandwidth_hz": 5000000,
  "rx_sample_delay": 50
}

LimeSDR Native (kind: "lime")

{
  "kind": "lime",
  "device": "",
  "channel": 0,
  "tx_antenna": "BAND1",
  "tx_gain_db": 60,
  "rx_antenna": "LNAW",
  "rx_gain_db": 20,
  "rx_freq_hz": 836520000,
  "rx_sample_rate_hz": 4915200,
  "rx_bandwidth_hz": 5000000,
  "rx_sample_delay": 97
}

rx_sample_delay compensates for LimeSDR hardware timing offset in the receive path.

bladeRF Native (kind: "blade_rf")

{
  "kind": "blade_rf",
  "device": "",
  "channel": 0,
  "fpga_path": null,
  "tx_antenna": "TXA",
  "rx_antenna": "B_BALANCED",
  "tx_gain_db": 50,
  "rx_gain_db": 40,
  "rx_freq_hz": 836520000,
  "rx_sample_rate_hz": 4915200,
  "rx_bandwidth_hz": 2500000,
  "rx_reference_dbm": null,
  "rx_sample_delay": 0,
  "rx_batch_pcgs": 2,
  "num_buffers": 16,
  "buffer_size": 8192,
  "num_transfers": 8,
  "stream_timeout_ms": 3500
}
FieldDescription
fpga_pathPath to .rbf FPGA image; null uses libbladeRF host auto-load (~/.config/Nuand/bladeRF/)
rx_reference_dbmOptional RX reference power level in dBm
num_buffersStream buffer count
buffer_sizeSamples per buffer
num_transfersConcurrent USB transfers
stream_timeout_msStream transfer timeout

SoapySDR (kind: "soapy")

{
  "kind": "soapy",
  "device": "",
  "channel": 0,
  "antenna": "TX/RX",
  "tx_gain_db": 60.0,
  "rx_antenna": "RX2",
  "rx_gain_db": 50.0,
  "rx_freq_hz": 836520000,
  "rx_sample_rate_hz": 4915200,
  "rx_bandwidth_hz": 5000000,
  "rx_sample_delay": 0,
  "rx_batch_pcgs": 2
}

Default Ports

PortProtocolOwnerPurpose
5604TCPBTS/BSCAbis signaling
17013TCPMSCA1 signaling listener
17014UDPBTSAbis bearer (BTS side)
17015gRPCVoice gatewayMSC-controlled SIP/RTP bridge
17016gRPCManagement facadeNode-scoped APIs and compatibility APIs
17017gRPCMSC managementCall initiation, call list, SMS
17018TCPTokio consoleOptional async diagnostics
17019gRPCHLR serviceSubscriber and registration persistence
17020gRPCSMSC serviceSMS submission and delivery persistence
17021gRPCPacket servicePacket sessions and packet service RPCs
17022UDPBSCAbis bearer (BSC side)
17010UDPPDSNFOU remote default
17011UDPPDSNFOU local default
17012TCPFOU-NATFOU-TCP relay (Docker service)
45432TCPPostgreSQLHLR and SMSC (Docker service)