- Development Environment
- Selecting a Branch or Tag
These instructions are admittedly focused around a very specific collection of hardware and software, namely those that are used in the products that Range Networks ships. We are working to change this so instructions are provided for a wide variety of Linux distributions and architectures as well as for SDR hardware from different vendors.
Click here to view more complete documentation regarding hardware setups.
Use this section to setup a development environment that is identical to those used internally at Range Networks. We are working to support other development environments setups in the future but this one is guaranteed to work.
Install Base Operating System
Note: The AMD64 architecture is now building correctly on all packages but has not yet undergone functional testing. If you are interested in trying it out, please use a 64-bit Ubuntu flavor and then select the "master" branch when building below.
If you're already running Ubuntu Desktop or Server 32-bit 16.04, you can skip this section.
- download Ubuntu Desktop 32-bit 16.04.6 from here
- boot the .iso on a fresh machine (VMWare virtual machines are also often used)
- select "English" for language
- press F4
- select "Install a minimal system" from install type
- select "Install Ubuntu Server" from main menu
- select your language
- select your country
- use keyboard layout auto-detection or select the country and layout
- enter a hostname
- enter "openbts" for "full name for the new user"
- enter "openbts" for "username for your account"
- enter and confirm a password for the openbts account
- select "no" to "Encrypt your home directory?"
- select "Guided - Use Entire Disk" for "Partitioning method"
- select/confirm the disk you'd like to use
- select "yes" to "Write the changes to disks?"
- enter nothing for "HTTP Proxy" and select continue
- select "No automatic updates"
- toggle OpenSSH on in "Software selection"
- select "continue"
- select "yes" to "Install the GRUB boot loader on a hard disk"
- select "continue" to "Finish the installation"
The OpenBTS project utilizes several new features in Git. To make sure your client is compatible (e.g. newer than 1.8.2), perform the following.
$ sudo apt-get install software-properties-common python-software-properties $ sudo add-apt-repository ppa:git-core/ppa (press enter to continue) $ sudo apt-get update $ sudo apt-get install git
Once you have git installed, most of the remaining installation process is automated via scripts.
Several software components are needed to actually create a usable mobile network. To efficiently manage them, we've prepared some scripts to automate the clone, pull, branch and build operations.
From the command line in your fresh development environment, execute the following to download the most recent set of tools:
$ git clone https://github.com/RangeNetworks/dev.git
Before proceeding, these tools require that you are using a modern version of Git (>1.8.2). Check now if you are:
$ git --version git version 1.9.1
This development scripts assume that you have SSH keys set up for GitHub. If you do not, please follow these instructions to set them up before proceeding.
Now, to download all of the components simply run the
$ cd dev $ ./clone.sh
Selecting a Branch or Tag
Before building, you should choose which branch or tag you'd like to compile using
$ ./switchto.sh master (or) $ ./switchto.sh 4.0 (or) $ ./switchto.sh v4.0.0
build.sh script will automatically install any build dependencies (building them manually when required). After dependencies are taken care of, each component is compiled into an installable package.
$ ./build.sh <radio-type>
Compiled packages are now in a new directory named
Use dpkg to install the fresh packages (this will complain about dependencies):
$ sudo dpkg -i BUILDS/timestamp/*.deb
To have Aptitude resolve the dependencies, execute the following:
$ sudo apt-get -f install
When prompted about overwriting existing configuration files, use your own judgement. It is recommended to overwrite all files to make sure things work out of the box. However, overwriting
/etc/network/interfaces will set your system to a static IP instead of whatever you had configured previously.
Each component has an Upstart service definition for Ubuntu. To start all the required services, execute the following:
$ sudo start sipauthserve $ sudo start smqueue $ sudo start openbts $ sudo start asterisk
Conversely, to stop them:
$ sudo stop sipauthserve $ sudo stop smqueue $ sudo stop openbts $ sudo stop asterisk
OpenBTS Command Line Interface
$ cd /OpenBTS $ ./OpenBTSCLI OpenBTS> help (list all commands available) OpenBTS> audit (check if your configuration is correct) OpenBTS> config (list all parameters) OpenBTS> config XYZ (list all parameters that contain XYZ) OpenBTS> devconfig (change developer and factory parameters) OpenBTS> trxconfig (view the factory radio calibration) [so far only on Range Networks equipment] OpenBTS> chans (view the currently active channels) OpenBTS> tmsis (view all IMSIs that have interacted with the system) OpenBTS> trans (view all completed transactions like calls and sms) OpenBTS> quit
Subscriber Registry Database
$ sudo sqlite3 /var/lib/asterisk/sqlite3dir/sqlite3.db sqlite> .tables DIALDATA_TABLE RRLP SIP_BUDDIES rates sqlite> select * from sip_buddies; sqlite> select * from dialdata_table; sqlite> .quit