Asterisk: Quitando el eco en tarjetas análogicas con OSLEC

Imagen de RazaMetaL

El eco en las tarjetas análogas es un problema bastante perturbador, lo digo porque no resulta nada cómodo hablar a través de una línea con eco y sonidos extraños.

Afortunadamente existe Open Source Line Echo Canceller (OSLE) al que en adelante llamaremos simplemente oslec.

Las siguientes instrucciones me ayudaron a eliminar por completo el eco en una tarjeta Openvox de 3 puertos FXO y 1 puerto FXS, la misma que tenía un eco insoportable en todos los puertos.

1.- Instalamos algunas dependencias:

aptitude install subversion build-essential linux-headers-`uname -r`

2.- Obtenemos oslec:

cd /usr/src
svn co http://svn.rowetel.com/software/oslec/trunk/ oslec

[b]ACTUALIZACION[/b]: Parece que svn.rowetel.com ya no esta funcionando, se puede descargar OSLEC desde:
[url]http://www.rowetel.com/ucasterisk/downloads/oslec-0.1.tar.gz[/url]

Tambien podemos usar la versión svn desde:

svn co http://svn.astfin.org/software/oslec/trunk/ oslec

3.- Detenemos asterisk, compilamos e instalamos oslec:

killall -9 asterisk
rmmod wctdm zaptel
cd oslec/
make
cp kernel/oslec.ko /lib/modules/`uname -r`/misc
depmod -a
modprobe oslec

4.- Verificamos la versión del módulo esta instalado:

# modinfo oslec

filename: oslec.ko
license: GPL
author: David Rowe
description: Open Source Line Echo Canceller Zaptel Wrapper
vermagic: 2.6.15-25-386 preempt 486 gcc-4.0
depends:
srcversion: 6FE75D1ACC6A282C34AB45B

5.- Descargamos zaptel, oslec tiene parches para las siguientes versiones: 1.2.13, 1.2.18, 1.4.0, 1.4.1, 1.4.3, 1.4.4. Para esta instalación particular usaré la versión 1.2.18 de zaptel:

cd /usr/src
wget http://downloads.digium.com/pub/zaptel/releases/zaptel-1.2.18.tar.gz

Para zaptel 1.4:

cd /usr/src
wget http://downloads.digium.com/pub/zaptel/releases/zaptel-1.4.9.2.tar.gz

6.- Descomprimimos zaptel y aplicamos el parche del cancelador de eco oslec:

tar zvxf zaptel-1.2.18.tar.gz
cd zaptel-1.2.18
patch < ../oslec/kernel/zaptel-1.2.18.patch

[b]ACTUALIZACION[/b]: Para el zaptel 1.4.9.2 se debe ejecutar la siguiente línea:

patch -p1 < ../oslec/kernel/zaptel-1.4.9.2.patch

El parche lo podemos obtener desde:
[url]http://svn.astfin.org/software/oslec/trunk/kernel/zaptel-1.4.9.2.patch[/url]

7.- Compilamos e instalamos:

make
make install
modprobe zaptel
modprobe wctdm

8.- Verificamos la version de zaptel:

# modinfo zaptel
filename: /lib/modules/2.6.15-25-386/misc/zaptel.ko
author: Mark Spencer
description: Zapata Telephony Interface
license: GPL
version: 1.2.18
vermagic: 2.6.15-25-386 preempt 486 gcc-4.0
depends: crc-ccitt
srcversion: 35251AC99F6D3CC9D7DB09B
parm: deftaps:int
parm: debug:int

9.- Modificamos /etc/asterisk/zaptel.conf para que contenga los siguientes parámetros:

echocancel=yes
echocancelwhenbridged=no
;echotraining=400

Se debe tener especial atención en que el parámetro [i]echocancelwhenbridged[/i] tenga la opción [i]no[/i] y comentar o eliminar el parámetro [i]echotraining[/i]. Si usamos [i]echotraining[/i] con oslec no tendremos audio en el canal zap.

10.- Es momento de probar nuestro nuevo cancelador de eco:

/etc/init.d/zaptel start
/etc/init.d/asterisk start

Si no tenemos los scripts en init.d podemos hacerlo manual:

modproobe oslec
modprobe zaptel
modprobe wctdm
ztcfg -vvv
asterisk -gvvvv &

Si todo esta bien, la salida de dmesg nos deberá mostrar algo como esto:


Open Source Line Echo Canceller Installed
Zapata Telephony Interface Registered on major 196
Zaptel Version: 1.4.9.2
Zaptel Echo Canceller: OSLEC
Zaptap registered 'sample' char driver on major 33

Como lo comenté al inicio, oslec fué en mi caso la solución definitiva con el eco. Es altamente efectivo quitando el eco en las tarjetas X100P :)

[i]Si alguien consigue que modprobe reconozco oslec.ko que me avise ;)[/i] [b]Actualizado » 2007-10-12:[/b] Modifiqué la instalación del módulo con depmod -a para que osle sea reconocido por modprobe.

Comentarios

Cita:Si alguien consigue

Imagen de RazaMetaL

[quote]Si alguien consigue que modprobe reconozco oslec.ko que me avise Eye-wink[/quote]

No pasaron muchas horas para que alguien de la solución muy detallada para el tema del módulo :)


Por cierto, respondiendo a esto:
"Si alguien consigue que modprobe reconozco oslec.ko que me avise"

Nada tan fácil como copiarlo al directorio /lib/modules/.../dondequieras (que esto lo has hecho)
y ejecutar el comando 'depmod -a' para que vuelva a crear las dependencias con los módulos que
haya en el directorio de los módulos del kernel, lo que metería al archivo 'oslec.ko' dentro de
la lista.

Por cierto, y para los que aún no sepan muy bien cómo funcionan los módulos, el programa para
cargar un módulo es 'insmod' lo que carga el módulo de forma directa, mientras que la aplicación
modprobe' (como su nombre indica) "intenta" cargarlo, con la principal ventaja de que si le
añadimos el parámetro '-a' (es decir: modprobe -a ) nos cargará los módulos de los que
depende:

modprobe -a wctdm
equivaldría a:
insmod crc_ccitt
insmod zaptel
insmod wctdm

Esa lista de "modulos dependientes" se encuentra en /lib/modules/versionkernel/modules.dep y se
puede configurar según nos interese para poder luego hacer un 'modprobe -a wctdm' y que
automáticamente nos cargue todos los módulos (incluido el ' oslek.ko'.

Un saludo y gracias por el tutorial. :)

Grecias a Helio Rojano por la explicación, visiten su blog de VoIP en [url]www.sinologic.net[/url].

------------

Antes de preguntar visita el [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

 

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

-----

Visita este [url=http://www.sindominio.net/ayuda/preguntas-inteligentes.html]link[/url] :evil:

[img]http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg[/img]

(adsbygoogle = window.adsbygoogle || []).push({});

La Verdad es muy bueno

Imagen de marlinux

La verdad oslec es muy bueno, le vengo siguiendo hace algunos meses tambien, atormentado por los famosos ecos en las tarjetas :sick: , por ser una solucion open source es una herramienta brutal :jawdrop: , para todas aquellas que te cobran y hacen lo mismo, la verdad muy agradecido con el autor de oslec David Rowe :)

"Linux es Infinito"

"Linux es Infinito"