Es básicamente una adaptación del modulo original para zaptel (octvqe versión 1.4.2) pero cambiando las cabeceras. Aparte de esto se ha modificado la unción echo_can_update en la forma de tratar los taps y se ha enlazado todo desde el modulo dahdi_echocan_octvqe.
Es necesario usar el binario octvqed 1.4.2
El cancelador SoftEcho de Octasic se distrubuye por licencias de usuario. Será necesario obtener dichas licencias para poder ejecutarlo correctamente.
Nos descargamos los parquetes de asterisk, dahdi-tools, dahdi-linux y libpri del branch oficial de asterisk-es-rsp. Por ejemplo mediante el svn:
[root@asterisk-es-rsp ~]# cd /usr/src [root@asterisk-es-rsp ~]# svn checkout http://asterisk-es-rsp.irontec.com/svn/branches/ asterisk-es-rsp
Descargamos y descomprimimos los archivos en nuestra zona de instalación preferida. En este caso /usr/src.
[root@asterisk-es-rsp ~]# cd /usr/src
[root@asterisk-es-rsp ~]# wget ftp://ftp.octware.net/pub/octvqe8/32-bits/latest/octvqe8-01.04.02-pr-base.tgz
Descargamos el archivo correspondiente a nuestra arquitectura
[root@asterisk-es-rsp ~]# wget ftp://ftp.octware.net/pub/octvqe8/32-bits/latest/octvqe8-01.04.02-pr-intel32.tgz
o
[root@asterisk-es-rsp ~]# wget ftp://ftp.octware.net/pub/octvqe8/32-bits/latest/octvqe8-01.04.02-pr-amd32.tgz
Los descomprimimos:
[root@asterisk-es-rsp ~]# tar zxvf octvqe8-01.04.02-pr-base.tgz
[root@asterisk-es-rsp ~]# tar zxvf octvqe8-01.04.02-pr-intel32.tgz
Descargamos el script de registro de licencias según nuestra arquitectura:
[root@asterisk-es-rsp ~]# wget ftp://ftp.octware.net/pub/register/32-bits/latest/register32
o
[root@asterisk-es-rsp ~]# wget ftp://ftp.octware.net/pub/register/64-bits/latest/register64
Lo ejecutamos y introducimos el número de serie de la licencia cuando nos la pida.
[root@asterisk-es-rsp ~]# chmod 500 register
[root@asterisk-es-rsp ~]# chown root.root register
[root@asterisk-es-rsp ~]# ./register
Copiamos los scripts de octveq y el archivo de configuración
[root@asterisk-es-rsp ~]# cp octvqe8-01.04.02-pr/octvqe/octvqed.init /etc/init.d/octvqed
[root@asterisk-es-rsp ~]# cp octvqe8-01.04.02-pr/octvqe/octvqed.conf /etc/
[root@asterisk-es-rsp ~]# cp octvqe8-01.04.02-pr/octvqe/octvqed /usr/sbin/
Paramos los posibles antiguos octvqed
[root@asterisk-es-rsp ~]# killall octvqed
Iniciamos el ejecutable i comprobamos que el módulo de octvqe esté cargado:
[root@asterisk-es-rsp ~]# /etc/init.d/octvqed start
[root@asterisk-es-rsp ~]# lsmod | grep octvqe
dahdi_echocan_octvqe 11476 30
dahdi 182856 44 dahdi_echocan_mg2,dahdi_echocan_octvqe,wcb4xxp,wctdm24xxp
Si queremos que se levante automáticamente cada vez que reiniciamos el sistema lo añadimos al rc*.
Para distribuciones tipo redhat:
[root@asterisk-es-rsp ~]# chkconfig --add octvqed
Para distribuciones tipo debian primero modificamos el script de inicio:
[root@asterisk-es-rsp ~]# vim /etc/init.d/octvqed
# source function library
if [ -f /etc/debian_version ]; then
. /lib/lsb/init-functions
else
. /etc/rc.d/init.d/functions
fi
Después lo añadimos con update-rc.d:
[root@asterisk-es-rsp ~]# update-rc.d octvqed start 55 2 3 4 5 .
Para activar el cancelador nos aseguramos que se ha cargado el modulo dahdi_echocan_octvqe.
Al ejecutar dahdi_cfg aparecerá en el /etc/dahdi/system.conf una linea al estilo :
[root@asterisk-es-rsp ~]# vim /etc/dahdi/system.conf
echocanceller=octvqe,1
esto asignará el cancelador softecho al canal 1
Aplica el error?
[root@asterisk-es-rsp ~]# patch -p0 < /usr/src/tars/dahdi-2.1.0.4_oct_1.0.diff
patching file dahdi-linux/2.1.0.4/drivers/dahdi/dahdi_echocan_octvqe.c
patching file dahdi-linux/2.1.0.4/drivers/dahdi/Kbuild
Hunk #1 FAILED at 5.
Hunk #2 succeeded at 40 with fuzz 2 (offset 2 lines).
1 out of 2 hunks FAILED -- saving rejects to file dahdi-linux/2.1.0.4/drivers/dahdi/Kbuild.rej
patching file dahdi-linux/2.1.0.4/drivers/dahdi/octware/octvqe_ioctl.h
patching file dahdi-linux/2.1.0.4/drivers/dahdi/octware/octvqe_linux.c
Uno de los cambios importantes es que por ahora no revierte a otro cancelador en el caso de no disponer de licencias o alcanzar el número de canales permitidos, la respuesta actual es devolver el audio sin procesar. La idea es que una vez tengamos una versión funcional con OSLEC, este sea el cancelador al que se revierta.
Está testeado con un solo canal concurrente y aún no lo considero estable. Mis pruebas fueron sobre asterisk-1.6.0.9 y una B400E.
[root@asterisk-es-rsp ~]# modprobe -v dahdi_echocan_octvqe
insmod /lib/modules/2.6.18-6-686/dahdi/dahdi_echocan_octvqe.ko
FATAL: Error inserting dahdi_echocan_octvqe (/lib/modules/2.6.18-6-686/dahdi/dahdi_echocan_octvqe.ko): Invalid module format
[root@asterisk-es-rsp ~]# dahdi_cfg -vv
DAHDI Tools Version - 2.1.0.2
DAHDI Version: 2.1.0.4
Echo Canceller(s): MG2
Configuration
======================
SPAN 1: CCS/ AMI Build-out: 0 db (CSU)/0-133 feet (DSX-1)
SPAN 2: CCS/ AMI Build-out: 0 db (CSU)/0-133 feet (DSX-1)
Channel map:
Channel 01: Clear channel (Default) (Echo Canceler: octvqe) (Slaves: 01)
Channel 02: Clear channel (Default) (Echo Canceler: octvqe) (Slaves: 02)
Channel 03: Hardware assisted D-channel (Default) (Slaves: 03)
Channel 04: Clear channel (Default) (Echo Canceler: octvqe) (Slaves: 04)
Channel 05: Clear channel (Default) (Echo Canceler: octvqe) (Slaves: 05)
Channel 06: Hardware assisted D-channel (Default) (Slaves: 06)
6 channels to configure.
Setting echocan for channel 1 to octvqe
DAHDI_ATTACH_ECHOCAN failed on channel 1: Invalid argument (22)