OpenBTS: USRP E100¶
Due to constrained resources of an embedded environment, the OpenBTS on the E100 requires 52 MHz clocking and the use of the 52 MHz transceiver implementation. The E100 master clock rate is configurable through the UHD driver interface and requires no hardware modification for use with OpenBTS.
There are multiple ways to setup an OpenBTS environment on the E100. OpenBTS has a small number of dependent packages, which can be built from source on the device, cross-compiled with OpenEmbedded, or supplied on a pre-built filesystem image.
Using the pre-built images with all dependencies and compiling only OpenBTS on the device is strongly recommended for the majority of users and developers not interested in setting up a cross-compile environment.
- Updating the SD card
- Backing up the SD card
- Preparing a new (not E100 supplied) SD card
Download Prebuilt Images¶
- MLO: The MLO is the stage 1 boot loader that configures external memory and loads the second stage boot loader.
- U-Boot: U-Boot is the stage 2 boot loader that loads the Linux kernel.
- Root file system
(to be posted)
The following instructions apply to installing images on the SD card in a Linux environment. It is recommended that you backup your SD card contents before proceeding.
Insert the SD card into a card reader
On most Linux distributions, two partitions should mount automatically as "FAT" and "rootfs". If not, the partitions need to be mounted manually.
$ ls /media/ FAT rootfs
Install the MLO. Always copy a new MLO over the old one. If not performed properly, the partition will need to be reformatted.
$ cd /media/FAT $ cp <download location>/MLO MLO
Install the U-Boot image and Linux kernel
$ cp <download location>/u-boot.bin-for-2.6.38 u-boot.bin $ cp <download location>/uImage-2.6.38-r0-usrp-e1xx.bin uImage
Erase the existing root filesystem. Be careful with this step for obvious reasons.
$ cd /media/rootfs $ sudo rm -rf *
Install the new root filesystem
$ sudo tar xvfz <download location>/console-openbts-devel-image-usrp-e1xx.tar.gz .
Unmount the partitions
$ umount /media/FAT $ umount /media/rootfs
At this point, the SD card can be removed and booted on the E100. For general information on communicating with the E100, please refer to the following FAQ entry.
The source code for all UHD devices is identical and no code changes are necessary for the E100.
git clone git://github.com/ttsou/openbts-uhd.gitor
git clone http://github.com/ttsou/openbts-uhd.git
A generated tarball is also available for download.
$ cd openbts-uhd/public-trunk $ ./bootstrap $ ./configure --with-uhd CFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" CXXFLAGS="-march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -O3" $ make
Create a new configuration file from the supplied example
$ cd apps $ cp OpenBTS.config.example OpenBTS.config
It is recommended that only error messages be logged due to limited I/O resources.
# The initial global logging level: ERROR, WARN, NOTICE, INFO, DEBUG, DEEPDEBUG Log.Level ERROR # Logging levels can also be defined for individual source files. # This example set shows normal operations in the control layer (L3). Log.Level.MobilityManagement.cpp ERROR $optional Log.Level.MobilityManagement.cpp Log.Level.CallControl.cpp ERROR $optional Log.Level.CallControl.cpp Log.Level.RadioResource.cpp ERROR $optional Log.Level.RadioResource.cpp
Limit the transceiver log to error messages as well.
# TRX logging. # Logging level. # IF TRX.Path IS DEFINED, THIS MUST ALSO BE DEFINED. TRX.LogLevel ERROR
Set the desired band and frequency (default values shown).
# Valid band values are 850, 900, 1800, 1900. GSM.Band 900 # Valid ARFCN range depends on the band. GSM.ARFCN 51
Select the 52 MHz transceiver.
# Path to transceiver binary #TRX.Path ../Transceiver/transceiver TRX.Path ../Transceiver52M/transceiver
Set the desired transmit power attenuation (default values shown).
# Maximum attenuation (sets MINIMUM power level). GSM.PowerManager.MaxAttenDB 30 # Minimum attenuation (sets MAXIMUM power level). GSM.PowerManager.MinAttenDB 7
Start the Asterisk server
Wait for the handset to associate with the BTS.
By default, an echo server is setup by Asterisk on extension "600". Dial the number on an associated handset to run the test.
- Additional notes go here
- Currently tested with calls up to 12 hours in duration in a lightly loaded scenario