bladeRF install Surface Pro

The Microsoft Surface Pro is a powerful Windows touch screen tablet with an i5 processor.  I picked up a 64GB version at microcenter for $299, with the purpose if running a GSM network from a touch screen tablet.


Step 1: Install Ubuntu 14.04 on the Surface Pro.


  1. Create a 64 bit Live USB of Ubuntu 14.04
  2. Hookup USB hub to SP1, connect regular keyboard and the Live USB
  3. Shrink Windows partition as much as you need/can. See for detailed steps
  4. Disable Secure Boot (see link above for details)
  5. In Windows, go to Update and Recovery and reboot into the Live USB (see link above for details)
  6. Go through the standard Ubuntu install; install on a newly created partition; You can encrypt your home folder.
  7. Reboot into the new Ubuntu install
  8. Reboot, install the latest Ubuntu updates
  9. Go to System Settings/Displays, change the UI scaling to 1.25 to make use of touch UI easier
  10. To be able to use touch interface without a keyboard, go to System Settings / Universal Access and enable “On screen keyboard”. Then go to “Onboard Settings” and enable “Start Onboard hidden”, “Show status icon”, “Show floating icon when Onboard is hidden” and “Show when unlocking the screen”. You can also configure theme, etc. to your liking. Start “Onboard” from the dash.
  11. Installed and configured TLP to allow proper power management when on battery
    • sudo add-apt-repository ppa:linrunner/tlp
    • sudo apt-get update
    • sudo apt-get install tlp tlp-rdw
    • sudo apt-get install ethtool
    • open /etc/default/tlp and change the following:
      • CPU_SCALING_GOVERNOR_ON_AC=performance
    • sudo tlp start
    • you can monitor power consumption using powertop
    • optional) – Change GRUB menu order.
  1. Optional Change GRUB menu order to default to Windows using grub-customizer.  I still mostly use windows on surface Pro.

3. bladeRF install the easy way


4. Upgrade bladeRF to latest firmware: 

bladeRF-cli –flash-firmware /usr/share/Nuand/bladeRF/bladeRF_fw.img


5. Install Yate

5a. Install Prerequisites

a. – install Subversion (SVN) –

sudo apt-get install subversion apache2 libapache2-svn

b. Install GNUmake, GCC: GNU Compiler Collection

$ sudo apt-get update
$ sudo apt-get upgrade #optional
$ sudo apt-get install build-essential
$ gcc -v
$ make -v


c. Install git, autoconf, libtool, libdbi-dev

sudo apt-get install git autoconf libtool libdbi-dev


d. Install libusb-1.0-0-dev: Library for programming USB applications


sudo apt-get install libusb-1.0-0-dev


YATE Installation

Below is a short install guide for Yate. For more detailed information please check


The prerequisites of installing Yate are the same as above. You need at least Yate version 5.1.0


To install Yate:

Download Yate sources from the SVN

Once you have the svn client installed, getting the sources is simple: you just type the following command in your terminal:

cd /usr/src/

sudo svn checkout yate


Install Yate from SVN

Go to directory where Yate was downloded and run This will generate the configure script that checks dependencies.

Then run make install-noapi that will compile and install Yate.

Instead of make install-noapi you can use make install but make sure to install doxygen or kdoc package.

cd yate/

sudo ./

sudo ./configure

sudo make install-noapi





If you get any errors when running ./configure you’ll probably have to install additional packages.

If you try to run yate and get:

yate: error while loading shared libraries: cannot open shared object file: No such file or directory

Then run:

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

For additional information about Yate installation and configuration, please see Yate documentation Wiki:



Install YateBTS



Download YateBTS


You can download the sources in any directory. I choose /usr/src

cd /usr/src

svn checkout yatebts


Check dependencies

Run to generate configure script that will check dependencies.

cd yatebts/




If you encounter the following error then you need to install libusb1-dev or libusb1-devel and then run ./configure again.

checking for libusb-1.0/libusb.h… no

configure: error: This header file is required.


Install YateBTS


To compile and install YateBTS run:

make install


After this, the YateBTS modules/scripts/configurations will be moved in the appropriate directories where other Yate modules/scripts/configurations are located.


Configure/Running YateBTS

Edit ybts.conf

Configure YateBTS

Starting with Yate 5.2, Yate loads the ybts module by default. Previously, users needed to set extrapath=bts in [general] section in the yate.conf, but this step is no longer needed.

Also by default, Yate loads all the available modules. Unless you are an expert user of Yate and want to customize the loading of modules, we recommend that you load all modules.

To configure YateBTS, you have to modify the ybts.conf file from /usr/local/etc/yate. Make sure you set at least the Radio.Band and C0 on which YateBTS will operate.

You will also need to modify the Path in the [transceiver] section, depending on the transceiver used. The example below shows the necessary set-up when using the bladeRF transceiver.

;Path to the transceiver relative to where MBTS is started.
;Should be one of: ./transceiver-bladerf ./transceiver-rad1 ./transceiver-usrp1 ./transceiver-uhd.
;Defaults to ./transceiver



yate -vvvvv




Seems to be working.

Needed to run:

sudo yate -vvvvv


when I ran

yate -sd -vvvvv -l /var/log/yate.log

I could not tell if it was working or not.  killed process using system monitor in ubuntu.


Phone can see network but fails to connect.

Phone continues to fail, but I believe because not configured correctly.


SET UP Javascript Network in a Box




sudo gedit javascript.conf


To set it up, edit javascript.conf.



sudo gedit ybts.conf


You can enable NIB by setting themode=nib in the [ybts] section. This is the default behaviour. If the ‘mode’ is not set, then the NIB mode is loaded by default:



sudo gedit extmodule.conf


When using 2G or 3G authentication set in extmodule.conf:


did not place anything after =


Need to Install WebGUI



Installation and configuration


  • YateBTS – Already installed
  • PHP –
    sudo apt-get instal PHP5
    check by: php -v
  • Apache
    already had apache
    check by: apache -v
    will show you version of apache
  • pySIM


Use WebGUI

browser to :

Got Error!! Don’t have r/w permission on /usr/local/etc/yate. Please run this command as root:

chmod -R a+rw /usr/local/etc/yate/ – NOW WORKS!


Camp Phones / Subscribers


Subscribers can manualy be put into the Subscriber list via – WebGui.

You can also add a Regexp.  The system will automatically compare imsi from SIM card to the Regexp.  If the beginin numbers match, then phone will be able to connect to YateBTS.


Catchall regexp: .*