1xBTS

CDMA2000 1x and EV-DO from Base Station to Core Network.

A software-defined radio on one end, real handsets and data devices on the other.

Quick start
$ git clone https://github.com/chrismoos/1xbts.git
$ cd 1xbts
$ sudo modprobe fou ipip
$ docker compose up -d --build
$ cargo run --release -p cdma-nib \
    --no-default-features --features uhd-backend -- \
    --config-dir config \
    --radio-config config/radio_uhd_b210_native.json
When it boots, open the dashboard at localhost:3000. Swap the backend flag for your radio — see hardware.

Capabilities

Voice

QCELP and EVRC calls over RC1/RC2/RC3 traffic channels, with a SIP gateway to the PSTN.

Messaging

Mobile-originated and mobile-terminated SMS through the SMSC.

Packet data

1x IP connectivity via Service Option 33 (and SO7) with PPP/RLP and optional F-SCH.

EV-DO Rev 0/Rev A

Dedicated HRPD data carrier with UATI sessions, A8/A9 to PCF, and tested Rev A data at 2.6 Mbps down / 1.4 Mbps up.

Air interface

SR1 at 1.2288 Mcps over a 1.25 MHz channel — Walsh spreading, Viterbi decode, 800 Hz closed-loop power control.

Provisioning

Over-the-air NAM, PRL, and MMS via OTASP *228, straight from the handset.

Femtocell

Connect a compatible CDMA2000 femtocell over Ethernet, including Airave 2.5. Setup guide →

Deployment

Run the full stack on one host, or spread cells and base stations over Abis and A1.

Architecture

Built around the 3GPP2 1x and HRPD reference points (Abis, A1, A8/A9, A10/A11)

1x radio access
HandsetCDMA2000 1x
1x air↓
cdma-btsBTS1x PHY/MAC · SDR radio
Abis↓
cdma-bscBSCVoice, SMS, SO7/SO33
EV-DO radio access
AT / modemEV-DO Rev 0/Rev A
HRPD air↓
cdma-btsBTS + HRPD ANHRPD PHY · UATI, streams, traffic
↓
1x circuit services
cdma-bsc1x control edgeA1/A2p call control
A1/A2p↓
cdma-mscMSCCircuit-switched core
cdma-hlrHLRSubscriber + HRPD identity DB
cdma-smscSMSCShort messages
SIP↓
cdma-voice-gwvoice-gwPSTN
1x packet path
cdma-bsc1x data edgeSO7/SO33 over 1x TCH
packet client↓
cdma-pcfPCFShared 1x + EV-DO control
A10/A11↓
cdma-pdsnPDSNShared PPP/IP service
EV-DO packet path
cdma-btsHRPD edgeAN in the BTS, Default Packet Application
A8/A9↓
cdma-pcfPCFShared 1x + EV-DO control
A10/A11↓
cdma-pdsnPDSNShared PPP/IP service
↓
IPInternet
One MSC serves many base stations, each a BSC with many cells. The cdma-nib launcher runs a complete single-cell network on one host, with a few sidecar containers for support services like Postgres and the dashboard.

Implemented

✓Voice — QCELP and EVRC, mobile-originated & -terminated calls
✓SMS — MO & MT through the SMSC
✓1x packet data — SO33 / SO7, PPP, RLP, F-SCH
✓EV-DO / HRPD Rev 0/Rev A — UATI sessions and packet data
✓RC1, RC2 & RC3 traffic channels
✓800 Hz closed-loop power control
✓OTASP *228 — NAM, PRL, MMS
✓Node split over Abis, A1, A8/A9, A10/A11
✓SIP voice gateway to the PSTN
✓HLR & SMSC persistence (PostgreSQL)
✓Web dashboard over management gRPC

The core CDMA2000 1x feature set is implemented end to end, and EV-DO Rev 0/Rev A now carries packet data on a dedicated HRPD carrier. Work continues on production hardening, wider radio coverage, and broader handset compatibility.

Contribute

1xBTS is open source under Apache-2.0. Contributions are welcome.