OpenBTS: N210 Instalasi OpenBTS

From OnnoWiki
Jump to navigation Jump to search

Sumber: http://wush.net/trac/rangepublic/wiki/BuildInstallRun

Teknik yang di jelaskan disini hanya untuk Sebuah OpenBTS saja.

Setelah selesai menginstalasi OpenBTS P2.8 harusnya telah siap:

  • OpenBTS. Implementasi GSM dengan bagian TDMA mulai dari L1 sampai dengan L3 dan L3/L4 boundary. Interface SIP bekerja pada port 5062. OpenBTS berlokasi openbts/trunk.
  • Transceiver. Ini adalah software radiomodem, mengimplementasikan bagian bawah dari L1. OpenBTS akan menjalankan transceiver secara automatis. Transceiver berlokasi di openbts/trunk/Transceiver*.
  • SIP PBX atau softswitch (Asterisk, FeeeSWITCH, yate dll.) Komponen ini menyambungkan call pembicaraan. Interface SIP bekerja pada port 5060. Softswitch bukan bagian dari OpenBTS.
  • Sipauthserver. Ini adalah SIP registration & authorization server, digunakan untuk permohonan uutuk update lokasi dari OpenBTS dan mengupdate subscriber registry database. Interface SIP biasanya bekerja pada port 5064. Ini berlokasi di subscriberRegistry/trunk.
  • Smqueue. Ini adalah store-and-forward text messaging server. Ini perlu di jalankan secara tersendiri dari OpenBTS. Interface SIP biasanya berjalan di port 5063. Smqueue tidak diperlukan jika tidak dibutuh kemampuan SMS. Ini terletak di smqueue/trunk.
  • Rrlpserver. ini adalah RRLP aiding server yang berjalan sebagai CGI script di web server. Rrlpserver tidak dibutuhkan jika RRLP tidak digunakan. Ini terletak di RRLP/trunk.
Openbts system diagram.png

Prasyarat


Instalasi Paket Pendukung dan Yate

Instalasi paket / library pendukung tambahan

sudo apt-get install autoconf libtool libosip2-dev libortp-dev \
libusb-1.0-0-dev g++ erlang libreadline6-dev libboost-all-dev \
cmake build-essential subversion libortp8 libortp-dev

Install sqlite3 terpisah

rm /usr/local/bin/sqlite3
apt-get install sqlite3 libsqlite3-dev

SQLite3 suka rewel, coba di test dulu

sqlite3 --version

Yang seharusnya keluar

3.7.15.2 2013-01-09 11:53:05 c0e09560d26f0a6456be9dd3447f5311eb4f238f

Kalau ada error, SQLite header mismatch

SQLite header and source version mismatch
2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e
2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc

Jika ada error, coba lakukan

apt-get remove --purge sqlite3 libsqlite3-dev
apt-get install sqlite3 libsqlite3-dev


Download Source Code OpenBTS via SVN

sudo su
cd /usr/local/src
svn co http://wush.net/svn/range/software/public openbts-2.8.0

Install OpenBTS

Compile & Instalasi OpenBTS untuk clock 52MHz

sudo su
cd /usr/local/src/openbts-2.8.0/openbts/trunk
autoreconf -i
./configure --with-uhd
make clean
make
make install
cd /usr/local/src/openbts-2.8.0/openbts/trunk/apps
ln -s ../Transceiver52M/transceiver .
cd /usr/local/src/openbts-2.8.0/openbts/trunk/
sudo mkdir -p /usr/local/share/usrp/rev4/
sudo cp Transceiver52M/std_inband.rbf /usr/local/share/usrp/rev4/

Instalasi Database Konfigurasi OpenBTS

cd /usr/local/src/openbts-2.8.0/openbts/trunk
sudo mkdir /etc/OpenBTS
rm /etc/OpenBTS/OpenBTS.db
sudo sqlite3 -init ./apps/OpenBTS.example.sql /etc/OpenBTS/OpenBTS.db ".quit"

Beberapa catatan minimal yang harus di set dari database OpenBTS

  • GSM.Radio.Band - Set parameter ini untuk menentukan GSM band yang sesuai dengan hardware yang kita gunakan.
  • GSM.Radio.C0 - Ini adalah ARFCN. Set sesuai dengan band yang kita gunakan.
  • Control.LUR.OpenRegistration - Set menggunakan regular expression sesuai denan IMSI dari test phone. Parameter ini memberitahukan OpenBTS untuk tidak me-reject handset karena registration server di bawah tidak me-responds. Sehingga sangat bermanfaat untuk proses debugging dan inisialisasi sistem. Tentang regular expression dapat dibaca di http://en.wikipedia.org/wiki/Regular_expression

Agar semua SIM card register tanpa AMPUN konfigurasi pada prompt OpenBTS>

config Control.LUR.OpenRegistration \W+
config save

Baca tentang cara konfigurasi OpenBTS 2.8


Instalasi Subscriber Registry

Lakukan

cd /usr/local/src/openbts-2.8.0/subscriberRegistry/trunk/configFiles
sudo mkdir /var/lib/asterisk/
sudo mkdir -p /var/lib/asterisk/sqlite3dir
sudo rm  -Rf /var/lib/asterisk/sqlite3dir/sqlite3.db
sudo sqlite3 -init subscriberRegistryInit.sql /var/lib/asterisk/sqlite3dir/sqlite3.db ".quit"

Perlu di Hack ini?

Buat link CGI

vi /etc/apache2/sites-enabled/000-default 
ScriptAlias /cgi/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
      AllowOverride None
      Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
 </Directory>
cd /usr/lib/cgi-bin/
ln -s /usr/local/src/openbts-2.8.0/subscriberRegistry/trunk/srmanager.cgi

Yang agak repot adalah menginstalasi Asterisk Real Time

Instalasi Sipauthserve

Sipauthserve adalah daemon yang memberikan SIP authentication services. Variabel SIP.Proxy.Registration di OpenBTS harus menunjuk pada hostname & port Sipauthserve. OpenBTS harus sudah di buat sebelum membuat Sipauthserve.

Compile Sipauthserve

cd /usr/local/src/openbts-2.8.0/subscriberRegistry/trunk
make

Setup database untuk Sipauthserve

mkdir /etc/OpenBTS
rm -Rf /etc/OpenBTS/sipauthserve.db
cd /usr/local/src/openbts-2.8.0/subscriberRegistry/trunk
sudo sqlite3 -init sipauthserve.example.sql /etc/OpenBTS/sipauthserve.db ".quit"

Instalasi Smqueue

Smqueue dapat di instalasi dengan melakukan langkah berikut

cd /usr/local/src/openbts-2.8.0/smqueue/trunk
autoreconf -i
./configure 
make clean
make 
make install

Selanjutnya, inisialisasi konfigurasi database OpenBTS

cd /usr/local/src/openbts-2.8.0/smqueue/trunk
rm -Rf /etc/OpenBTS/smqueue.db
sudo sqlite3 -init smqueue/smqueue.example.sql /etc/OpenBTS/smqueue.db ".quit"


Menjalankan OpenBTS

Pastikan Yate sudah di Instalasi.

Lakukan di tiga (3) windows yang berbeda

cd /usr/local/src/openbts-2.8.0/subscriberRegistry/trunk/
./sipauthserve &
cd /usr/local/src/openbts-2.8.0/smqueue/trunk/smqueue/
./smqueue &
cd /usr/local/src/yate
rm /var/log/yate
./run -t -l /var/log/yate -vvvv -c /usr/local/etc/yate -m /usr/local/lib/yate -e /usr/local/share/yate -d
cd /usr/local/src/openbts-2.8.0/openbts/trunk/apps
./OpenBTS &

Kalau di lihat di background

ps ax

Akan terlihat kira-kira

23253 pts/4    S      0:00 ./sipauthserve
23254 pts/4    S      0:00 ./smqueue
23258 ?        Ssl    0:03 ./yate -t -l /var/log/yate -vvvv -c /usr/local/etc/yate -m /usr/local/lib/yate
23276 ?        S      0:00 /usr/bin/python /usr/local/share/yate/scripts/VBTS_Call_Provisioning.py 10
23278 ?        S      0:00 /usr/bin/python /usr/local/share/yate/scripts/VBTS_Route_Local.py 10
23280 ?        S      0:00 /usr/bin/python /usr/local/share/yate/scripts/VBTS_Route_Provisioning.py 10
23282 ?        S      0:00 /usr/bin/python /usr/local/share/yate/scripts/VBTS_SMS_Echo.py 10|vbts_tp_dest
23284 ?        S      0:00 /usr/bin/python /usr/local/share/yate/scripts/VBTS_SMS_Provisioning.py 50
23286 ?        S      0:00 /usr/bin/python /usr/local/share/yate/scripts/VBTS_SMS_Route.py 50
23303 pts/4    Sl     0:00 ./OpenBTS
23308 pts/4    Sl     0:00 ./transceiver 1


Pastikan Yate Beroperasi dengan Baik

Lihat

vi /var/log/yate

Pastikan

Initializing module ExtModule
Loading external module 'VBTS_Call_Route.py' '10'
Execing '/usr/local/share/yate/scripts/VBTS_Call_Route.py' '10'
Loading external module 'VBTS_Call_Originate.py' '10'
Execing '/usr/local/share/yate/scripts/VBTS_Call_Originate.py' '10'
Loading external module 'VBTS_Call_Provisioning.py' '10'
Execing '/usr/local/share/yate/scripts/VBTS_Call_Provisioning.py' '10'
Loading external module 'VBTS_Route_Local.py' '10'
Execing '/usr/local/share/yate/scripts/VBTS_Route_Local.py' '10'
Loading external module 'VBTS_Route_Provisioning.py' '10'
Execing '/usr/local/share/yate/scripts/VBTS_Route_Provisioning.py' '10'
Loading external module 'VBTS_SMS_Echo.py' '10|vbts_tp_dest_address|^100$'
Execing '/usr/local/share/yate/scripts/VBTS_SMS_Echo.py' '10|vbts_tp_dest_address|^100$'
Loading external module 'VBTS_SMS_Provisioning.py' '50'
Execing '/usr/local/share/yate/scripts/VBTS_SMS_Provisioning.py' '50'
Loading external module 'VBTS_SMS_Route.py' '50'
Execing '/usr/local/share/yate/scripts/VBTS_SMS_Route.py' '50'
Loading external module 'VBTS_SMS_Send.py' '50'
Initializing module SIP Channel
..
..
..
Yate engine is initialized and starting up on openbts28
<INFO> Creating new message dispatching thread (0 running)
VBTS Provisioning Starting
VBTS Provisioning_SMS Installing sip.message at 50
VBTS Provisioner Starting
VBTS Provisioner Installing chan.dtmf
VBTS Provisioner Installing chan.notify
VBTS Echo_SMS filtering: [('vbts_tp_dest_address', <_sre.SRE_Pattern object at 0xb703c2c0>)]
VBTS Echo Starting
VBTS Echo_SMS Installing sip.message at 10
VBTS Route Provisioning on
VBTS Echo Starting
VBTS Echo_SMS Installing call.route at 10
VBTS SMS_Route filtering: []
VBTS SMS_Route Starting
VBTS SMS_Route Installing sip.message at 50
VBTS Route Local on
VBTS Echo Starting
VBTS Echo_SMS Installing call.route at 10

Mengkonfigurasi OpenBTS

OpenBTS saat ini menggunakan CLI sendiri untuk di konfigurasi. Ini bisa di akses melalui

cd /usr/local/src/openbts-2.8.0/openbts/trunk/apps
./OpenBTSCLI

Lebih detail-nya bisa di baca di Konfigurasi OpenBTS 2.8

Beberapa Error

Saat menjalankan OpenBTS akan keluar Error

ALERT 3079285616 USRPDevice.cpp:546:setRxFreq: set RX: 9.002e+08failed
    baseband freq: 8.96e+08
    DDC freq:      -4.2e+06
    residual freq: 0.00298023
ALERT 3079285616 Transceiver.cpp:540:driveControl: RX failed to tune
ALERT 3079272144 TRXManager.cpp:342:tune: RXTUNE failed with status 1
ALERT 3079272144 TRXManager.cpp:395:powerOn: POWERON failed with status 1
ALERT 3079272144 TRXManager.cpp:409:setPower: SETPOWER failed with status 1
ALERT 3079272144 TRXManager.cpp:409:setPower: SETPOWER failed with status 1
1329902709.029597 3079272144: 

Welcome to OpenBTS.  Type "help" to see available commands.

OpenBTS> ALERT 3045964656 TRXManager.cpp:409:setPower: SETPOWER failed with status 1
ALERT 3068914544 TRXManager.cpp:86:clockHandler: TRX clock interface timed out, assuming TRX is dead.
Aborted

Biasanya ini di barengi dengan konsumsi CPU yang sangat tinggi.

PROBLEM: Kemungkinan besar anda menjalankan program transceiver yang salah. Untuk USRP 64MHz gunakan Transceiver/transceiver. Untuk USRP 52MHz gunakan Transceiver52M/transceiver.

SOLUSI: Set path TRX.Path yang benar di OpenBTS.config.



Error SubscriberRegistry Configurasi

Keluar error saat menjalankan subscriberRegistry

cannot find configuration value Log.Level
terminate called after throwing an instance of 'ConfigurationTableKeyNotFound'

SOLUSI:

  • Tampaknya ini karena sqlite belum di install & di jalankan.

Error SubscriberRegistry database

Keluar error saat menjalankan OpenBTS

EMERG 3077609168 SubscriberRegistry.cpp:160:init: Cannot open SubscriberRegistry database: unable to open database file

SOLUSI:

Lakukan Instalasi Subscriber Registry

Error SubscriberRegistry.UpstreamServer

Keluar error saat menjalankan smqueue server

cannot find configuration value SubscriberRegistry.UpstreamServer

SOLUSI:

Jalankan SipAuth Server sebelum smqueue server

Error Stray Transceiver Process

Masalah:

cd /usr/local/src/openbts-2.8.0/openbts/trunk/apps
./OpenBTS

Keluar message error

bind() failed: Address already in use
terminate called after throwing an instance of 'SocketError'
Aborted

PROBLEM: OpenBTS shutdown tidak bersih dan masih ada proses transceiver yang masih jalan.

SOLUSI: Kill proses transceiver yang masih jalan dan coba sekali lagi seperti di bawah ini.

ps | grep transceiver

Keluar misalnya

30208 pts/1    00:00:00 transceiver

Kill

kill -KILL 30208

atau

killall transceiver

Referensi

Pranala Menarik

Persiapan

OpenBTS 2.6

OpenBTS 2.8

Multi OpenBTS 2.8

Ettus E110

GPRS

Power Amplifier

Lain Lain

Catatan Legal dan Pendukung

Catatan Sejarah

Dokumentasi Video