OpenBTS: UHD Devices¶
- OpenBTS: UHD Devices
As of December 2011, UHD device support and related features are merged into the mainline repository. New and current users of OpenBTS-UHD are encouraged to start with or migrate to the mainline version P2.8 of OpenBTS. Current and future development will target the P2.8 tree. OpenBTS-UHD will continue to be maintained for an indefinite period of time by backporting stable changesets from mainline.
OpenBTS versions prior to P2.8 only support the USRP1 in the classic configuration with dual RFX900/1800 daughterboards. OpenBTS-UHD is derived from the 2.6 codebase with substantial parts of the OpenBTS version 2.6 transceiver code along with additional outside patches. All devices, with the exception of the USRP1, utilize the UHD driver from Ettus Research. Because of the ability to timestamp samples, the USRP1 implementation does not use UHD and is based on a driver from GNU Radio.
Please note the the 'UHD' suffix is a misnomer that relates to the initial release of OpenBTS USRP2 support. The OpenBTS-UHD tree is not specific to UHD devices.
OpenBTS-UHD includes all functionality of the 2.6 version plus the following additional features.
- Supports all Ettus Research products
- Embedded device support with the E100 (ARM Cortex-A8)
- Non-RFX daughterboards such as the WBX, SBX, DBSRX, and DBSRX2
- Single daughterboard (WBX, SBX, or RFX) usage
- Allows for external reference signal (on supported devices) for highly precise timing
- Transmit and receive gain control on non-52 MHz clocked devices
- Additional patches not merged into the mainline 2.6 repository
For running OpenBTS on the E100, please see the dedicated OpenBTS/E100 page.
OpenBTS-UHD source code is managed with git. The repository tracks and merges in changes from the mainline 2.6 OpenBTS repository.
git clone git://github.com/ttsou/openbts-uhd.gitor
git clone https://github.com/ttsou/openbts-uhd.git
A generated tarball is also available for download.
Configure and Build¶
Device configuration is performed at compile time and options depend on the class of USRP device. Please note that configuration for UHD devices slightly differs from P2.8 due to the RAD1 transceiver also being supported.
USRP2 / N210 / N200¶
These devices operate with a master clock frequency of 100 MHz, which is not reconfigurable. As a result, host-based sample rate conversion is required due to the fractional GSM symbol rate of 270.8333 ksps. Optionally, the front panel connection can be enabled to use an external 10 MHz reference.
Also please see the OpenBTS specific N200 series device notes.
autoreconf -i ./configure --with-resamp <--with-extref> make
B100 / E100 / E110¶
These devices operate by default at 64 MHz and are reconfigurable to run at a GSM suitable rate of 52 MHz. Host-based resampling is not necessary nor recommended with these devices. Use of a 10 MHz external reference is optional.
The E100 series requires special instructions. See the dedicated OpenBTSE100 page about running OpenBTS on the E100 series.
autoreconf -i ./configure <--with-extref> make
USRP1 requires the libusrp driver found in GNU Radio. Please note that libusrp support is now deprecated in GNU Radio and will be removed permanently in GNU Radio version 3.5. Stable version 3.4.2 of GNU Radio is recommended.
The default configuration is side-A Tx and side-B Rx. The single daughterboard option uses side-A only for Tx and Rx.
autoreconf -i ./configure --with-usrp1 <--with-singledb> make
Further instructions on using OpenBTS after you have built it can be found here: OpenBTSUHD.
- USRP2, N210, and N200 run at 100 MHz and require host-based sample rate conversion, which resamples the 400 ksps signal from the device to the GSM symbol rate of 270.833 ksps.
- E100 series and B100 will reconfigure the master clock to run at 52 MHz, which allows the FPGA to output 270.833 ksps directly.
- USRP1 can use either the 64 MHz or 52 MHz transceiver depending the clock configuration.
- USRP1 and USRP2 have clock stabilities around 20 parts per million. The USRP1 can be reclocked at 52 MHz with modification, and the USRP2 clock can be locked to a stable external 10 MHz reference.
- The N200, N210, E100, E110 and B100 include an on-board TCXO with stability within a few parts per million, which is sufficient for OpenBTS to work with some mobile phones. It's still recommended to lock them to a stable external 10MHz reference to achieve stable performance.
External 10MHz reference¶
The front panel 10MHz reference input of certain devices (USRP2, N210, N200) can be used to improve stability of the internal oscillator. Currently, this capability can only be set at compile time. See build instructions to enable the front panel reference.
Frequency Offset estimation¶
To test frequency offset, a modified version of Kalibrate is available.
With the merge of UHD support into the mainline P2.8 project. Active development has primarily moved upstream. Appropriate bug fixes and change sets will be backported from mainline for an indefinite period.