เทคนิคการติดตั้งการ์ด 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

รูปภาพ

รูปภาพ

รูปภาพ

รูปภาพ

เครื่องที่ใช้ทดสอบมีเสป็คตามนี้ครับ 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 (หาได้จากในเว็บแชร์ไฟล์ทั่วไป)

รูปภาพ

รูปภาพ

รูปภาพ

เช็คว่าบน 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 พอร์ตแล้ว

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

รูปภาพ

รันคำสั่งนี้
โค้ด: เลือกทั้งหมด
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 ทำงานหรือไม่
** หากมีปัญหากับอุปกรณ์ที่ซื้อมาเองหรือบริการที่ทำขึ้นมาเอง ให้โพสต์ถามในเว็บบอร์ดนี้นะครับ **
** งานเร่งด่วนติดต่อว่าจ้างที่เบอร์ 08-5161-9439 อีเมล์ iamaladin@gmail.com ไลน์ NuizVoip ครับ **
nuiz
Diamond Member
 
โพสต์: 7058
ลงทะเบียนเมื่อ: 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