Saturday, October 27, 2012

Asterisk 1.6.1 on openSUSE 11.1 (Part 1)

In several articles from this one, I will share some of my experience in preparing emergency operation center for disaster management in Indonesia. One of the software we implement in this project is Asterisk. I use Asterisk from openSUSE repository. Actually I built a custom 64 bit appliance using KDE 4.3 from factory repositories through SUSE Studio and took Asterisk from openSUSE Build Service repositories. Well, it was a couple years ago (by the time I submit this post), but I believe it still useful for anyone learning Asterisk :-) I also used DAHDI (Digium Asterisk Hardware Device Interface), but during the implementation I have a problem with Indonesia PSTN telephone signaling so I should download dahdi trunk version from digium subversion server to make the digium card works.

Here are the hardware I use:
  • 2 HP tower based server with 8 GB memory (it is overkill actually, but the owner insist it) running in high availability. See the pictures here and here.
  • 10 PSTN lines
  • RJ 12 cables
Well, Digium and Polycom price are expensive but the quality of the sound is very good. There are some alternatives for the IP Phone like Grandstream and Aastra that also can be used.
In this project, Asterisk will be use to setup the voip communication between this site in Denpasar/Bali with the headquarter (HQ) in Jakarta as well as with other regional center in Java and Sumatera. Also Asterisk will act as traditional PBX to connect this site to PSTN lines as well as to GSM/CDMA lines. Every conversation through the PABX will be recorded by monitor application in Asterisk.

Before we go any further lets discuss a logical design about our setup. There is one HQ and several remote site including this one in Bali. This site is special because it's also act as second node beside HQ that can receive and transmit voip traffic to other center. The setup of every site is similar like the diagram below.
All the digium card provide 12 lines of PSTN, in this case we only use 10 lines. We then use RJ 12 coupler so that every line goes to 2 PBX server, PABXSV1 and PABXSV2. The PABXSV2 will become the backup asterisk in case the PABXSV1 is downed. We can use vrrpd or heartbeat (with DRBD) to control the service so that PABXSV2 can take over all the service from PABXSV1. More on this later.

I use stock asterisk and dahdi from OBS. While the asterisk is ok, dahdi in the OBS is not sufficient for Indonesia telephone lines (at least at the time I made the appliance). The root cause of the problem is that Indonesia PSTN line provided by Telkom is already equipped with the CID (caller identifier) but the service is not open to the end customer until the customer pay the service charge. But actually the CID is there and asterisk knows it but cannot open it. So it can answer the ring but if another call comes, suddenly it get confuse how to handle it and hangup the line. Off course we should make a good configuration not just downloading the trunk version.

I should thanks some good people who currently help me maintain the server, I should mentioned here:

Pak Wayan Sudana, Ketua KPLI Bali
Mas Adhi Wus, linuxer dari Denpasar
Mas Yan Arief (dkk), openSUSE user dari Yogyakarta

In the next post I will explain some configuration that I used, till then keep safe and have a lot of fun.


  1. halo maz salam kenal, nice article :).
    maz, bisa tidak ya di share untuk konfigurasi card Digium analog FXO dengan line direct (CO) nya ke Telkom ?
    saya asterisk newbie, mengalami kesulitan untuk menerima answer signal dari CO, padahal si penerima (handphone) sudah melakukan answer.
    mohon pencerahannya,

  2. Hi Mas Ronin,
    Sepertinya sudah saya share semua gimana cara mensetup Asterisk dengan Digium Card mulai dari tulsan Part 1 sampai Part 5. Kalau anda pelajari perlahan-lahan harusnya semua bekerja.

    Kemungkinan besar pada kasus anda adalah masalah loadzone dan defaultzone di file /etc/dahdi/system.conf (lihat tulisan saya di Part 2, Selamat mencoba.

  3. Halo maz, saya sudah coba, mengcopy dari contohnya maz edwin, tapi sepertinya masih belum sesuai harapan saya, jadi saya itu ingin supaya extension yang melakukan outbond call keluar melalui FXO itu sesuai dengan CDR nya, kalau hasil yang saya coba sekarang malah, meskipun telepon yang dituju belum menekan tombol answer (mengangkat) tapi CDR nya sudah terdeteksi answered.