Tag Archives: asterisk

Asterisk, X100p clones e cancelamento de eco com OSLEC

Depois de quase um dia fritando para resolver o problema de eco com a linha analógica ligada ao asterisk por uma x100p clone (ambient-md3200), resolvi usar o drive oslec para cancelar o eco. Os resultados são supreendentes, e superam em muito o mg2, geralmente usado para tal função.

Como não encontrei nada em português, vai aí uma dica. É bom observar que este drive ainda é experimental.

Aqui estou usando:

asterisk 1.6.2.6

dahdi-linux-2.3.0.1

Se você não tem o dahdi instalado, baixe os drives.

#cd /usr/src

#wget http://downloads.asterisk.org/pub/telephony/dahdi-linux/releases/dahdi-linux-2.3.0.1.tar.gz

#tar -xzvf dahdi-linux-2.3.0.1.tar.gz

Baixe os fontes do seu kernel.

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.xx.tar.bz2

Nota: O OSLEC foi inlcuido a partir do kernel 2.6.28. Portanto você terá que baixar uma versão igual ou superior a esta.

root@src#tar -xjvf linux-2.6.xx.tar.bz2

root@src# cd dahdi-linux-2.3.0.1/drivers

root@drivers# mkdir staging

root@drivers# cp -fR /usr/src/linux-linux-2.6.xx/drivers/staging/echo staging/echo

root@drivers# echo ‘obj-m += echo.o’ > staging/echo/Kbuild

root@drivers# vi dahdi/Kbuild

Procure pelo seguinte trecho:

# Only enable this if you think you know what you’re doing. This is not
# supported yet:
#obj-m += dahdi_echocan_oslec.o
#
# A quick and dirty way to build OSLEC, if you happened to place it
# yourself in the dahdi source tree. This is experimental. See README
# regarding OSLEC.
#obj-m += ../staging/echo/

Deverá ficar desta forma:

# Only enable this if you think you know what you’re doing. This is not
# supported yet:
obj-m += dahdi_echocan_oslec.o
#
# A quick and dirty way to build OSLEC, if you happened to place it
# yourself in the dahdi source tree. This is experimental. See README
# regarding OSLEC.
obj-m += ../staging/echo/

Salve o arquivo.
Volte para o diretorio de fontes do dahdi.

root@drivers# cd /usr/src/dahdi-linux-2.3.0.1

root@dahdi-linux-2.3.0.1# make
CC [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_echocan_oslec.o
CC [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/../staging/echo/echo.o
Building modules, stage 2.
MODPOST 32 modules
CC /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/../staging/echo/echo.mod.o
LD [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/../staging/echo/echo.ko
CC /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_echocan_oslec.mod.o
LD [M] /usr/src/dahdi-linux-2.3.0.1/drivers/dahdi/dahdi_echocan_oslec.ko

root@dahdi-linux-2.3.0.1# make install

Agora só precisamos configurar o dahdi.

#vi /etc/dahdi/system.conf

loadzone = br
defaultzone = br
fxsks = 1
channels = 1
echocanceller = oslec,1-240

vi /etc/dahdi/modules

dahdi_echocan_oslec
wcfxo

vi /etc/asterisk/chan_dahdi.conf
Se ainda não tiver, adicione as linhas abaixo:

[channels]
;…
echocancel=yes
echotraining=yes
;…

pare o asterisk, ou desative o módulo chan_dahdi.
remova os módulos dahdi.
#rmmod dahdi_echocan_mg2 wcfxo dahdi

Carregue os novos módulos
#modprobe dahdi
#modprobe wcfxo
#dahdi_cfg -vvv
se tudo correu bem, você verá algo como abaixo:

DAHDI Tools Version – 2.2.1.1
DAHDI Version: 2.3.0.1
Echo Canceller(s):
Configuration
======================
Channel map:
Channel 01: FXS Kewlstart (Default) (Echo Canceler: oslec) (Slaves: 01)
1 channels to configure.
Changing signalling on channel 1 from Unused to FXS Kewlstart
Setting echocan for channel 1 to oslec

Inicie o asterisk, e desfrute o OSLEC.
Fonte:
http://www.rowetel.com/ucasterisk/oslec.html

Anúncios