OpenBTS-UMTS
Contents
Introduction
OpenBTS-UMTS is a Linux-based application that uses a software radio to present a UMTS network to any standard 3G UMTS handset or modem.
Supported Radios
The following instructions support the Range Networks SDR1 radio, integration with other software-defined radios is ongoing, see Radio Integration for more information about connecting OpenBTS and OpenBTS-UMTS to different radio interfaces.
Build, Install, Setup, and Run Instructions
To build and run the software, you will want to use the following steps:
Prerequisites
Several prerequisites are required to successfully build and run OpenBTS-UMTS, including:
- Ensure you have a Ubuntu 12.04 i386 (32-bit) server system with a connection to the Internet.
- You may also need available packages such as build-essentials and g++, several other packages are setup when building OpenBTS, see the BuildInstallRun page for more information.
- You will need the ASN1C compiler setup and installed.
- OpenBTS-UMTS needs sipauthserve to register and process handsets coming onto the network. See Building and Installing the Subscriber Registry and sipauthserve for more information.
- Don't forget to add a subscriber, use a SIM with a known IMSI and Ki value.
- Ensure you have launched sipauthserve:
cd /OpenBTS sudo ./sipauthserve &
Obtaining the OpenBTS-UMTS Source Code
OpenBTS-UMTS is available on GitHub, ensure that you have Git version 1.8.2+ installed on your system, and then:
git clone https://github.com/RangeNetworks/OpenBTS-UMTS
Building and Setting Up OpenBTS-UMTS
You are now ready to build OpenBTS-UMTS, from your checked-out OpenBTS-UMTS directory:
sudo ./autogen.sh sudo ./configure sudo ./make sudo ./make install
The OpenBTS-UMTS application will be placed into the /OpenBTS-UMTS directory. Before running it, there are several other support steps necessary. The first is to instantiate some run-time artifacts needed by OpenBTS-UMTS, including the initial database:
sudo mkdir /var/log/OpenBTS-UMTS
Create the configuration database with this command:
sudo sqlite3 /etc/OpenBTS-UMTS/OpenBTS-UMTS.db "OpenBTS-UMTS.example.sql"
Copy sipauthserve's comp128 to run-time directory of OpenBTS-UMTS
sudo cp /OpenBTS-UMTS/comp128 /OpenBTS-UMTS/
You will need to go into the TransceiverRAD1 directory and run the following script right before running the OpenBTS-UMTS binary in the apps directory (OpenBTS-UMTS/apps/):
sudo ./clkit_61_44mhz.sh
You will need to setup forwarding in iptables to properly forward data between your devices, your host machine, and the Internet. Create a file called /etc/OpenBTS-UMTS/iptables.rules and insert the following:
*nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] COMMIT
Then, edit yoru Ubuntu network settings to include the rules script:
sudo /etc/network/interfaces
Insert into your Internet-facing network interface:
pre-up iptables-restore < /etc/OpenBTS-UMTS/iptables.rules
Running OpenBTS-UMTS
After successfully building and configuring, you are ready to launch OpenBTS-UMTS:
cd /OpenBTS-UMTS sudo ./OpenBTS-UMTS
Several useful commands are available for debugging the packet-switched OpenBTS-UMTS application:
sgsn list
FAQ
Regarding troubleshoot SDR1, YMMV
My data stream is always dropping, what can I do?
Try increasing the transceiver buffer size. The default is 1e6, but this can be increased depending on your available hardware.
config UMTS.RLC.TransceiverBufferSize 5000000 rawconfig UMTS.RLC.TransceiverBufferSize 100000000