You are here

Reducir el eco con FXOTUNE

Reducir el eco en los trunks analógicos es posible gracias a FXOTune, tal y como comentan en Voip-info.org:

"FXOtune optimiza las características de un dispositivo TDM para minimizar el *origen* del eco. Esto se llama generalmente "balancear el híbrido" y es bastante importante. Una vez el híbrido esté balanceado correctamente, los canceladores eco por software funcionarán bien. Una vez ajustado el híbrido el eco descendió hasta un 4% y el cancelador de eco puede trabajar correctamente."

Según la Wikipedia el balanceo del híbrido se refiere al grado de simetría eléctrica entre dos impedancias, por tanto lo que queremos es que la impedancia del puerto FXO coincida en el mayor grado posible con el de la línea.

Debemos tener en cuenta que esto no funciona en las X100P y sus clones. Yo he hecho las pruebas con una TDM11B.

Asumimos que estamos usando Zaptel 1.4 (el proceso en Zaptel 1.2 es más sencillo y lo podéis consultar en Voip-info).

El primer paso es conocer el nivel de eco que tenemos y para ello tenemos que tener cargados los módulos de zaptel,wctdm y parar Asterisk:

# Si usamos freePBX
amportal stop
# en caso contrario directamente en el CLI
CLI>stop now

Vamos a ver el nivel de eco que tenemos en (p.e el puerto FXO 4):

fxotune -d -b 4

Dumping module /dev/zap/4
echo ratio = 0.1945 (886.8 / 4559.4)
Done!

Este valor debe ser lo más próximo posible al 0.0, si es inferior al 5% el cancelador de eco por software deberá funcionar correctamente. En este caso estamos en el 20% así que debemos realizar el ajuste.

La opción -d volca los resultados en un fichero CSV, por tanto podemos ver el resultado de una manera gráfica ajustando el test a una sola frecuencia con una onda de 1004 Hz en lugar de realizarlo a múltiples frecuencias (para ello usaremos el parámetro -w 1004). Borramos el anterior fichero fxotune_dump.vals y lo volvemos a generar:

fxotune -d -b 4 -w 1004

Dumping module /dev/zap/4
echo ratio = 0.1966 (2191.6 / 11145.0)
Done!

En el fichero tenemos los valores separados por comas, en el primer parámetro tenemos la muestra, en el segundo en input recibido por la línea, y el tercer parámetro es el output enviado a la línea:

head fxotune_dump.vals
Buffers, freq=1004, outpower=2192, echo=0.1966
Sample, Input (received from the line), Output (sent to the line)
0, -16, 0
1, -8, 0
2, -8, 0
3, -16, 0
4, -16, 0
5, -16, 0
6, -8, 0
7, -8, 0

Por tanto si importamos el fichero CSV a OpenOffice.org Calc o a Excel, podemos ver el eco gráficamente:

Eco después de FXOTune

Para realizar el ajuste fxotune (con el parámetro -i 5) hará la magia:

fxotune -i 5

Tuning module /dev/zap/1
Unable to set impedance on fd 4
Failure!
/dev/zap/2 absent: No such device
/dev/zap/3 absent: No such device
Tuning module /dev/zap/4
Done!

[...]

Para establecer está configuración ejecutaremos fxotune (con el parámetro -s), esto hay que hacerlo a cada reinicio después de cargar los módulos de Zaptel y antes de iniciar Asterisk:

fxotune -s

El eco se ha reducido significativamente, ahora está por debajo del 5% que son los límites aceptados empíricamente y por tanto debería ser eliminado totalmente por el cancelador de eco de Zaptel:

fxotune -d -b 4 -w 1004

Dumping module /dev/zap/4
echo ratio = 0.0410 (456.6 / 11145.0)
Done!

Eco después de FXOTune

Así habremos conseguido eliminar el eco en nuestras líneas analógicas.

Fuentes:

Voip-info.org

Qué te parece: