เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

Asterisk Opensource IP Pbx

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

โพสต์โดย nuiz » 16 มี.ค. 2012 15:33

** ยกเลิกบทความนี้ครับ ให้ใช้บทความนี้แทน เทคนิคการติดตั้งการ์ด Analog/Digital สีเขียว **

** บทความนี้ไม่จำเพาะเจาะจงว่าจะใช้กับการติดตั้งการ์ดในตัวอย่างเท่านั้น สามารถใช้ได้กับการ์ดทุกๆแบบทุกๆยี่ห้อครับ แตกต่างกันตรงการคอมไพล์ไดร์เวอร์ บางยี่ห้อก็ต้องคอมไพล์ บางยี่ห้อก็ไม่ต้องคอมไพล์ แค่ลง DAHDI ก็ใช้งานได้แล้ว **

** ตอนท้ายของบทความจะมีเทคนิคการเพิ่มโมดูลด้วยนะครับ **

บทความต่อไปนี้ผมจะแนะนำเทคนิคการติดตั้งการ์ด BX1600 (การ์ดแบบ PCI 5.0v รองรับ FXS/FXO สูงสุด 16 พอร์ต มี 8 โมดูลๆละ 2 พอร์ต แต่ผมใส่เพียง FXO 3 โมดูล รวมเป็น 6 พอร์ต) รายละเอียดของการ์ดและราคา ตามลิ้งค์นี้ครับ BX1600 16-Port PCI Card for Asterisk

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

เครื่องที่ใช้ทดสอบมีเสป็คตามนี้ครับ Celeron Dual Core (รันแบบ 64 บิตได้), Ram 2 GB, HDD SATA 120 GB ติดตั้งโปรแกรมหลักๆดังต่อไปนี้

- CentOS 5.8 x86_64
- Asterisk 1.6.2.23
- Dahdi 2.6.0

และมีโปรแกรมอื่นๆอีกซึ่งอาจจะยังไม่ได้ใช้งานในขณะนี้

** บทความต่อไปนี้จะบอกวิธีการติดตั้ง Asterisk 1.6.2.23 ด้วยนะครับ ซึ่งก็ใช้ได้สำหรับมือใหม่ **

1. ติดตั้งโปรแกรมอื่นที่จำเป็น
เครื่องผมลง CentOS x86_64 นะครับ เวลาติดตั้งโปรแกรมก็เลยต้องเอาให้ชัวร์ว่าเป็นแบบ x86_64 ไม่ติดตั้ง i386 ด้วย (บางโปรแกรมถ้าเราไม่ได้ระบุ มันก็จะติดตั้งทั้ง i386 และ x86_64)
โค้ด: เลือกทั้งหมด
yum -y install kernel-devel.x86_64 kernel-headers.x86_64 gcc.x86_64 gcc-c++.x86_64 bison.x86_64 flex.x86_64 patch.x86_64 make.x86_64 ncurses.x86_64 ncurses-devel.x86_64 newt.x86_64 newt-devel.x86_64 autoconf automake libxml2-devel.x86_64 mysql.x86_64 mysql-devel.x86_64 mysql-server.x86_64 libtiff.x86_64 libtiff-devel.x86_64 net-snmp.x86_64 net-snmp-libs.x86_64 net-snmp-devel.x86_64 net-snmp-utils.x86_64 net-snmp-perl.x86_64 wireshark.x86_64 httpd.x86_64 httpd-devel.x86_64 libc-client.x86_64 libmcrypt.x86_64 mod_ssl.x86_64 ntp.x86_64 gmp.x86_64 libxslt.x86_64 libxslt-devel.x86_64

โค้ด: เลือกทั้งหมด
yum -y update openssl.x86_64 openssl-devel.x86_64 mod_ssl.x86_64


** สำหรับเครื่อง 32 บิต **
โค้ด: เลือกทั้งหมด
yum -y install kernel-devel kernel-headers gcc gcc-c++ bison flex patch make ncurses ncurses-devel newt newt-devel autoconf automake libxml2-devel mysql mysql-devel mysql-server libtiff libtiff-devel net-snmp net-snmp-libs net-snmp-devel net-snmp-utils net-snmp-perl wireshark httpd httpd-devel libc-client libmcrypt mod_ssl ntp gmp libxslt libxslt-devel


ติดตั้ง PHP (ถ้ายังไม่ได้ติดตั้ง)
โค้ด: เลือกทั้งหมด
rpm -ihv 'http://www.voip4share.com/sources/php-5.2.17-1.x86_64.rpm' --nodeps
rpm -ivh 'http://www.voip4share.com/sources/php-common-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-cli-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-bcmath-5.2.17-1.x86_64.rpm'
rpm -ihv 'http://www.voip4share.com/sources/php-devel-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-gd-5.2.17-1.x86_64.rpm'
rpm -ihv 'http://www.voip4share.com/sources/php-imap-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-ldap-5.2.17-1.x86_64.rpm'
rpm -ihv 'http://www.voip4share.com/sources/php-mbstring-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-mcrypt-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-pdo-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-mysql-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-ncurses-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-readline-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-snmp-5.2.17-1.x86_64.rpm'
rpm -ihv 'http://www.voip4share.com/sources/php-soap-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-xml-5.2.17-1.x86_64.rpm'
rpm -ivh 'http://www.voip4share.com/sources/php-xmlrpc-5.2.17-1.x86_64.rpm'


แก้ไขไฟล์ /etc/php.ini

โค้ด: เลือกทั้งหมด
upload_max_filesize = 20M
max_execution_time = 60
memory_limit = 64M


เช็คกว่าเครื่องมองเห็นการ์ดหรือไม่
รันคำสั่งนี้เช็คดูครับ
โค้ด: เลือกทั้งหมด
lspci

ก็จะเห็นประมาณนี้ นี่คือการ์ด BX1600 ครับ
โค้ด: เลือกทั้งหมด
02:02.0 Communication controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface


ติดตั้ง Radiusclient-ng
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/radiusclient-ng-0.5.6.tar.gz'
tar xzvf radiusclient-ng-0.5.6.tar.gz -C /usr/src/
cd /usr/src/radiusclient-ng-0.5.6
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make && make install


ติดตั้ง Spandsp
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/spandsp-0.0.6pre18.tgz'
tar xzvf spandsp-0.0.6pre18.tgz -C /usr/src
cd /usr/src/spandsp-0.0.6
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make clean
make
make install


สร้างไฟล์ /usr/include/linux/compiler.h
โค้ด: เลือกทั้งหมด
vi /usr/include/linux/compiler.h

ใส่ข้อมูลตามนี้
โค้ด: เลือกทั้งหมด
#ifndef __LINUX_COMPILER_H
#define __LINUX_COMPILER_H
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)
#endif /* __LINUX_COMPILER_H */


ติดตั้ง Pwlib
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/pwlib-v1_10_3-src-tar.gz'
tar xzvf pwlib-v1_10_3-src-tar.gz -C /usr/src
cd /usr/src/pwlib_v1_10_3
./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
make clean
make optshared
make install


พิมพ์บรรทัดต่อไปนี้
โค้ด: เลือกทั้งหมด
export PWLIBDIR=/usr/src/pwlib_v1_10_3
export OPENH323DIR=/usr/src/openh323_v1_18_0
export LD_LIBRARY_PATH=$PWLIBDIR/lib:$OPENH323DIR/lib


ติดตั้ง OpenH323
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/openh323-v1_18_0-src-tar.gz'
tar xzvf openh323-v1_18_0-src-tar.gz -C /usr/src
cd /usr/src/openh323_v1_18_0
./configure --prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
make clean
make optshared
make install


2. ติดตั้ง DAHDI 2.6.0 และ OSLEC
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/dahdi-linux-complete-2.6.0+2.6.0.tar.gz'
wget 'http://www.voip4share.com/sources/oslec-dahdi.tar.gz'
tar xzvf dahdi-linux-complete-2.6.0+2.6.0.tar.gz -C /usr/src
tar xzvf oslec-dahdi.tar.gz -C /usr/src/dahdi-linux-complete-2.6.0+2.6.0/linux/drivers


พิมพ์คำสั่งต่อไปนี้
โค้ด: เลือกทั้งหมด
sed -i "s|#obj-m += dahdi_echocan_oslec.o|obj-m += dahdi_echocan_oslec.o|" /usr/src/dahdi-linux-complete-2.6.0+2.6.0/linux/drivers/dahdi/Kbuild
sed -i "s|#obj-m += ../staging/echo/|obj-m += ../staging/echo/|" /usr/src/dahdi-linux-complete-2.6.0+2.6.0/linux/drivers/dahdi/Kbuild
echo 'obj-m += echo.o' > /usr/src/dahdi-linux-complete-2.6.0+2.6.0/linux/drivers/staging/echo/Kbuild


โค้ด: เลือกทั้งหมด
cd /usr/src/dahdi-linux-complete-2.6.0+2.6.0
make all
make install
make config
chkconfig dahdi on


ติดตั้ง Libpri
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/libpri-1.4.12.tar.gz'
tar xzvf libpri-1.4.12.tar.gz -C /usr/src
cd /usr/src/libpri-1.4.12
make
make install


3. ติดตั้งไดร์เวอร์การ์ด BX1600
โค้ด: เลือกทั้งหมด
cd /tmp
wget http://www.voip4share.com/sources/bluenet-linux-1.2.3.tar.bz2
tar xvf bluenet-linux-1.2.3.tar.bz2 -C /usr/src
cd /usr/src/bluenet-linux-1.2.3
./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --localstatedir=/var --with-dahdi=/usr/src/dahdi-linux-complete-2.6.0+2.6.0
make && make install


4. ติดตั้ง Asterisk 1.6.2.23
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/asterisk-1.6.2.23.tar.gz'
tar xzvf asterisk-1.6.2.23.tar.gz -C /usr/src
cd /usr/src/asterisk-1.6.2.23
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make menuselect

เลือกออปชั่นที่จะติดตั้ง ปกติผมก็จะเลือกเพิ่ม Core Sound Packages ให้มีไฟล์เสียง G.729 ด้วยและติดตั้งไฟล์เสียง G.729 ใน Extras Sound Packages
โค้ด: เลือกทั้งหมด
make
make install
make samples
make config


4. ติดตั้ง Asterisk Add-Ons
โค้ด: เลือกทั้งหมด
cd /tmp
wget 'http://www.voip4share.com/sources/asterisk-addons-1.6.2.4.tar.gz'
tar xzvf asterisk-addons-1.6.2.4.tar.gz -C /usr/src
cd /usr/src/asterisk-addons-1.6.2.4
./configure --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var
make menuselect


** เอา Channel Drivers -> chan_ooh323 ออก **

โค้ด: เลือกทั้งหมด
make
make install
make samples


6. คอนฟิก DAHDI เพิ่มเติม

6.1 ไฟล์ /etc/dahdi/modules
เช็คในไฟล์ /etc/dahdi/modules จะเห็นมี 2 บรรทัดนี้เพิ่่มขึ้นมา
โค้ด: เลือกทั้งหมด
t4xxp
bl1600a

โดยที่ t4xxp เป็นไดร์เวอร์การ์ด E1 ส่วน bl1600a เป็นไดร์เวอร์การ์ด 8 และ 16 Ports ครับ ถ้าไม่ได้ใส่การ์ด E1 ด้วยก็ให้แก้ไขไฟล์ /etc/dahdi/modules โดยใส่ # ไว้ข้างหน้าบรรทัด t4xxp ซะ แบบนี้
โค้ด: เลือกทั้งหมด
#t4xxp

ขอแนะนำอีกอย่างครับว่าไดร์เวอร์ไหนที่เราไม่ได้ใส่การ์ดเข้าไปก็ควรจะใส่ # ไม่โหลดมันซะ จะได้ไม่เปลืองเมมครับ ในเครื่องผมผมใส่การ์ด BL1600 อย่างเดียวเลย (ใส่มากกว่า 1 การ์ดได้) ผมมี # หน้าทุกบรรทัดเลยยกเว้นบรรทัด bl1600a

6.2 ไฟล์ /etc/dahdi/genconf_parameters
โค้ด: เลือกทั้งหมด
context_lines from-pstn
echo_can oslec

บรรทัด context_lines ไม่ต้องใส่ก็ได้นะครับ เพราะมันมี from-pstn เป็นค่าดีฟอลท์อยู่แล้ว แต่ใส่ไว้ก็ดีเผื่อต้องการเปลี่ยน

6.3 สตาร์ท DAHDI
รันคำสั่ง
โค้ด: เลือกทั้งหมด
service dahdi start


6.4 คำสั่ง dahdi_hardware
รันแล้วไม่เจออะไรนะครับ

6.5 รีสตาร์ท DAHDI
เพื่อให้ DAHDI มองเห็นการ์ด BX1600

โค้ด: เลือกทั้งหมด
service dahdi restart

ผลลัพธ์

Unloading DAHDI hardware modules: done
Loading DAHDI hardware modules:
bl1600a: [ OK ]

Running dahdi_cfg: [ OK ]

6.6 สร้างไฟล์ /etc/dahdi/system.conf
รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
dahdi_genconf

ไม่มีข้อความอะไรโชว์ให้เห็น แสดงว่าสร้างไฟล์คอนฟิกการ์ดได้สำเร็จ (ไฟล์ /etc/dahdi/system.conf)

6.7 ข้อมูลในไฟล์ /etc/dahdi/system.conf
ไฟล์นี้ผมไม่ได้สร้างเองนะครับ มันถูกสร้างขึ้นมาตอนผมรันคำสั่ง dahdi_genconf
โค้ด: เลือกทั้งหมด
# Span 1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
fxsks=1
echocanceller=oslec,1
fxsks=2
echocanceller=oslec,2
fxsks=3
echocanceller=oslec,3
fxsks=4
echocanceller=oslec,4
fxsks=5
echocanceller=oslec,5
fxsks=6
echocanceller=oslec,6
# channel 7, WCTDM/0/6, no module.
# channel 8, WCTDM/0/7, no module.
# channel 9, WCTDM/0/8, no module.
# channel 10, WCTDM/0/9, no module.
# channel 11, WCTDM/0/10, no module.
# channel 12, WCTDM/0/11, no module.
# channel 13, WCTDM/0/12, no module.
# channel 14, WCTDM/0/13, no module.
# channel 15, WCTDM/0/14, no module.
# channel 16, WCTDM/0/15, no module.
# Global data

loadzone        = us
defaultzone     = us


จากข้อมูลจะเห็นว่าเห็นอยู่ 6 พอร์ต (เพราะผมใส่โมดูลแบบ 2 พอร์ต จำนวน 3 โมดูล)

6.8 ไฟล์ /etc/asterisk/dahdi-channels.conf
ไฟล์นี้ผมก็ไม่ได้สร้างเอง มันสร้างตอนรันคำสั่ง dahdi_genconf
โค้ด: เลือกทั้งหมด
; Span 1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 1
callerid=
group=
context=default

;;; line="2 WCTDM/0/1 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 2
callerid=
group=
context=default

;;; line="3 WCTDM/0/2 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 3
callerid=
group=
context=default

;;; line="4 WCTDM/0/3 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 4
callerid=
group=
context=default

;;; line="5 WCTDM/0/4 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 5
callerid=
group=
context=default

;;; line="6 WCTDM/0/5 FXSKS"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 6
callerid=
group=
context=default

ข้อมูลข้างบนมีบรรทัดที่น่าสนใจมากๆอยู่ 3 บรรทัด

group = 0 เป็นหมายเลข Group ครับ ดีฟอลท์ทุกพอร์ตจะอยู่ใน Group 0 เหมือนกันหมด จะมองว่า Group เป็น Hunting ก็ได้ มีประโยชน์ตอนโทรออก (โทรจาก Asterisk ออกไปภายนอก) หมายเลข Group มีได้ตั้งแต่ 0 จนถึง 63
context = from-pstn เป็นชื่อ Context สำคัญตอนรับสายเข้า
channel => 1 เป็นหมายเลขพอร์ต มีประโยชน์ทั้งตอนโทรออก (โทรออกแบบระบุพอร์ต) และโทรเข้า (โทรเข้าแบบระบุพอร์ต)

ถ้ายังไม่เข้าใจไว้ตอนคอนฟิกเทสโทรเข้า โทรออก จะเข้าใจเองครับ

6.9 ไฟล์ /etc/asterisk/chan_dahdi.conf
ไฟล์นี้ผมไม่ได้สร้างเอง และไม่ได้สร้างจากการรันคำสั่ง dahdi_genconf ด้วย เป็นไฟล์ดีฟอลท์ตอนติดตั้ง Asterisk ครับ เป็นพารามิเตอร์ทั่วไปที่จะทำให้เราปรับแต่งการ์ดให้มันทำงานเหมาะสมกับแอ๊ปของเราได้ดียิ่งขึ้น ไฟล์นี้มีข้อมูลอยู่เยอะมากครับ มีทั้งของการ์ด Analog (FXS/FXO) และการ์ด Digital (E1)

ในเครื่องเรามีแต่การ์ด BX1600 (การ์ด Analog FXO) ก็น่าจะตัดข้อมูลที่ไม่เกี่ยวข้องออก ให้มันดูง่ายขึ้น

โค้ด: เลือกทั้งหมด
mv /etc/asterisk/chan_dahdi.conf /etc/asterisk/chan_dahdi.conf.backup

แล้วให้มีข้อมูลต่อไปนี้
โค้ด: เลือกทั้งหมด
[trunkgroups]

[channels]

usercallerid=yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
canpark=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
;relaxdtmf=yes
;rxgain=2.0
;txgain=3.0
group=1
callgroup=1
pickupgroup=1
;immediate=yes
callerid=asreceived
busydetect=yes
busycount=3
;busypattern=500,500
;answeronpolarityswitch=yes
;hanguponpolarityswitch=yes
; -- FXO --
;ringtimeout=8000
;pulsedial=yes
;faxdetect=both
;faxbuffer=6,full
;jitter=4

#include dahdi-channels.conf


อย่าลืมบรรทัดสุดท้ายนะครับเป็นการเรียกไฟล์ dahdi-channels.conf ถ้าเราไม่เพิ่มไฟล์นี้เข้าไปก็จะมีปัญหาเวลารัน Asterisk มันจะมองไม่เห็นการ์ด

6.10 เช็คสถานะของ DAHDI
โค้ด: เลือกทั้งหมด
service dahdi status

ผลลัพธ์
โค้ด: เลือกทั้งหมด
### Span  1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
  1 FXO        FXSKS       (EC: OSLEC - INACTIVE) 
  2 FXO        FXSKS       (EC: OSLEC - INACTIVE)  RED
  3 FXO        FXSKS       (EC: OSLEC - INACTIVE)  RED
  4 FXO        FXSKS       (EC: OSLEC - INACTIVE)  RED
  5 FXO        FXSKS       (EC: OSLEC - INACTIVE)  RED
  6 FXO        FXSKS       (EC: OSLEC - INACTIVE)  RED
  7 unknown    Reserved     
  8 unknown    Reserved     
  9 unknown    Reserved     
10 unknown    Reserved     
11 unknown    Reserved     
12 unknown    Reserved     
13 unknown    Reserved     
14 unknown    Reserved     
15 unknown    Reserved     
16 unknown    Reserved


7. สตาร์ท Asterisk
โค้ด: เลือกทั้งหมด
service asterisk start


ให้ Asterisk สตาร์ทตอนเปิดเครื่อง
โค้ด: เลือกทั้งหมด
chkconfig asterisk on


เช็ค Process
โค้ด: เลือกทั้งหมด
ps -ef | grep asterisk

ผลลัพธ์
root 6234 1 0 06:06 pts/0 00:00:00 /bin/sh /usr/sbin/safe_asterisk
root 6239 6234 1 06:06 pts/0 00:00:00 /usr/sbin/asterisk -f -vvvg -c

ติดตั้ง Codec G.723 และ G.729
รายละเอียดจริงๆของวิธีการติดตั้ง Free codecs G.723.1 และ G.729 อ่านได้จากบทความนี้ครับ ติดตั้ง G.723.1 และ G.729 ให้ Asterisk

ได้ว่าเครื่องผมต้องใช้ไฟล์ 2 ไฟล์นี้
โค้ด: เลือกทั้งหมด
cd /tmp
wget http://asterisk.hosting.lv/bin162/codec_g723-ast16-gcc4-glibc-x86_64-pentium4.so
wget http://asterisk.hosting.lv/bin162/codec_g729-ast16-gcc4-glibc-x86_64-pentium4.so

โค้ด: เลือกทั้งหมด
cp codec_g729-ast16-gcc4-glibc-x86_64-pentium4.so /usr/lib/asterisk/modules/codec_g729.so
cp codec_g723-ast16-gcc4-glibc-x86_64-pentium4.so /usr/lib/asterisk/modules/codec_g723.so
asterisk -rx "module load codec_g723.so"
asterisk -rx "module load codec_g729.so"


เช็คว่า Asterisk มองเห็นการ์ด (พอร์ต) หรือไม่
รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi show status"

ผลลัพธ์
โค้ด: เลือกทั้งหมด
Description                              Alarms  IRQ    bpviol CRC4   Fra Codi Options  LBO
Bluenet BL1600A Rev 1.00 Board 1         OK      0      0      0      CAS Unk           0 db (CSU)/0-133 feet (DSX-1)


รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi show channels"

ผลลัพธ์
โค้ด: เลือกทั้งหมด
   Chan Extension  Context         Language   MOH Interpret        Blocked    State     
pseudo            default                    default                         In Service
      1            from-pstn                  default                         In Service
      2            from-pstn                  default                         In Service
      3            from-pstn                  default                         In Service
      4            from-pstn                  default                         In Service
      5            from-pstn                  default                         In Service
      6            from-pstn                  default                         In Service

ดูพอร์ตที่ 1 ซึ่งผมต่อสายโทรศัพท์ไว้
โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi show channel 1"

Channel: 1
File Descriptor: 18
Span: 1
Extension:
Dialing: no
Context: from-pstn
Caller ID:
Calling TON: 0
Caller ID name:
Mailbox: none
Destroy: 0
InAlarm: 0
Signalling Type: FXS Kewlstart
Radio: 0
Owner: <None>
Real: <None>
Callwait: <None>
Threeway: <None>
Confno: -1
Propagated Conference: -1
Real in conference: 0
DSP: no
Busy Detection: no
TDD: no
Relax DTMF: no
Dialing/CallwaitCAS: 0/0
Default law: ulaw
Fax Handled: no
Pulse phone: no
DND: no
Echo Cancellation:
128 taps
currently OFF
Wait for dialtone: 0ms
Actual Confinfo: Num/0, Mode/0x0000
Actual Confmute: No
Hookstate (FXS only): Onhook
[/code]

เอาหล่ะครับ ก็เป็นอันว่าการติดตั้งและคอนฟิกการ์ด BX1600 สำเร็จลุล่วงไปด้วยดี ไม่มีปัญหาอะไร แต่ก็ไม่ใช่ว่าเราไม่ต้องปรับแต่งคอนฟิกอะไรแล้วนะครับ บางทีเราก็อาจจะต้องมาปรับค่าในไฟล์ /etc/asterisk/chan_dahdi.conf อย่างเช่นกรณีโทรเข้าออกผ่านการ์ด BL1600 แล้วสายค้าง ประมาณนี้ครับ

7. สร้าง SIP Extensions ไว้เพื่อทดสอบ
ไฟล์ /etc/asterisk/sip.conf
โค้ด: เลือกทั้งหมด
[test-basic-options](!)
dtmfmode=rfc2833
context=from-internal
type=friend
port=5060
host=dynamic
nat=yes
rtptimeout=30
rtpholdtimeout=60
qualify=yes
canreinvite=no

[test-my-codecs](!)
disallow=all
allow=g729
allow=ulaw

[88000](test-basic-options,test-my-codecs)
defaultuser=88000
secret=bkk88000

[88001](test-basic-options,test-my-codecs)
defaultuser=88001
secret=bkk88001

รันคำสั่งต่อไปนี้
โค้ด: เลือกทั้งหมด
asterisk -rx "sip reload"
asterisk -rx "sip show peers"


ปิด iptables ก่อนชั่วคราว
ไว้ให้เทสผ่านก่อนแล้วค่อยเปิดและคอนฟิกให้ VoIP ผ่านได้
รันคำสั่งต่อไปนี้
โค้ด: เลือกทั้งหมด
service iptables stop


รีจิสเตอร์ SIP Account
คอนฟิก Softphone (เพราะง่ายสุด) ให้รีจิสเตอร์ ผมใช้โปรแกรม Zoiper เวอร์ชั่นที่มี G.729 (หาได้จากในเว็บแชร์ไฟล์ทั่วไป)

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

เช็คว่าบน Asterisk เห็นยูสเซอร์รีจิสเตอร์
รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
asterisk -rx "sip show peers"

ผลลัพธ์
โค้ด: เลือกทั้งหมด
# asterisk -rx "sip show peers"
Name/username              Host            Dyn Nat ACL Port     Status     
88000/88000                192.168.100.88    D   N      5060     OK (72 ms)
88001/88001                (Unspecified)    D   N      5060     UNKNOWN   


คอนฟิก Dialplan อย่างง่ายๆ
ให้ SIP Account โทรเข้ามาทดสอบได้

ไฟล์ /etc/asterisk/extensions.conf
เปลี่ยนชื่อไฟล์ /etc/asterisk/extensions.conf ไฟล์เดิมให้เป็นชื่อใหม่ก่อน
โค้ด: เลือกทั้งหมด
mv /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.backup

แล้วสร้างไฟล์ขึ้นมาใหม่
โค้ด: เลือกทั้งหมด
vi /etc/asterisk/extensions.conf

ให้มีข้อมูลตามนี้
โค้ด: เลือกทั้งหมด
[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2

[from-internal]
exten => 1234,1,Playback(demo-congrats)
exten => 1234,n,Hangup


รีโหลด Dialplan
รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
asterisk -rx "dialplan reload'


เทสโทรจาก Softphone กด 1234 ถ้าได้ยินเสียงก็แสดงว่าเวอร์คแล้ว เราก็พร้อมจะทำการทดสอบโทรเข้าและออกผ่านทางการ์ด BX1600 แล้ว

8. คอนฟิกแบ่ง Group

ปกติถ้าในเครื่องมีการ์ดเดียว (หรือหลายๆการ์ด) เราควรจะแบ่งพอร์ตให้ชัดเจนเลยว่าจะใช้พอร์ตไหนโทรเข้า พอร์ตไหนไว้โทรออก หรือพอร์ตไหนไว้เป็นเบอร์แฟกซ์ ยกตัวอย่าง โทรเข้าพอร์ต 1,2 โทรออกพอร์ต 3,4,5 เบอร์ fax พอร์ต 6

เพราะฉะนั้นเราก็แบ่งออกเป็น 3 Groups เอาเป็น Group 0, 1 และ 2 หล่ะกันครับ โดยที่พอร์ต 1-2 อยู่ Group 0 พอร์ต 3-5 อยู่ Group 1 ส่วนพอร์ต 6 อยู่ Group 3

เราแบ่ง Group ในไฟล์ /etc/asterisk/dahdi-channels.conf โดยแก้เลข 0 ในบรรทัด group=0 เป็นค่าที่เราต้องการ

โค้ด: เลือกทั้งหมด
; Span 1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
;;; line="1 WCTDM/0/0 FXSKS  (EC: OSLEC - INACTIVE)"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 1
callerid=
group=
context=default

;;; line="2 WCTDM/0/1 FXSKS  (EC: OSLEC - INACTIVE)"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 2
callerid=
group=
context=default

;;; line="3 WCTDM/0/2 FXSKS  (EC: OSLEC - INACTIVE)"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-pstn
channel => 3
callerid=
group=
context=default

;;; line="4 WCTDM/0/3 FXSKS  (EC: OSLEC - INACTIVE)"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-pstn
channel => 4
callerid=
group=
context=default

;;; line="5 WCTDM/0/4 FXSKS  (EC: OSLEC - INACTIVE)"
signalling=fxs_ks
callerid=asreceived
group=1
context=from-pstn
channel => 5
callerid=
group=
context=default

;;; line="6 WCTDM/0/5 FXSKS  (EC: OSLEC - INACTIVE)"
signalling=fxs_ks
callerid=asreceived
group=2
context=from-pstn
channel => 6
callerid=
group=
context=default


*** ถ้ายังมองประโยชน์ของการแบ่ง Group ไม่เคลียร์นะครับ ให้นึกเอาว่า ตอนเราโทรออก (โทรจาก Softphone ผ่านการ์ดออกไปภายนอก) ถ้ามันออกทางพอร์ตที่เราไม่ต้องการให้ออก เป็นต้นว่าพอร์ตนั้นเอาไว้รับสายเข้า พอร์ตนั้นเอาไว้ให้คนส่งแฟกซ์เข้ามา พอร์ตนั้นต่อกับเบอร์ที่มีค่าโทรแพงๆ มันก็ไม่ค่อยจะดีใช่ป่ะครับ ***

รันคำสั่งต่อไปนี้
โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi restart"


เช็ค Group ด้วยคำสั่งต่อไปนี้
โค้ด: เลือกทั้งหมด
asterisk -rx "dahdi show channels group 0"
asterisk -rx "dahdi show channels group 1"
asterisk -rx "dahdi show channels group 2"

ผลลัพธ์
โค้ด: เลือกทั้งหมด
   Chan Extension  Context         Language   MOH Interpret        Blocked    State     
      1            from-pstn                  default                         In Service
      2            from-pstn                  default                         In Service

โค้ด: เลือกทั้งหมด
  Chan Extension  Context         Language   MOH Interpret        Blocked    State     
      3            from-pstn                  default                         In Service
      4            from-pstn                  default                         In Service
      5            from-pstn                  default                         In Service

โค้ด: เลือกทั้งหมด
   Chan Extension  Context         Language   MOH Interpret        Blocked    State     
      6            from-pstn                  default                         In Service


ก็เป็นอันว่าเราแบ่งทั้ง 6 พอร์ตออกเป็น 3 Groups เรียบร้อยแล้ว เวลาเรียกใช้งานพอร์ตเราสามารถอ้างค่าหมายเลข Group ของมันแทนได้ ซึ่ง Asterisk จะเช็คว่ามีพอร์ตไหนว่างอยู่ก็จะใช้พอร์ตนั้น ถ้าไม่มีพอร์ตว่างและเราไม่ได้ให้มันส่งออกไปทางอื่นก็จะส่ง busy ให้ได้ยิน

การอ้างอิงหมายเลข Group ทำได้ 4 แบบครับ โดยใช้ตัวอักษร G, g, R, r ตามด้วยหมายเลข group ยกตัวอย่าง

G0 หมายถึงใช้พอร์ตในกรุ๊ปโดยใช้พอร์ตที่มีหมายเลขน้อยสุดก่อน ถ้าไม่ว่างค่อยใช้พอร์ตหมายเลขสูงกว่า (พอร์ตแรกในกรุ๊ปจะถูกใช้งานเยอะที่สุด)
g0 หมายถึงใช้พอร์ตในกรุ๊ปโดยใช้พอร์ตที่มีหมายเลขมากที่สุดก่อน ถ้าไม่ว่างค่อยใช้พอร์ตหมายเลขต่ำกว่า (พอร์ตสุดท้ายในกรุ๊ปจะถูกใช้งานเยอะสุด)
R0 หมายถึงใช้พอร์ตในกรุ๊ปแบบวนไปเรื่อยๆ หรือที่เราเรียกว่า Round Robbin โดยเริ่มจากพอร์ตที่มีหมายเลขต่ำสุดก่อน แล้ววนไปเรื่อยๆ (ทุกพอร์ตถูกใช้งานเท่าๆกัน)
r0 หมายถึงใช้พอร์ตในกรุ๊ปแบบวนไปเรื่อยๆ (แบบเดียวกับ R0) แต่เริ่มจากพอร์ตหมายเลขสูงที่สุดก่อน

*** เปลี่ยนหมายเลข Group แล้ว ห้ามมมมมมมม รันคำสั่ง dahdi_genconf อีกนะครับ ไม่อย่างนั้นก็ต้องมาทำใหม่อีก ยกเว้นต้องการเลิกแบ่ง Group แล้ว ***

9. คอนฟิก Dialplan โทรออกผ่านการ์ด

ตั้งเงื่อนไขการโทรออกพอร์ต FXO ว่า กด 0 นำหน้าตามด้วยเลขอะไรก็ได้

ไฟล์ /etc/asterisk/extensions.conf

โค้ด: เลือกทั้งหมด

[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2

[from-internal]
exten => 1234,1,Playback(demo-congrats)
exten => 1234,n,Hangup

exten => _0X.,1,Dial(DAHDI/G0/${EXTEN},60)
exten => _0X.,n,Hangup


เซฟไฟล์แล้วรีโหลด Dialplan

โค้ด: เลือกทั้งหมด
asterisk -rx "dialplan reload"


ทดสอบโทรออก
เข้า Asterisk Console เพื่อดู Events ที่เกิดขึ้นขณะเราทดสอบ จาก Softphone โทรออกสายนอกกด 0x ได้เลย เช่น 0851619439
โค้ด: เลือกทั้งหมด
asterisk -rvvvv


ข้อความขณะโทรออก
-- Executing [0851619439@from-internal:1] Dial("SIP/88000-00000001", "DAHDI/G0/0851619439,60") in new stack
-- Called G0/0851619439
-- DAHDI/1-1 answered SIP/88000-00000001

ก็คุยได้ครับ เป็นอันว่าคอนฟิกโทรออกผ่านการ์ดได้แล้ว

9. คอนฟิก Dialplan รับสายเข้า
ตอนคอนฟิกการ์ดให้รับสายเข้า จะยุ่งยากนิดนึงก็ตรงเรื่องของ Context ครับ ซึ่งถ้าสังเกตุในไฟล์ /etc/asterisk/dahdi-channels.conf จะเห็นมีบรรทัด context=from-pstn อยู่ในทุกๆพอร์ต

;;; line="1 WCTDM/0/0 FXSKS (EC: MG2 - INACTIVE)"
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn

context ชื่อ from-pstn เป็นค่าดีฟอลท์ของพอร์ต FXO แต่เราจะแก้ไขเป็นค่าอื่นก็ได้เช่น from-zaptel (แต่ถ้ารันคำสั่ง dahdi_genconf ก็จะกลับมาเป็นค่าเดิมอีก ยกเว้นเราไปใส่บรรทัด context_lines from-zaptel ไว้ในไฟล์ /etc/dahdi/genconf_parameters ไม่ว่าจะรัน dahdi_genconf อีกกี่รอบมันก็จะไม่เปลี่ยน)

context เอาไว้คอนโทรลตอนรับสายเข้าครับ แต่ละพอร์ต (ที่ใช้รับสายเข้า) ก็ไม่จำเป็นว่าต้องมี context ชื่อเดียวกัน เราคอนฟิกได้ว่าถ้าโทรมาเข้าพอร์ตๆนี้จะให้ไปรันหรือเรียกอะไรขึ้นมาทำงาน ตอนโทรเข้าจะไม่เกี่ยวกับ Group แล้วนะครับ (Group มันเอาไว้ตอนโทรออกอย่างเดียว) ถึงเราจะคอนฟิกให้พอร์ตที่รับสายเข้ามีหลายๆพอร์ต เราก็แยกได้ว่าแต่ละพอร์ตเอาไว้ทำอะไร เป็นอิสระจากกันเลย

มาดูตัวอย่างกันครับจะเข้าใจง่ายขึ้น ผมตั้งเงื่อนไขการโทรเข้าไว้อย่างง่ายๆว่า โทรเข้าแล้วให้ดังที่เบอร์ Extensions 88000 เลย

ไฟล์ /etc/asterisk/extensions.conf

โค้ด: เลือกทั้งหมด

[general]
static=yes
writeprotect=no
clearglobalvars=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=DAHDI/G2

[from-internal]
exten => 1234,1,Playback(demo-congrats)
exten => 1234,n,Hangup

exten => _0X.,1,Dial(DAHDI/G0/${EXTEN},60)
exten => _0X.,n,Hangup

[from-pstn]
exten => s,1,Dial(SIP/88000)
exten => s,n,Hangup


รีโหลด Dialplan
โค้ด: เลือกทั้งหมด
asterisk -rx "dialplan reload"


โทรเข้าเบอร์ที่ต่ออยู่ บนหน้าจอ Asterisk Console จะปรากฏข้อความคล้ายๆแบบนี้

โค้ด: เลือกทั้งหมด
    -- Starting simple switch on 'DAHDI/1-1'
    -- Executing [s@from-pstn:1] Dial("DAHDI/1-1", "SIP/88000") in new stack
  == Using SIP RTP CoS mark 5
    -- Called 88000
    -- SIP/88000-00000002 is ringing
    -- SIP/88000-00000002 is ringing
    -- SIP/88000-00000002 answered DAHDI/1-1
[Mar 18 15:32:55] WARNING[2198]: chan_dahdi.c:6497 dahdi_handle_event: Ring/Off-hook in strange state 6 on channel 1
  == Spawn extension (from-pstn, s, 1) exited non-zero on 'DAHDI/1-1'
    -- Hungup 'DAHDI/1-1'


เบอร์ Extensions 88000 ที่ผมรีจิสเตอร์อยู่ด้วย Softphone จะ Ring รับสายแล้วคุยกันได้เลย

ก็เป็นอันว่าติดตั้งการ์ด 16 FXO การ์ดนี้บน Asterisk เสร็จเรียบร้อยแล้วครับ

10. ติดตั้งโมดูลเพิ่มเติม
ผมได้ทำการติดตั้ง Dual FXO เพิ่มอีก 2 โมดูล ซึ่งตอนนี้เท่ากับว่าบนการ์ดมี Dual FXO จำนวน 5 โมดูล รวมเป็น 10 พอร์ตแล้ว

*** ตอนถอดการ์ดให้ถอดสายไฟ สายแลน เม๊าส์ คีบอร์ด สายต่อจอ ออกให้หมดเลยนะครับ ไม่จำเพาะการ์ดนี้เท่านั้นนะครับ ทุกๆการ์ด ทุกๆยี่ห้อก็ควรจะทำแบบนี้ เพื่อยืดอายุการใช้งาน ***

เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
service dahdi status


ผลลัพธ์
โค้ด: เลือกทั้งหมด
### Span  1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
  1 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE) 
  2 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  3 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  4 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  5 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  6 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  7 FXO        FXSKS        RED
  8 FXO        FXSKS        RED
  9 FXO        FXSKS        RED
10 FXO        FXSKS        RED
11 unknown    Reserved     
12 unknown    Reserved     
13 unknown    Reserved     
14 unknown    Reserved     
15 unknown    Reserved     
16 unknown    Reserved



** ถ้าคอนฟิกเดิมก่อนเพิ่มโมดูล เราได้มีการแก้ไขไฟล์ /etc/asterisk/dahdi-channels.conf แบ่ง Group แก้ไข Context แล้ว หากเรารันคำสั่ง dahdi_genconf อีก ที่เราคอนฟิกไว้มันก็จะกลายเป็นค่าดีฟอลท์ ผมมีวิธีแก้ไขไฟล์แบบ manual มาฝากครับ ดังนี้ **

แก้ไขไฟล์ /etc/dahdi/system.conf

ของเดิม

# Span 1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
fxsks=1
echocanceller=oslec,1
fxsks=2
echocanceller=oslec,2
fxsks=3
echocanceller=oslec,3
fxsks=4
echocanceller=oslec,4
fxsks=5
echocanceller=oslec,5
fxsks=6
echocanceller=oslec,6
# channel 7, WCTDM/0/6, no module.
# channel 8, WCTDM/0/7, no module.
# channel 9, WCTDM/0/8, no module.
# channel 10, WCTDM/0/9, no module.
# channel 11, WCTDM/0/10, no module.
# channel 12, WCTDM/0/11, no module.
# channel 13, WCTDM/0/12, no module.
# channel 14, WCTDM/0/13, no module.
# channel 15, WCTDM/0/14, no module.
# channel 16, WCTDM/0/15, no module.

# Global data

loadzone = us
defaultzone = us

ใหม่ (เพิ่มคอนฟิกของพอร์ต 7 - 10 ตามตัวอย่างได้เลยครับ)

# Span 1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
fxsks=1
echocanceller=oslec,1
fxsks=2
echocanceller=oslec,2
fxsks=3
echocanceller=oslec,3
fxsks=4
echocanceller=oslec,4
fxsks=5
echocanceller=oslec,5
fxsks=6
echocanceller=oslec,6

fxsks=7
echocanceller=oslec,7
fxsks=8
echocanceller=oslec,8
fxsks=9
echocanceller=oslec,9
fxsks=10
echocanceller=oslec,10


# channel 11, WCTDM/0/10, no module.
# channel 12, WCTDM/0/11, no module.
# channel 13, WCTDM/0/12, no module.
# channel 14, WCTDM/0/13, no module.
# channel 15, WCTDM/0/14, no module.
# channel 16, WCTDM/0/15, no module.

# Global data

loadzone = us
defaultzone = us


ไฟล์ /etc/asterisk/dahdi-channels.conf เพิ่มบรรทัดต่อไปนี้ต่อท้าย จะเปลี่ยนหมายเลข Group หรือ Context ก็ได้ครับ ตามสะดวก ผมใช้ค่าดีฟอลท์เลย
โค้ด: เลือกทั้งหมด
signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 7
callerid=
group=
context=default

signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 8
callerid=
group=
context=default

signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 9
callerid=
group=
context=default

signalling=fxs_ks
callerid=asreceived
group=0
context=from-pstn
channel => 10
callerid=
group=
context=default


รีโหลด Dahdi และ Asterisk ใหม่ให้มันรับรู้ว่ามีพอร์ตเพิ่มขึ้นมาแล้ว รันคำสั่งต่อไปนี้
โค้ด: เลือกทั้งหมด
service asterisk stop
service dahdi restart
service asterisk start


ตรวจสอบ รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
service dahdi status
[code]
ผลลัพธ์
[code]
### Span  1: WCTDM/0 "Bluenet BL1600A Rev 1.00 Board 1" (MASTER)
  1 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE) 
  2 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  3 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  4 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  5 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  6 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  7 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  8 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
  9 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
10 FXO        FXSKS       (In use) (EC: OSLEC - INACTIVE)  RED
11 unknown    Reserved     
12 unknown    Reserved     
13 unknown    Reserved     
14 unknown    Reserved     
15 unknown    Reserved     
16 unknown    Reserved     
[/code]
รันอีกคำสั่ง
[code]
asterisk -rx "dahdi show channels group 0"
[/code]
ผลลัพธ์
[code]
   Chan Extension  Context         Language   MOH Interpret        Blocked    State     
      1            from-pstn                  default                         In Service
      2            from-pstn                  default                         In Service
      7            from-pstn                  default                         In Service
      8            from-pstn                  default                         In Service
      9            from-pstn                  default                         In Service
     10            from-pstn                  default                         In Service

ก็จะเห็นว่า Group 0 มีพอร์ตหมายเลข 7, 8, 9 และ 10 โชว์ขึ้นมาแล้ว ก็คอนฟิกใช้งานได้เลยครับ

ขอขอบคุณเว็บไซต์ http://www.buyasteriskcard.com ที่เอื้อเฟื้ออุปกรณ์ให้ทดสอบ

บทความที่เกี่ยวข้อง
OSLEC - สุดยอด Software Echo Canceller
เทคนิคการติดตั้งการ์ด 16 FXO บน Asterisk
เทคนิคการติดตั้งการ์ด 16 FXO บน Elastix 2.0.3
เทคนิคการติดตั้งการ์ด 16 FXO บน Elastix 2.3.0
การเชื่อมต่อ GSM FWT กับพอร์ต FXO
เทคนิคการติดตั้งการ์ด TDM400P (4 FXO/FXS) บน Asterisk
เทคนิคการติดตั้งการ์ด TDM410P (4 FXO/FXS) บน Asterisk
วิธีเช็คว่า Echo Canceller ทำงานหรือไม่
** งานเร่งด่วนติดต่อที่เบอร์ 085-161-9439 อีเมล์ iamaladin@gmail.com ไลน์ไอดี nuizvoip ครับ ผมหนุ่ยครับ**
nuiz
Diamond Member
 
โพสต์: 7327
ลงทะเบียนเมื่อ: 24 มี.ค. 2010 09:33

Re: เทคนิคการติดตั้งการ์ด BX1600 (16 FXO) บน Asterisk

โพสต์โดย Nostadamud » 19 มี.ค. 2012 11:06

ขอบคุณครับ เดี๋ยวจะลองดูนะครับ : )
Nostadamud
Silver Member
 
โพสต์: 41
ลงทะเบียนเมื่อ: 25 ต.ค. 2010 09:08


ย้อนกลับไปยัง Asterisk SIP Server

ผู้ใช้งานขณะนี้

่กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 1 ท่าน

cron