La cancelación de eco infernal.

Asterisk, Hardware No Comments

Llegas, montas el servidor, configuras asterisk, instalas los clientes y todo parece perfecto hasta que alguien pregunta: “¿porque me escucho con eco cuando hablo con alguien de fuera?”. Siguiendo las recomendaciones del proveedor habíamos comprado una tarjeta sin cancelador de eco, por lo que no nos queda mas remedio que intentar eliminarlo mediante software… manos a la obra.

Caracola

En un principio intentamos activar la cancelación de eco que trae implementada Asterisk tocando las variables echocancel y echocancelwhenbridged en el archivo zapata.conf pero no conseguimos ningún resultado, nisiquiera activando echotraining conseguimos solucionarlo, es más, al activar este último valor, pasabamos de escuchar la voz con eco, a no escuchar absolutamente nada, no sabemos si esto se debe a algún problema con la transición zaptel-dahdi, o por incompatibilidad de echotraining con el hardware de nuestra tarjeta zaptel.

Nuestro siguiente paso fue configurar las ganacias de entrada y salida. Encontramos un manual en el que explica como calibrar los valores rxgain y txgain, mediante la reproducción de un tono de 1004KHz de frecuencia, y el monitor de niveles ztmonitor. Con esto conseguimos mejorar los volúmenes y reducir un poco el eco, no lo suficiente.

Decidimos pasar a una solución comercial, en este caso el High Perfomance Echo Canceller (HPEC) de Digium, que en este caso ofrece licencias gratuitas a los poseedores de tarjetas analógicas Digium, pero tras un día de pruebas, el resultado, aunque notablemente mejor, sigue siendo insuficiente. Otro mas a descartar.

Tras leer algunas opiniones por internet nos decidimos a probar el nuevo cancelador de echo SoftEcho ofrecido por la empresa canadiense Octware comprando una única licencia para ver el resultado. Pasamos un día mas intentando compilar, instalar, y hablando con el servicio técnico del distribuidor, y en resumen haciendo funcionar este cancelador, pero sin éxito.

Cancelador de eco Digium

Como la cosa se alargaba ya mucho, y para no abusar de la paciencia del cliente, nos decidimos a comprar el cancelador de eco por hardware de Digium… y fue la mejor decision que tomamos en toda la semana, al día siguiente ya nos había llegado el paquete, lo instalamos en el servidor, y magia! el eco desapareció totalmente, y con el se acababa nuestra pesadilla.

Moraleja: Siempre es bueno tener un módulo cancelador de eco en reserva, nunca se sabe con que nefasto montaje de linea os vais a encontrar, y en cuanto veais que la cosa se pone fea… cancelador por hardware al canto!

La variable “rtcachefriends”

Asterisk, RealTime No Comments

Recientemente hemos tenido que montar una distribución de Asterisk sobre un Debian Lenny, y todo ha ido sobre ruedas hasta que nos hemos puesto a montar los clientes SIP en realtime: resulta que al agregar un usuario a la base de datos del RT y loguearnos en el softphone, nos aparecia en la consola de asterisk una y otra vez:

[Nov  3 09:12:45] NOTICE[7266]: chan_sip.c:12335 handle_response_peerpoke: Peer ‘104′ is now Reachable. (3ms / 2000ms)

[Nov  3 09:12:45] NOTICE[7266]: chan_sip.c:12335 handle_response_peerpoke: Peer ‘104′ is now Reachable. (2ms / 2000ms)

[Nov  3 09:12:46] NOTICE[7266]: chan_sip.c:12335 handle_response_peerpoke: Peer ‘104′ is now Reachable. (2ms / 2000ms)

Este mensaje se repite cada 2 o 3 ms, para avisarte que te has registrado correctamente en tu extensión saturando toda la pantalla, y dejando la consola inutilizada.

Despues de un par de horas tirandonos de los pelos, recompilando Asterisk, cambiando de base de datos, cambiando de sofphone,  y probando a poner servidor bocabajo (a punto estuvimos) dimos con el problema… ¡¡La variable “rtcachefriends” en el archivo sip.conf!!

Cuando la tenemos activa, es la que dice a Asterisk que debe meter a todos los usuarios creados en tiempo real en la caché interna donde se almacenan también los “friends” agregados por el archivo de configuración sip.conf. Digamos que cuando no está activa nuestro Asterisk es como el pececito Doris, solo ahora pierde la memoria cada 3 ms y vuelve a registrar una y otra vez al mismo usuario.

Así que ya sabeis niños, cuando trabajeis con usuarios en realtime, rtcachefriends=yes.