** บทความนี้เหมาะสำหรับท่านที่ลง Asterisk มีการใช้งานการ์ด Asterisk ในเครื่อง และต้องการติดตั้ง Software Echo Canceller แบบ OSLEC เพิ่มเติม **
รายละเอียดเกี่ยวกับ OSLEC
OSLEC - Open Source Line Echo Canceller ซอฟท์แวร์กำจัดเสียงสะท้อนกลับบนการ์ด DAHDI/Zaptel ที่มีประสิทธิภาพสูง ไม่ต้องคอนฟิกค่า ใช้งานได้จริง
ท่านที่เคยซื้อการ์ด DAHDI/Zaptel ไม่ว่าจะเป็น FXS, FXO หรือว่า E1 ก็ตาม โดยเฉพาะการ์ดที่ไม่มีภาค Echo Canceller อยู่ในการ์ด มักจะต้องเจอกับปัญหาเสียงสะท้อนกลับอยู่บ่อยๆ ลองอินาเบิลฟีเจอร์ Echo Canceller ที่มีมาพร้อมกับ Zaptel หรือ DAHDI แล้วมันก็เวอร์คบ้างไม่เวอร์คบ้าง อย่างนี้ต้องลองใช้ OSLEC ดูครับ
บทความนี้ผมจะแนะนำวิธีการติดตั้ง OSLEC ร่วมกับ DAHDI บนเครื่อง CentOS 5.4
1. เช็ค Kernel Version บนเครื่อง
- โค้ด: เลือกทั้งหมด
uname -r
- โค้ด: เลือกทั้งหมด
ผลลัพธ์
2.6.18-164.11.1.el5
เป็น Kernel เวอร์ชั่น 2.6.18
ใน Kernel ของ CentOS เวอร์ชั่นนี้ไม่มี OSLEC อยู่ด้วยนะครับ (OSLEC เกิดไม่ทัน)
2. ติดตั้ง kernel-devel
จริงๆแล้วขั้นตอนนี้ จะใช้กับการคอมไพล์ DAHDI ใหม่ คนที่เคยคอมไพล์แล้วก็จะมี kernel-devel อยู่ในเครื่องแล้ว ข้ามไปขั้นตอนต่อไปได้เลยครับ
- โค้ด: เลือกทั้งหมด
yum -y install kernel-devel
จะมีไดเร็คตอรี่ /usr/src/kernels/2.6.18-164.11.1.el5-i686
แต่ไดเร็คตอรี่เป้าหมายของเราคือ /usr/src/kernels/2.6.18-164.11.1.el5-i686/drivers ซึ่งเราจะก๊อบไดเร็คตอรี่ของ OSLEC (ที่เราจะเอามาจาก Source Code แท้ๆของ Linux Kernel)ไปไว้ข้างใน
3. ดาวน์โหลด Source Code ของ DAHDI
ถ้าไม่มี Source Code ของ DAHDI ให้ดาวน์โหลดจากเว็บนี้นะครับ http://downloads.asterisk.org/pub/telephony/dahdi-linux โหลดเวอร์ชั่นที่ใหม่ที่สุด
- โค้ด: เลือกทั้งหมด
cd /tmp
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/dahdi-linux-2.2.1.tar.gz
tar xzvf dahdi-linux-2.2.1.tar.gz -C /usr/src
mkdir /usr/src/dahdi-linux-2.2.1/drivers/staging
4. ดาวน์โหลด Kernel Source Code เวอร์ชั่นที่มี OSLEC
4.1 ดาวน์โหลด Kernel 2.6.32 Source Code
อาจจะสงสัยว่าในเมื่อบนเครื่องใช้ Kernel 2.6.18 แล้วทำไมต้องโหลด Source Code ของ 2.6.32 มา เป็นเพราะว่า 2.6.18 ไม่มี OSLEC หน่ะครับ ก็เลยโหลดของเวอร์ชั่นอื่นมาและควรเป็นเวอร์ชั่นที่ใหม่ที่สุดในขณะนั้น
ไปที่เว็บไซต์ http://kernel.org/pub/linux/kernel/v2.6
หา Source Code ของ Kernel เวอร์ชั่น 2.6.32 แล้วดาวน์โหลดมา เวอร์ชั่นล่าสุดคือ 2.6.32.8
สำหรับท่านที่ไม่อยากดาวน์โหลด Kernel Source Code (ไฟล์ขนาดประมาณ 60 Mb แต่ใช้แค่นิดเดียว) ให้ข้ามไปขั้นตอนที่ 5 ครับ
- โค้ด: เลือกทั้งหมด
cd /tmp
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.8.tar.bz2
tar xvf linux-2.6.32.8.tar.bz2 -C /usr/src
4.2 ก๊อปไฟล์
- โค้ด: เลือกทั้งหมด
cp -rf /usr/src/linux-2.6.32.8/drivers/staging/echo /usr/src/dahdi-linux-2.2.1/drivers/staging
4.3 แก้ไขไฟล์คอนฟิกใน DAHDI
- โค้ด: เลือกทั้งหมด
sed -i "s|#obj-m += dahdi_echocan_oslec.o|obj-m += dahdi_echocan_oslec.o|" /usr/src/dahdi-linux-2.2.1/drivers/dahdi/Kbuild
sed -i "s|#obj-m += ../staging/echo/|obj-m += ../staging/echo/|" /usr/src/dahdi-linux-2.2.1/drivers/dahdi/Kbuild
echo 'obj-m += echo.o' > /usr/src/dahdi-linux-2.2.1/drivers/staging/echo/Kbuild
4.4 คอมไพล์ dahdi-linux ใหม่
- โค้ด: เลือกทั้งหมด
cd /usr/src/dahdi-linux-2.2.1/
make
make install
จะมีไฟล์ /lib/modules/2.6.18-164.11.1.el5/staging/echo/echo.ko, /lib/modules/2.6.18-164.11.1.el5/dahdi/dahdi_echocan_oslec.ko
นอกจากนั้นยังมีไฟล์ Echo Canceller แบบอื่นๆที่มีมากับ DAHDI อยู่แล้วได้แก่ JPAH (dahdi_echocan_jpah.ko), KB1 (dahdi_echocan_kb2.ko), MG2 (dahdi_echocan_mg2.ko), SEC (dahdi_echocan_sec.ko) และ SEC2 (dahdi_echocan_sec2.ko) ก็ติดตั้งด้วย
เสร็จแล้วข้ามไปที่ขั้นตอน 6 ได้เลยครับ
5. อีกทางเลือกหนึ่งในการติดตั้ง OSLEC + DAHDI โดยไม่ต้องดาวน์โหลด Kernel Source Code
ดาวน์โหลดไฟล์ oslec-dahdi นี้ไปไว้ในเครื่อง Asterisk
5.1 แตกไฟล์
- โค้ด: เลือกทั้งหมด
tar xzvf oslec-dahdi.tar.gz -C /usr/src/dahdi-linux-2.2.1/drivers
จะมีซับไดเร็คตอรี่ staging/echo
5.2 แก้ไขคอนฟิก
- โค้ด: เลือกทั้งหมด
sed -i "s|#obj-m += dahdi_echocan_oslec.o|obj-m += dahdi_echocan_oslec.o|" /usr/src/dahdi-linux-2.2.1/drivers/dahdi/Kbuild
sed -i "s|#obj-m += ../staging/echo/|obj-m += ../staging/echo/|" /usr/src/dahdi-linux-2.2.1/drivers/dahdi/Kbuild
echo 'obj-m += echo.o' > /usr/src/dahdi-linux-2.2.1/drivers/staging/echo/Kbuild
5.3 คอมไพล์ DAHDI
- โค้ด: เลือกทั้งหมด
cd /usr/src/dahdi-linux-2.2.1
make
make install
6. คอนฟิก OSLEC
เอา oslec ไปไส่ไว้ในไฟล์ /etc/dahdi/system.conf นะครับ เพื่อบอก
- โค้ด: เลือกทั้งหมด
vi /etc/dahdi/system.conf
เพิ่มบรรทัดนี้
echocanceller=oslec,1
บันทึกไฟล์
7. รีสตาร์ท DAHDI
- โค้ด: เลือกทั้งหมด
service dahdi restart
Unloading DAHDI hardware modules: done
Loading DAHDI hardware modules:
wct4xxp: [ OK ]
wcte12xp: [ OK ]
wct1xxp: [ OK ]
wcte11xp: [ OK ]
wctdm24xxp: [ OK ]
wcfxo: [ OK ]
wctdm: [ OK ]
wcb4xxp: [ OK ]
wctc4xxp: [ OK ]
xpp_usb: [ OK ]
/usr/share/dahdi/waitfor_xpds: Missing astribank_is_starting
Running dahdi_cfg: [ OK ]
8. DAHDI กับ Linux Kernel
สังเกตุเห็นอะไรมั๊ยครับตอนติดตั้ง DAHDI มันเกี่ยวข้องกับ Kernel เต็มๆ (ไม่เฉพาะตอนติดตั้ง OSLEC นะครับ) ตอนคอมไพล์มันจะอ้างอิงกับ Kernel ด้วย ซึ่งถ้าเรามีการอัพเกรด CentOS ภายหลัง ซึ่งมันอาจจะอัพเกรด Kernel ก็จะทำให้ DAHDI พังไปด้วยครับ ต้องคอมไพล์กันใหม่