terça-feira, 14 de julho de 2009

ubuntu+asterisk+dahdi+tdm844

Primeiro eu rodo o scriptzito que peguei com um amigo, dei umas modificadas e agora faz o serviço chato para mim, ae vai:

#!/bin/bash

echo ATUALIZANDO REPOSITORIO...
apt-get update

echo INSTALANDO BIBLIOTECAS NECESSARIAS...
apt-get -y install libnewt-dev libssl0.9.8 libssl-dev zlib1g-dev libncurses5-dev libeditline0 libeditline-dev libedit2 libedit-dev readline-common linux-headers-`uname -r` libusb-dev mpg123 libtiff4 libtiff4-dev libxml2 libxml2-dev build-essential automake fakeroot debhelper autotools-dev cdbs pkg-config gcc g++ cpp doxygen ssh mc tcpdump libmysqlclient15-dev sox sysv-rc-conf rcconf vim-full

echo ATUALIZANDO SOFTWARES...
apt-get upgrade

echo INSTALANDO DAHDI-LINUX...
cd /usr/src/
wget http://downloads.digium.com/pub/telephony/dahdi-linux/dahdi-linux-current.tar.gz
tar -xvzf dahdi-linux-current.tar.gz
cd dahdi-linux*
make clean
make
make install

echo INSTALANDO DAHDI-LINUX...
cd /usr/src/
wget http://downloads.digium.com/pub/telephony/dahdi-tools/dahdi-tools-current.tar.gz
tar -xvzf dahdi-tools-current.tar.gz
cd dahdi-tools*
make clean
./configure
make menuselect
make
make install
make config

echo INSTALANDO ASTERISK...
cd /usr/src
wget -c http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz
tar -xvzf asterisk-1.4-current.tar.gz
cd asterisk-1.4*
contrib/scripts/get_ilbc_source.sh #instala codec ilbc
make clean
./configure
make menuselect
make
make install
make samples
make progdocs
make config

echo INSTALANDO ADDONS...
cd /usr/src
wget -c http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4-current.tar.gz
tar -xvzf asterisk-addons-1.4-current.tar.gz
cd asterisk-addons-1.4.8
make clean
./configure
make menuselect
make
make install
make samples

Esse kra vai baixar as coisas e compilá-las, observe que é só um facilitador, o addons, por exemplo, eu tive de colocar 1.4.8 no nome da pasta que tava 1.4.7...

Supondo que a placa esteja instalada e com o cabo de alimentação ligado, faça o seguinte:

#lspci |grep Digium

Isso é pra garantir que o sistema reconheceu o novo hardware, senão nem adianta começar a configurar canais, módulos e tal que não era.

Olha o meu:

root@charqueadas:~# lspci |grep Digium
00:09.0 Ethernet controller: Digium, Inc. Wildcard TDM800P 8-port analog card (rev 11)

Agora, com tudo certinho rode o seguinte comando:

#dahdi_genconf -vvvv

Ele vai gerar os arquivos de configuração para o hardware instalado, já tive que reiniciar a máquina em alguns casos para dar certo.

Depois você terá de editar o arquivo /etc/dahdi/system.conf, gerado pelo dahdi_genconf e deixar o loadzone e o defaultzone conforme o abaixo (= br).

# Autogenerated by /usr/sbin/dahdi_genconf on Tue Jul 14 04:45:12 2009
# If you edit this file and execute /usr/sbin/dahdi_genconf again,
# your manual changes will be LOST.
# Dahdi Configuration File
#
# This file is parsed by the Dahdi Configurator, dahdi_cfg
#
# Span 1: WCTDM/0 "Wildcard TDM800P Board 1" (MASTER)
fxoks=1
echocanceller=mg2,1
fxoks=2
echocanceller=mg2,2
fxoks=3
echocanceller=mg2,3
fxoks=4
echocanceller=mg2,4
fxsks=5
echocanceller=mg2,5
fxsks=6
echocanceller=mg2,6
fxsks=7
echocanceller=mg2,7
fxsks=8
echocanceller=mg2,8

# Global data

loadzone = br
defaultzone = br

Depois disso rode o comando dahdi_cfg -vvv, conforme abaixo, e uma saída muito parecida é um forte indício de que estamos indo bem.

root@charqueadas:~# dahdi_cfg -vvv
DAHDI Tools Version - 2.2.0

DAHDI Version: 2.2.0.1
Echo Canceller(s): MG2
Configuration
======================


Channel map:

Channel 01: FXO Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 01)
Channel 02: FXO Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 02)
Channel 03: FXO Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 03)
Channel 04: FXO Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 04)
Channel 05: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 05)
Channel 06: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 06)
Channel 07: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 07)
Channel 08: FXS Kewlstart (Default) (Echo Canceler: mg2) (Slaves: 08)

8 channels to configure.

Setting echocan for channel 1 to mg2
Setting echocan for channel 2 to mg2
Setting echocan for channel 3 to mg2
Setting echocan for channel 4 to mg2
Setting echocan for channel 5 to mg2
Setting echocan for channel 6 to mg2
Setting echocan for channel 7 to mg2
Setting echocan for channel 8 to mg2


Agora já falta pouco, só configurar os canais para o asterisk:

Para o resultado anterior o arquivo /etc/asterisk/chan_dahdi.conf fica da seguinte maneira:

[channels]
txgain=10.5
rxgain=10.5
echotraining=yes

context=entrada
signalling=fxo_ks
group=1
channel => 1-4

context=saida
signalling=fxs_ks
group=2
channel => 5-8

Agora reinicie o asterisk:

/etc/init.d/asterisk restart

Acesse o console do asterisk:

asterisk -vvvvvvvvvr (não precisa contar os "v" eu boto um mont para o verbose ser o máximo)

você vai acessar uma coisa chamda "cli", mais ou menos assim:

root@charqueadas:~# asterisk -vvvvvvvr
Asterisk 1.4.25.1, Copyright (C) 1999 - 2008 Digium, Inc. and others.
Created by Mark Spencer
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': Found
== Parsing '/etc/asterisk/extconfig.conf': Found
Connected to Asterisk 1.4.25.1 currently running on charqueadas (pid = 4170)
Verbosity was 0 and is now 7
-- Remote UNIX connection
charqueadas*CLI>

Na cli acompanhamos o funcionamento e as mensagens de erro das coisas, ajuda muito na configuração e manutenção.

Exemplo:

Verbosity was 0 and is now 7
-- Remote UNIX connection
-- Starting simple switch on 'DAHDI/1-1'
-- Hungup 'DAHDI/1-1'
-- Starting simple switch on 'DAHDI/1-1'
-- Hungup 'DAHDI/1-1'
charqueadas*CLI>

Isso é o resultado na CLI de eu ter tirado e colocado no gancho o telefone ligado na porta 1 da placa.

É muito importante rodar o asterisk com um usuário não privilegiado. Posto isso em breve.

;)