Minimalistic build and run test for OpenBTS 5 - junaid124/bladeRF GitHub Wiki
These are notes jotted down from IRC logs from rwr helping mambrus setting up a minimalistic OpenBTS pre-release version 5 using YateBTS transceiver one late night 2014-10-02.
No guarantees it will work, but hopefully rather serve as a base for future documentation. (Let me know if it does or doesn't and we can skip this caution-note and/or refine this into a proper how-to.)
Copy & paste the following for a Debian-based system:
sudo apt-get install $(
wget -qO - https://raw.githubusercontent.com/RangeNetworks/dev/master/build.sh | \
grep installIfMissing | \
grep -v "{" | \
cut -f2 -d" ")Hopefully all the packages are in your distros repo and are named the same. If not, modify the lines above and add grep -v <package> for the packages that fail, then find another way to install them. Building from source is always an alternative...
This section describe alternative ways of installing some of the packages above known to be missing for some Debian-stable distros.
- For Ubuntu:
$ sudo add-apt-repository ppa:chris-lea/zeromq
$ sudo apt-get update
$ sudo apt-get install libzmq3-dbg libzmq3-dev For Debian 7.2 you can use libzmq3 & libzmq3-dev (Note: Confirmation needed)
Build and install gnuradio from source
Follow the links where such exist. The text referred to are usually not large and I've tried to be specific. Some of the links are just for future referral, some of them contain code snippets that should had gone in here instead. As I said, these are just jotted notes atm ;-)
- RangeNetworks gits <-- are here
- Prerequisites.
- Install your distributions packages (no need to build from source).
- libgsm1-dev
- asterisk-dev
- asterisk-config
- May need build...
- Very recent
libusb. If built from source (for example for Ubuntu 12.04):- copy that over /usr/lib/x86_64-linux-gnu/libusb.so (consider saving the old one)
- Very recent
- Install your distributions packages (no need to build from source).
- Prepare a directory for OpenBTS_5 as follows:
#!/bin/bash
git clone https://github.com/RangeNetworks/openbts.git
git clone https://github.com/RangeNetworks/smqueue.git
git clone https://github.com/RangeNetworks/subscriberRegistry.git
#From here and downwards you can copy&paste (that's why the ';' are for)
for D in *; do (
echo $D;
echo "=======";
cd $D;
git clone https://github.com/RangeNetworks/CommonLibs.git;
git clone https://github.com/RangeNetworks/NodeManager.git);
done;
git clone https://github.com/RangeNetworks/libcoredumper.git;
git clone https://github.com/RangeNetworks/liba53.git- Build libraries libcoredumper & liba53
cd libcoredumper;
./build.sh && \
sudo dpkg -i *.deb;
cd ..cd liba53;
make && \
sudo make install;
cd ..;- In the same root directory clone YateBTS
- Note: you don't need the Yate tool
- Remove loading of fpga in YateBTS
-
vim ./yatebts/mbts/TransceiverRAD1/bladeRFDevice.cpp +108and onward to line 129.#ifdef NEVERit...- Make sure you have a recent fpga and matching firmware in bladeRF (install fpga permanently:
bladeRF-cli -L path/file, Make sure not to interrupt flashing)
- Make sure you have a recent fpga and matching firmware in bladeRF (install fpga permanently:
-
- Go to YateBTS and run
autogen.shto get a configure script. - Run
configure- Which will fail with an error complaining about yate. Find the error in
configureand fix it (patch it to ignore the error in any preferable way). Then rerunconfigure.
- Which will fail with an error complaining about yate. Find the error in
- You need to build only 2 directories from
yatebtsto get the transceiver (order matters): Note: I've noticed thatyatebtsdoes not support out of source build.- cd into
Peering, run make - cd into
TransceiverRAD1and make
- cd into
- Copy produced transceiver binary from YateBTS to OpenBTS:
cd ..
cp ./yatebts/mbts/TransceiverRAD1/transceiver-bladerf openbts/apps/
cd openbts/apps/
ln -sf transceiver-bladerf transceiver- build OpenBTS.
This is done very traditionally but spelled out here because of the configure flag.
- enter openbts and run
autogen.sh - Run
./configure --with-uhd - make
- enter openbts and run
- Configure sqlite3 DB according to this but patch
apps/OpenBTS.example.sqlfirst:-
GSM.Radio.RxGainfrom 47 to 5 in -
GSM.Radio.PowerManager.MaxAttenDBto 35 -
GSM.Radio.PowerManager.MinAttenDBto 35
-
- Continue from the DB configuration part and onward
- When done OpenBTS should be running and output interactive console similar to this
- Phone search for networks should show something similar to:
- Did you read the OpenBTS document referred to above carefully? Then you know how to make your BTS accept your phone (look for
Control.LUR.OpenRegistration). End-result could then look something like this:
Please do take care about following local regulations.
- 2014-11-04 fbe0b6a8 breaks YateBTS transceiver
Prior to fbe0b6a8, bladerf_sync_config()did not touch the timestamp bit as there was no support for dealing with timestamps.
There's a patch proposal to Yate at the following link: Yate_transceiver_revert_init_order.patch. Patch is pending accept and until further notice you have to patch in YateBTS source manually (patch -p0 < the.patch) to be able to use the YateBTS transceiver.

