1xBTS 1xBTS

Carrier Profiles

Carrier profiles let you switch the network identity and RF channel for the devices you want to use without maintaining a separate copy of bts.json.

DevicesWhat to runFinal local settings
VerizonOmit --bts-profileconfig/bts.local.json
SprintAdd --bts-profile sprintconfig/bts.sprint.local.json

Verizon (Default)

The stock config/bts.json uses the Verizon profile. Start 1xBTS normally:

Terminal window
cargo run --release -p cdma-nib -- \
--config-dir config \
--radio-config config/radio_bladerf_micro2.json

Your existing config/bts.local.json settings are applied on top of the stock configuration.

Sprint

Add --bts-profile sprint when starting 1xBTS:

Terminal window
cargo run --release -p cdma-nib -- \
--config-dir config \
--bts-profile sprint \
--radio-config config/radio_bladerf_micro2.json

The included Sprint profile selects the Sprint Band Class 1 carrier and network identity and enables its adjacent EV-DO carrier. Settings unrelated to the profile continue to come from your normal configuration.

SettingIncluded value
1x carrierBand Class 1, channel 50
Network identitySID 4107, any NID
EV-DO carrierBand Class 1, channel 75
EV-DO subnet00840AC0/26

The two carriers are 1.25 MHz apart, the normal adjacent-carrier spacing for Band Class 1.

Omit --bts-profile the next time you start 1xBTS to return to the stock Verizon settings.

Adjust Sprint Locally

The Sprint profile intentionally wins conflicting channel and network values from bts.local.json. Put adjustments that should win while Sprint is selected in config/bts.sprint.local.json:

{
"pilot_offset": 32,
"evdo": {
"gain": 0.8
}
}

Both local files are optional and gitignored. The runtime applies the BTS settings in this order:

  1. Stock bts.json (Verizon)
  2. General bts.local.json
  3. Selected bts.sprint.json
  4. Sprint-specific bts.sprint.local.json
  5. Radio selected by --radio-config

Use --bts-config <FILE> only when you want to replace bts.json with a complete custom base configuration. A selected carrier profile is still applied after that file and its sibling local override.

Create Another Profile

To keep settings for another carrier or group of phones, create a file named config/bts.<name>.json and select it by name:

Terminal window
cargo run --release -p cdma-nib -- \
--config-dir config \
--bts-profile my-carrier \
--radio-config config/radio_bladerf_micro2.json

This loads config/bts.my-carrier.json and then the optional config/bts.my-carrier.local.json. Profile names may contain lowercase letters, digits, and hyphens.

Match a Profile to the Device PRL

A carrier profile must match the systems and channels in the device’s PRL. If the phone gets 1x service but never starts EV-DO, open its PRL in the 1xBTS web interface and check that:

  • the 1x record includes the profile’s SID and channel
  • its paired EV-DO record includes the profile’s EV-DO channel
  • the EV-DO subnet matches the profile’s evdo.overhead.sector_id and evdo.overhead.subnet_mask

Keep device- or PRL-specific changes in the profile’s local override, such as bts.sprint.local.json or bts.my-carrier.local.json.