[AsteriskBrasil] Asterisk no WRT54GS (funcionando bem)

Andre Ruiz andre.ruiz em gmail.com
Sexta Julho 21 11:28:56 BRT 2006


Olá amigos.

Gostaria de reportar que instalei asterisk no meu router WiFi da
Linksys, e ficou surpreendentemente BOM!!!! Devia ter feito isso
antes.

Quem quiser tentar, ou já fez que quer trocar experiência, pode me
escrever. Vou passar um resumo do que fiz.

Hardware: WRT54GS v2.1, 216MHz, 32MB RAM, 8MB Flash
Distribuição: OpenWRT WhiteRussian RC5

Se forem comprar um, certifiquem-se que é um GS e não um G, e
certifique-se que a versão dele é 2.0, 2.1 ou 3.0. Qualquer outra
versão tem menos RAM e menos Flash, e não vai caber. As versões 5 e 6
que estão vendendo hoje NEM PENSAR. Os modelos G também não tem flash
suficiente. Também pode ser o modelo WRTSL54GS que foi lançado agora
(é o mesmo que o GS que eu falei com uma USB a mais).

Use o OpenWRT. Eu sei que dá pra instalar o asterisk em outras
distros, mas não vale a pena. Já testei Sveasoft, DD-WRT e outros, o
OpenWRT ganha de longe de todos eles. E o sistema de empacotamento
dele é show.

Depois que você instalar o OpenWRT, você pode listar os pacotes
disponíveis para instalação através do "ipkg" (é praticamente igual o
apt-get). Ao rodar "ipkg list" você verá que existem pacotes do
asterisk prontos pra instalar, mas são da versão 1.0. Não existe um
mais novo na árvore de pacotes original.

Eu quis instalar o 1.2, então procurei no google e no voip-info.org.
Achei vários pacotes, particularmente um cara empacotou o 1.2.7.1 e
outro empacotou o 1.2.9, 1.2.9.1 e o 1.2.10. Um dos caras é o tal
"nico" que falam na página do voip-info.org sobre asterisk em wrt54g.

Recomento que NAO USEM esses pacotes. São extremamente mal feitos. É
um pacotão de 1.5MB com tudão dentro, muito lixo, muita coisa que não
faz sentido no openwrt. Pra ter uma idéia, o pacote instala coisa no
/var (os logs, etc.), sendo que o /var é um filesystem em ram, e
depois o conteúdo é perdido e não é recriado no próximo boot, e o
asterisk começa a dar erros. O cara simplemente mandou compilar e
instalar o tar.gz original no buildroot do opwewrt, não se preocupou
com as particularidades.

Fui então procurar na árvore de desenvolvimento do openwrt (o que está
no CVS agora, a versão chamada kamikaze) e descobri que lá eles tinham
empacotado a versão 1.2.1 do asterisk. O pacote está *extremamente*
bem feito. Tudo separadinho, vários pacotinhos pra você instalar os
módulos que quer e não gastar flash a toa, os .conf já estão editados
pra refletir o ambiente do router, tudo o que era /var foi movido para
/usr e o asterisk.conf foi modificado de acordo, o script de
inicialização está correto, etc. Em fim, o pacote é lindo, eu
recomendo. É uma pena que é meio velho... uma hora que tiver tempo eu
vou baixar o buildroot inteiro e usar o "spec" do cara pra gerar o
1.2.10, se eu fizer isso eu posto aqui na lista.

O problema é que eu não queria instalar o kamikaze por ser muito
instável ainda, e não adianta botar o source do repositório do
kamikaze no whiterussian porque não funciona (faltam dependências e
bibliotecas novas). Eis que descobri que existe uma área no site
chamada "backports", onde eles backportam alguns pacotes do kamikaze
pra rodar no whiterussian (basicamente recompilam o pacote no
buildroot do whiterussian).

Então, foi só adicionar no /etc/ipkg.conf a seguinte linha:

src backports http://downloads.openwrt.org/backports/rc5

depois rodar um ipkg update, e quando rodar um ipkg list já vai ver
que o novo asterisk está disponível. Verá que existem vários pacotes.
Eu instalei:

asterisk
asterisk-sounds

Havia a opção de trocar o "asterisk" pelo "asterisk-mini" (eles
conflitam entre si, só um deles pode ser instalado como base para os
outros), mas eu queria algumas coisas que no mini haviam sido
removidas. Como eu tinha espaço em flash sobrando, instalei também o
sounds (ele não é completo, só tem os sons básicos).

Importante: editei /etc/asterisk/modules.conf e mudei o autoload para
"no", daí acrescentei load apenas nos módulos que precisei. Isso é
importantíssimo para economizar memória. Fiquei com uma dezena ou mais
de módulos, o resto desabilitei tudo. Em voip-info.org eles sugerem o
que ligar/desligar (procure por trimming asterisk) em ambientes
embarcados (não necessariamente o wrt).

Fui em /etc/asterisk, botei lá os meus arquivos sip.conf e
extensions.conf que já tinha na outra máquina, dei uma geral nos
outros arquivos.

Configurei meu PAP2 pra logar no asterisk.... iniciei o asterisk....
e.... FUNCIONOU!! Tudo perfeitinho. Já está rodando há 2 dias, não
aumentou o consumo de memória, não gastou a mais pra nada (eu não
habilitei escrita na flash pra nada, e os logs que ficam em ram eu
botei bem pouca coisa).

Sobre a performance: ele aguenta tranquilo um ramal ligando pra fora.
Um ramal no PAP2 em alaw e o tronco (linha do Vono) em gsm. Faz o
transcoding em tempo real, responde rápido a chamdas entrantes,
encaminha rápido pra outros ramais, etc. Dizem nos fóruns que li que
ele aguente até umas 4 ligações, eu duvido. Mas pra mim em casa está
ótimo. O disco (sistema + pacotes extras + asterisk) está em 75%,
memória consumida normalmente, com tudo o que estou rodando fica em
uns 20MB. Não tente usar nada além de gsm e (a|u)law nele. ILBC nem
pensar, usa ponto flutuante demais (ele não tem proc ponto flutuante,
o kernel emula) e fica tão pesado que o router *trava*. G729 não tem
binário pra ele, mas duvido que ele suportaria.

Se alguém está a fim de rodar asterisk em casa e não quer dor de
cabeça com micro ligado (e barulho, HD pra queimar, etc.), eu
recomendo!! Show de bola.

andre

-- 
Andre Ruiz  <andre.ruiz em gmail.com>
Curitiba, PR, Brasil


Mais detalhes sobre a lista de discussão AsteriskBrasil