[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-11305":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":21,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":28,"discoverSource":29},11305,"1xbts","chrismoos\u002F1xbts","chrismoos","CDMA2000 Open Source Cellular Network ",null,"Rust",163,20,2,5,0,3,54,9,56.87,"Apache License 2.0",false,"main",true,[],"2026-06-12 04:00:54","# 1xBTS\n\n[![Website](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fwebsite-1xbts.org-7A5AF8.svg)](https:\u002F\u002F1xbts.org)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-1xbts.org%2Fdocs-7A5AF8.svg)](https:\u002F\u002F1xbts.org\u002Fdocs)\n[![CI](https:\u002F\u002Fgithub.com\u002Fchrismoos\u002F1xbts\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fchrismoos\u002F1xbts\u002Factions\u002Fworkflows\u002Fci.yml)\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache--2.0-blue.svg)](LICENSE)\n[![Rust](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Frust-2024-orange.svg)](Cargo.toml)\n\n1xBTS is an experimental CDMA2000 1x base station and core-network stack\nimplemented primarily in Rust. It includes BTS, BSC, MSC, HLR, SMSC, packet\ndata, voice, SDR radio backends, and a web dashboard for development and\noperation.\n\nThis project is intended for research, interoperability testing, and lab use.\nOperate RF hardware only where you are authorized to transmit. You have been warned.\n\n\u003Ca href=\"docs\u002Fimages\u002Fscreenshot.png\">\n  \u003Cimg src=\"docs\u002Fimages\u002Fscreenshot.png\" alt=\"1xBTS dashboard\" width=\"720\">\n\u003C\u002Fa>\n\n## Why 1xBTS\n\nWhile CDMA2000 was a major technology in the US and some other places around the world, \nit was never as ubiquitious as other standards like GSM. Up until now there has never been\na way to revive old CDMA2000 devices. I started this project to change that.\n\n## Status\n\n1xBTS is under active development. The current stack can run as a\nnetwork-in-a-box process for local integration, or split BTS\u002FBSC operation over\nthe included Abis transport. Support varies by handset, radio backend, channel\nconfiguration, and service option.\n\nCurrently many things are working (SMS, Voice, Packet Data) and while they work\nthere is still much work to be done for production hardening. It still is a lot of fun\nthough.\n\n## Architecture\n\nThe Rust workspace keeps first-party crates flat under `crates\u002F` and external\nintegration wrappers under `external\u002F`:\n\n- `crates\u002F` - CDMA protocol, RAN, core-network, packet, voice, and tooling crates.\n- `external\u002F` - SDR, SIP\u002Fnative, and other outside-library wrapper crates.\n- `1xbts-web` - Next.js dashboard backed by the management gRPC APIs.\n- `proto` - protobuf service definitions.\n\nFull documentation lives at [1xbts.org\u002Fdocs](https:\u002F\u002F1xbts.org\u002Fdocs).\n\n### Network Nodes\n\nThe stack implements the full 3GPP2 1x reference architecture, with each node\nrunning as its own process and communicating over standard reference points:\n\n- **BTS** (`cdma-bts`) - air-interface PHY\u002FMAC, SDR-driven radio.\n- **BSC** (`cdma-bsc`) - radio resource management; speaks Abis to the BTS.\n- **MSC** (`cdma-msc`) - circuit-switched core; speaks A1 to the BSC.\n- **HLR** (`cdma-hlr`) - subscriber database (PostgreSQL-backed).\n- **SMSC** (`cdma-smsc`) - short message service center.\n- **PCF** (`cdma-pcf`) - packet control function; A8\u002FA9 to BSC, A10\u002FA11 to PDSN.\n- **PDSN** (`cdma-pdsn`) - packet data serving node, FoU\u002FTUN packet path.\n- **voice-gw** (`cdma-voice-gw`) - SIP gateway for outbound voice calls (PSTN origination). See [voice gateway setup](https:\u002F\u002F1xbts.org\u002Fdocs\u002Fguides\u002Fvoice-gateway\u002F) for trunk + STUN configuration.\n- **NIB** (`cdma-nib`) - network-in-a-box launcher that runs the full stack in one process.\n\n## Prerequisites\n\nAt minimum:\n\n- Rust toolchain with Cargo.\n- PostgreSQL for HLR\u002FSMSC state (`docker compose up -d postgres` starts a local `1xbts` database on port 45432).\n- `protoc` for protobuf code generation (Ubuntu\u002FDebian: `protobuf-compiler`).\n- `pkg-config` and a C compiler for native bindings.\n- `libclang` for bindgen (Ubuntu\u002FDebian: `libclang-dev`).\n\nOptional radio and voice dependencies depend on enabled features and hardware:\nUHD\u002FUSRP, LimeSuite, SoapySDR, bladeRF, and Baresip libre\u002Fre.\n\n### Ubuntu \u002F Debian\n\nCommon packages (always required):\n\n```sh\nsudo apt-get install -y \\\n    build-essential pkg-config protobuf-compiler libssl-dev \\\n    libclang-dev libre-dev\n```\n\nThen add the packages for whichever SDR backend(s) you plan to enable:\n\n**bladeRF** (`--features bladerf-backend`):\n\n```sh\nsudo apt-get install -y libbladerf-dev\n```\n\n**UHD \u002F USRP** (`--features uhd-backend`):\n\n```sh\nsudo apt-get install -y libuhd-dev\n```\n\n**LimeSDR** (`--features lime-backend`):\n\n```sh\nsudo apt-get install -y liblimesuite-dev\n```\n\n### Tested SDR Hardware\n\n- bladeRF Micro 2.0\n- Ettus USRP B210 (UHD)\n- LimeSDR Mini v2\n\nOther SoapySDR-compatible devices may work but are not regularly exercised.\n\n### Tested Handsets\n\n- Apple iPhone (CDMA)\n- Motorola V60s\n- Qualcomm QCP-860\n- Nokia Lumia 735\n- Samsung SCH-U340\n- BlackBerry 8830\n\n## Quick Start\n\nClone, bring up the support services, and run the network-in-a-box:\n\n```sh\ngit clone https:\u002F\u002Fgithub.com\u002Fchrismoos\u002F1xbts.git\ncd 1xbts\n\n# Linux:\nsudo modprobe fou ipip   # load kernel modules required by fou-nat\ndocker compose up -d --build\n\n# macOS (uses bridge networking + host.docker.internal):\ndocker compose -f docker-compose.yml -f docker-compose.macos.yml up -d --build\n\n# postgres :45432 · dashboard :3000 · fou-nat :17012 · speed test :5656\ncargo run --release -p cdma-nib --no-default-features --features bladerf-backend -- \\\n    --config-dir config \\\n    --radio-config config\u002Fradio_bladerf_micro2.json\n```\n\nDefault service ports are listed in `docs\u002FPORTS.md`. If port 3000 is already in\nuse, set `ONEXBTS_WEB_PORT`, for example `ONEXBTS_WEB_PORT=3001 docker compose up 1xbts-web`.\nUse `--build` after pulling repo updates so Compose rebuilds images that copy\nlocal files, such as `fou-nat` and `speedtest`.\nThe packet-data speed test is available on the host at `http:\u002F\u002Flocalhost:5656`\nby default, and from mobile packet-data clients at `http:\u002F\u002Fspeed\u002F` or\n`http:\u002F\u002Fspeed.local.1xbts.org\u002F`.\n\nTo customize a config without editing the checked-in defaults, drop a sibling\n`\u003Cname>.local.json` next to it (e.g. `config\u002Fbts.local.json`). The loader\ndeep-merges the local file on top of the base before validation. `*.local.json`\nis gitignored. See the [Configuration guide](https:\u002F\u002F1xbts.org\u002Fdocs\u002Fgetting-started\u002Fconfiguration\u002F#local-overrides).\nPacket-data DNS advertised to mobiles is configured in `config\u002Fpdsn.json` under\n`packet.primary_dns` and `packet.secondary_dns`; the checked-in defaults point to\nthe FOU gateway resolver so `speed` and `speed.local.1xbts.org` resolve locally.\n\n### SDR Backend Features\n\nEnable exactly one SDR backend at build time:\n\n| Ubuntu package     | Hardware            | Cargo feature                |\n| ------------------ | ------------------- | ---------------------------- |\n| `libbladerf-dev`   | bladeRF devices     | `--features bladerf-backend` |\n| `libuhd-dev`       | USRP B200\u002FB210      | `--features uhd-backend`     |\n| `liblimesuite-dev` | LimeSDR devices     | `--features lime-backend`    |\n\n### Tests\n\nRun focused tests while developing:\n\n```sh\ncargo test -p cdma-bts\ncargo test -p cdma-bsc\n```\n\n### Web Dashboard\n\nThe dashboard ships in `1xbts-web` (Next.js) and is started by `docker compose up`\nabove. To run it directly:\n\n```sh\ncd 1xbts-web\nnpm install\nnpm run dev\n```\n\n## Support\n\n- **GitHub Discussions** — [github.com\u002Fchrismoos\u002F1xbts\u002Fdiscussions](https:\u002F\u002Fgithub.com\u002Fchrismoos\u002F1xbts\u002Fdiscussions) for questions, ideas, and show-and-tell.\n- **GitHub Issues** — [github.com\u002Fchrismoos\u002F1xbts\u002Fissues](https:\u002F\u002Fgithub.com\u002Fchrismoos\u002F1xbts\u002Fissues) for bug reports and feature requests.\n- **IRC** — `#1xbts` on [Libera.Chat](https:\u002F\u002Flibera.chat) for live chat.\n\n## License\n\nThe main 1xBTS workspace is licensed under Apache-2.0. The SDR wrapper crates\nunder `external\u002F` (`bladerf`, `bladerf-sys`, `limesuite`, `limesuite-sys`, `uhd`,\n`uhd-sys`) are dual-licensed `MIT OR Apache-2.0`; see the individual `Cargo.toml`\nfiles for package-level license metadata.\n\nThe optional native Baresip libre\u002Fre dependency used by the SIP voice gateway is\nprovided by the system and is distributed upstream under BSD-3-Clause terms.\n","1xBTS 是一个开源的CDMA2000 1x基站和核心网络栈项目，主要使用Rust语言实现。它提供了包括BTS、BSC、MSC、HLR、SMSC在内的多种网络组件，支持语音通话、短信服务以及数据包传输等功能，并且集成了SDR无线电后端及用于开发与操作的Web仪表盘。该项目特别适合于研究、互操作性测试以及实验室环境下的使用。需要注意的是，在运行射频硬件时必须确保拥有合法的传输许可。","2026-06-11 03:31:37","CREATED_QUERY"]