Difference between revisions of "OpenBTS: E110 Instalasi OpenBTS"

From OnnoWiki
Jump to navigation Jump to search
Line 304: Line 304:
 
==Menjalankan OpenBTS==
 
==Menjalankan OpenBTS==
  
  uhd_usrp_probe
+
  uhd_usrp_probe --args="master_clock_rate=52e6"
 
  cd ~/src/openbts/openbts/trunk/apps/
 
  cd ~/src/openbts/openbts/trunk/apps/
 
  ./OpenBTS
 
  ./OpenBTS

Revision as of 08:04, 1 March 2012

Instalasi Aplikasi Pendukung

Instal aplikasi pendukung

opkg update
opkg install libosip2-3 libosip2-dev libortp5 libortp-dev asterisk asterisk-dev \
sqlite3

Jika dibutuhkan kita dapat menset di shell

setenv PERL5LIB /usr/share/autoconf/Autom4te:/usr/share/automake-1.11/Automake

Lakukan Ubah Master Clock ke 52MHz


Compile osip2

WARNING: Jangan mengcompile osip2, karena switch-nya lumayan ribet.

Kalau mau mengcompile, silahkan Download osip dari http://ftp.gnu.org/gnu/osip/ tepatnya http://ftp.gnu.org/gnu/osip/libosip2-3.6.0.tar.gz

Lakukan

mkdir src
mv libosip2-3.6.0.tar.gz ~/src
cd ~/src
tar zxvf libosip2-3.6.0.tar.gz
mkdir linux-build
cd ~/src/linux-build/
~/src/libosip2-3.6.0/configure 
make clean
make all
make
make install

Naga-naganya ada yang salah di cara ini, terutama di ./configure kita perlu menambahkan banyak switch karena kita pakai processor armv7

Instalasi OpenBTS

Cek apakah ada OpenBTS

updatedb &
locate openbts

Kalau tidak ketemu berarti kita perlu instalasi.

Download OpenBTS

Download di PC source code openbts bisa melalui

cd /usr/local/src
apt-get install subversion
svn co http://wush.net/svn/range/software/public openbts
scp -r openbts root@<ip-address-E110>

Compile OpenBTS

Compile menggunakan perintah

mv openbts ~/src
vi ~/src/openbts/openbts/trunk/apps/OpenBTS.cpp 

pastikan

sleep(8);

lanjutkan proses compile

cd ~/src/openbts/openbts/trunk
./autogen.sh 
./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 clean
make 
make install
~/src/openbts/openbts/trunk/apps
ln -s ../Transceiver52M/transceiver .

Instalasi Database Konfigurasi OpenBTS

cd ~/src/openbts/openbts/trunk
sudo mkdir /etc/OpenBTS
rm /etc/OpenBTS/OpenBTS.db
sudo sqlite3 -init ./apps/OpenBTS.example.sql /etc/OpenBTS/OpenBTS.db
.exit


Error "assuming TRX is dead"

Di E1xx, transceiver akan lebih lambat dari yang normal OpenBTS. Oleh karenanya sangat di sarankan agar transceiver load delay di naikan, jika tidak OpenBTS akan meresponds dengan "assuming TRX is dead" dan exit. Jika ini terjadi, transceiver instance akan tetap running dan akan menyebabkan akses ke UHD device terhalangi. Patch-nya adalah

vi ~/src/openbts/openbts/trunk/apps/OpenBTS.cpp 

Edit

// Start the transceiver interface.
// Sleep long enough for the USRP to bootload.
sleep(5);

Ubah menjadi

sleep(8);

Error File System Kurang Baik

Kalau microSD yang kita gunakan kurang baik, ada beberapa sector yang Read-only, maka kita akan melihat error di bawah ini.


Preparing build ... autom4te: cannot open autom4te.cache/requests: Read-only file system
automake: autoconf failed with exit status: 1
ERROR: automake failed
rm: cannot remove `COPYING.5934.protect_from_automake.backup': Read-only file  system
rm: cannot remove `INSTALL.5934.protect_from_automake.backup': Read-only file system
rm: cannot remove `./config.sub.backup': Read-only file system
rm: cannot remove `./ltmain.sh.backup': Read-only file system

SOLUSI:

  • reboot & ulang proses compile.
  • Kalau tetap gagal, maka kita perlu membuat ulang microSD tersebut.

Error autoreconf

Sebaiknya jangan menggunakan autoreconf seperti di bawah ini karena akan meminta perl yang tidak ada di E110.

mv openbts ~/src
cd ~/src/openbts/openbts/trunk
autoreconf -i

Akan keluar error sebagai berikut

can't locate Autom4te/ChannelDefs.pm in @INC (@INC contains: @autom4te_perllibdir@ /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl   .) at /usr/bin/gnu-configize line 40.
BEGIN failed--compilation aborted at /usr/bin/gnu-configize line 40.
autoreconf: gnu-configize failed with exit status: 2

SOLUSI:

  • autoreconf -i cukup aman kalau di lakukan di Ubuntu 11.10. Caranya SD card di mount ke ubuntu 11.10, di lakukan di mesin host Ubuntu 11.10 bukan di E110.
  • Alternatif lain menggunakan ./autogen.sh kemungkinan berhasil lebih tinggi.

Compile Smqueue

Lakukan

cd ~/src/openbts/smqueue/trunk
./autogen.sh
./configure 
make clean
make 
make install

Selanjutnya, inisialisasi konfigurasi database OpenBTS

cd ~/src/openbts/smqueue/trunk
rm -Rf /etc/OpenBTS/smqueue.db
sudo sqlite3 -init  smqueue/smqueue.example.sql /etc/OpenBTS/smqueue.db
.exit

Error saat compile / make Smqueue

make[1]: Entering directory `/home/root/src/openbts/smqueue/trunk/smqueue'
g++ -DHAVE_CONFIG_H -I. -I..  -I../CommonLibs -I../GSM -I../SMS -I../Globals -I../HLR -I../sqlite3  -O3 -g -lpthread -g -O2 -MT smqueue.o -MD -MP -MF .deps/smqueue.Tpo -c -o smqueue.o smqueue.cpp
smqueue.cpp: In member function 'void SMqueue::SMq::respond_sip_ack(int,  SMqueue::short_msg_pending*, char*, size_t)':
smqueue.cpp:1910:20: error: invalid conversion from 'int (*)(void*, void**)' to 'int* (*)(void*, void*)'
smqueue.cpp:1910:20: error:   initializing argument 3 of 'int osip_list_clone(const osip_list_t*, osip_list_t*, int* (*)(void*, void*))'
make[1]: *** [smqueue.o] Error 1
make[1]: Leaving directory `/home/root/src/openbts/smqueue/trunk/smqueue'
make: *** [install-recursive] Error 1 

SOLUSI:

  • Belum ada solusi

Instalasi Subscriber Registry

Lakukan

cd ~/src/openbts/subscriberRegistry/trunk/configFiles
sudo mkdir /var/lib/asterisk/
sudo mkdir /var/lib/asterisk/sqlite3dir
sudo sqlite3 -init subscriberRegistryInit.sql /var/lib/asterisk/sqlite3dir/sqlite3.db
.exit

Yang agak repot adalah menginstalasi Asterisk Real Time


Error di Template Database

Naga-naganya masih banyak sekali Error di template database subscriber registry :(

-- Loading resources from subscriberRegistryInit.sql
Error: incomplete SQL: CREATE TABLE 'sip_buddies'
(
id                    integer,
name                  VARCHAR(80) not null,
context               VARCHAR(80),
callingpres           VARCHAR(30) DEFAULT 'allowed_not_screened',
deny                  VARCHAR(95),
permit                VARCHAR(95),
secret                VARCHAR(80),
md5secret             VARCHAR(80),
remotesecret          VARCHAR(250),
transport             VARCHAR(10),
host                  VARCHAR(31) not null,
nat                   VARCHAR(5) DEFAULT 'no' not null,
type                  VARCHAR(10) DEFAULT 'friend' not null,
accountcode           VARCHAR(20),
amaflags              VARCHAR(13),
callgroup             VARCHAR(10),
callerid              VARCHAR(80),
defaultip             VARCHAR(40) DEFAULT '0.0.0.0',
dtmfmode              VARCHAR(7) DEFAULT 'rfc2833',
fromuser              VARCHAR(80), 
fromdomain            VARCHAR(80),
insecure              VARCHAR(4),
language              CHAR(2),
mailbox               VARCHAR(50),
pickupgroup           VARCHAR(10),
qualify               CHAR(3),
regexten              VARCHAR(80),
rtptimeout            CHAR(3),
rtpholdtimeout        CHAR(3),
setvar                VARCHAR(100),
disallow              VARCHAR(100) DEFAULT 'all',
allow                 VARCHAR(100) DEFAULT 'ulaw' not null,
fullcontact           VARCHAR(80),
ipaddr                VARCHAR(40),
port                  int(5) DEFAULT 0,
username              VARCHAR(80),
defaultuser           VARCHAR(80),
subscribecontext      VARCHAR(80),
directmedia           VARCHAR(3),
trustrpid             VARCHAR(3),
sendrpid              VARCHAR(3),
progressinband        VARCHAR(5),
promiscredir          VARCHAR(3),
useclientcode         VARCHAR(3),
callcounter           VARCHAR(3),
busylevel             int(11),
allowoverlap          VARCHAR(3) DEFAULT 'yes',
allowsubscribe        VARCHAR(3) DEFAULT 'yes',
allowtransfer         VARCHAR(3) DEFAULT 'yes',
ignoresdpversion      VARCHAR(3) DEFAULT 'no',
template              VARCHAR(100),
videosupport          VARCHAR(6) DEFAULT 'no',
maxcallbitrate        int(11),
rfc2833compensate     VARCHAR(3) DEFAULT 'yes',
'session-timers'      VARCHAR(10) DEFAULT 'accept',
'session-expires'     int(6) DEFAULT 1800,
'session-minse'       int(6) DEFAULT 90,
'session-refresher'   VARCHAR(3) DEFAULT 'uas',
t38pt_usertpsource    VARCHAR(3),
outboundproxy         VARCHAR(250),
callbackextension     VARCHAR(250),
registertrying        VARCHAR(3) DEFAULT 'yes',
timert1               int(6) DEFAULT 500,
timerb                int(9),
qualifyfreq           int(6) DEFAULT 120,
contactpermit         VARCHAR(250),
contactdeny           VARCHAR(250),
lastms                int(11) DEFAULT 0 not null,
regserver             VARCHAR(100),
regseconds            int(11) DEFAULT 0 not null,
useragent             VARCHAR(100),
cancallforward        CHAR(3) DEFAULT 'yes' not null,
canreinvite           CHAR(3) DEFAULT 'yes' not null,
mask                  VARCHAR(95),
musiconhold           VARCHAR(100),
restrictcid           CHAR(3),
calllimit             int(5),
WhiteListFlag         timestamp not null default '0',
WhiteListCode         varchar(8) not null default '0',
rand                  varchar(33) default ,
sres                  varchar(33) default ,
ki                    varchar(33) default ,
kc                    varchar(33) default ,
RRLPSupported         int(1) default 1 not null,
hardware	      VARCHAR(20),
regTime               INTEGER default 0 NOT NULL"
a3_a8                 varchar(45) default NULL
primary key(id)
) 
;


SOLUSI:

  • Belum ada solusi

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 ~/src/openbts/subscriberRegistry/trunk
make

Setup database untuk Sipauthserve

rm /etc/OpenBTS/sipauthserve.db
cd ~/src/openbts/subscriberRegistry/trunk
sqlite3 -init sipauthserve.example.sql /etc/OpenBTS/sipauthserve.db
.exit


Menjalankan OpenBTS

uhd_usrp_probe --args="master_clock_rate=52e6"
cd ~/src/openbts/openbts/trunk/apps/
./OpenBTS

Error waktu Start

ALERT 1088898144 TRXManager.cpp:86:clockHandler: TRX clock interface timed out, assuming TRX is dead.
Aborted

Biasanya setelah itu terjadi maka kalau di cek

uhd_usrp_probe 

Hasilnya

-- Opening device node /dev/usrp_e0...
Error: EnvironmentError: IOError: Failed to open /dev/usrp_e0

SOLUSI:

Edit

vi ~/src/openbts/openbts/trunk/apps/OpenBTS.cpp 

Edit

// Start the transceiver interface.
// Sleep long enough for the USRP to bootload.
sleep(5);

Ubah menjadi

sleep(8);

Lakukan ini sebelum mengcompile openbts

Referensi

Pranala Menarik

Persiapan Hardware

OpenBTS 2.6

OpenBTS 2.8

Ettus E110

Lain Lain

Catatan Legal dan Pendukung

Catatan Sejarah