lunes, 18 de enero de 2016

Asterisk: Estaba en inglés, ahora en español

En todo el tiempo que llevo con la centralita de Asterisk instalado no le he cambiado los mensajes de sonido del inglés al español de manera definitiva. Lo intenté en una ocasión pero no funcionaba: el sistema dejaba de funcionar. Por lo que volvía otra vez a la configuración inicial.

Voy a volver a probar. Lo primero, es buscar los ficheros de audio. He encontrado varias fuentes:

  • http://www.voipnovatos.es
  • http://www.asterisksounds.org
De hecho, voy a usar la segunda fuente. De esta usaremos los dos ficheros que nos ofrecen: http://www.asterisksounds.org/es-es/download.

Lo primero es saber dónde lo vamos a guardar. Será en una carpeta con el nombre es dentro de /var/lib/asterisk/sounds

mkdir /var/lib/asterisk/sounds/es

Ahí es donde lo vamos a descargar. Como estas descargas son en formato .zip, hay que acordarse de tenerlo instalado. Además, al bajarlo en un Linux, hay que pasarle el parámetro -a que permita al unzip extraerlo acorde al sistema:

unzip -a core.zip
unzip -a extra.zip

Una vez extraído, hay que cambiarle los dueños (tanto el usuario como el grupo) y los permisos de los subdirectorios:

chown -R asterisk.asterisk /var/lib/asterisk/sounds/es
find /var/lib/asterisk/sounds/es -type d -exec chmod 0775 {} \;

En teoría, sólo con esto debería de ser suficiente. Pero como los audios están en formato sln16, y nosotros trabajamos con gsm729ulaw y alaw, hay que reconvertirlos. Según las instrucciones, se puede usar este script, que habrá que guardar en un fichero y asignarle permisos de ejecución:

#!/bin/bash
for a in $(find . -name '*.sln16'); do
  sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t gsm -r 8k `echo $a|sed "s/.sln16/.gsm/"`;\
  sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e a-law `echo $a|sed "s/.sln16/.alaw/"`;\
  sox -t raw -e signed-integer -b 16 -c 1 -r 16k $a -t raw -r 8k -e mu-law `echo $a|sed "s/.sln16/.ulaw/"`;\
done

Ojo, que le costará hacerlo un tiempecillo. Además, os habréis fijado que falta la conversión de uno de los formatos indicados: g729. Al ser un formato propietario, hay que hacerlo de otra forma. Aunque lo he intentado hacer, no lo he conseguido. Y aún así no lo estaba usando. De todas formas, si quieres probar, el comando sería:

asterisk -rx "file convert fichero.wav fichero.g729"

La siguiente acción es indicarle al sistema que utilice estos audios. Si se busca en Internet encontraremos que nos indican que se configura en el menú Settings --> Asterisk Sip Settings. Pero ya no está ahí. Al menos, en la versión 13. Tendremos que utilizar el módulo Sound Languages

Módulo Sound languages en FreePBX - Sección global
Módulo Sound languages en FreePBX - Sección global
Hay dos opciones: indicarle que se descargue distintos paquetes de idiomas. Si os preguntáis por qué descargarlos... No lo sé. Cogí los de español también porque no conseguí que sonasen los descargados antes:

Módulo Sound languages en FreePBX - Language packs
Módulo Sound languages en FreePBX - Language packs
Nos descargaremos los idiomas que nos hagan falta y para os codecs que tengamos configurados. Aún así, en español no tenemos el paquete extras. 

Y, por último, la sección custom languages, que es la que nos permite indicarle los paquetes con los que empezamos este post

Módulo Sound languages en FreePBX - Custom languages
Módulo Sound languages en FreePBX - Custom languages
Como se puede apreciar esta es la última configuración que he utilizado. Como he encontrado en alguna documentación que alguien tuInstavo ejecutar el comando 

amportal restart

Aunque es el que he ejecutado, recordemos que está deprecated. Habría que usar fwconsole

Espero que os sirva y sea de utilidad. Si tenéis alguna otra forma de hacer esta configuración, bienvenida sea.

De todas formas, si tenéis dudas, también podéis ver los enlaces de donde he conseguido los audios y parte de las instrucciones que he intentado seguir:


lunes, 11 de enero de 2016

RasPBX: De Asterisk 11 a Asterisk 13

Hoy voy a escribir un post muy rápido. Como voy a hacer una serie de ajustes a mi centralita a la que la versión de Asterisk podría afectar, he decidido actualizarla. Eso sí, no sin antes hacer los backups que creí necesarios: si sigues estas instrucciones, hazlo bajo tu responsabilidad.

Lo primero de todo: por defecto al instalar RasPBX viene con Asterisk 11. Pero existe la posibilidad de actualizar a Asterisk 13. Lo primero que se hace es buscar en la documentación de FreePBX. Y dicen que se lance el script:

asterisk-version-switch

Pero no hay forma de detectarlo. Según explican, si la distribución instalada fuera 100 % FreePBX debería de existir. Pero, parece ser que al ser un port para ARM éste no se encuentra. Por lo que toca buscar en la documentación, que, por cierto, está algo desactualizada. Indican que hay que ejecutar una serie de comandos, que serían los siguientes:

raspbx-upgrade
apt-get update
amportal stop
apt-get purge asterisk11
apt-get install asterisk13
amportal start
Pero, amportal ya no "existe". Ahora, hay que usar fwconsole, que, fundamentalmente es cambiar el nombre del comando y alguna detalle más.

raspbx-upgrade
apt-get update
fwconsole stop
apt-get purge asterisk11
apt-get install asterisk13
fwconsole start
Y así ya lo tendríamos actualizado. Los siguientes pasos ya son las configuraciones que nos mejoren la nueva versión.


lunes, 4 de enero de 2016

Raspberry pi 2 B en Tele sin HDMI

Recientemente me he comprado una raspberry pi 2 B. En este nuevo caso es un juguetito para mi tele. Sólo hay que tener en cuenta una cosa: si bien no es cabezona (como se las llama a las antiguas) no cuenta con HDMI. 

Hay que tener en cuenta las posibilidades que tengo y que trae este cacharro. Descartando el HDMI, tiene otra opción. Lo llaman de diversas formas: TRRS(EN), 3.5mm Audio/Video Jack,  cable iPod... y visualmente es el típico conector de cascos de 3,5 mm. Estos conectores suelen tener unas franjas negras. Esas franjas negras definen qué se va a enviar a cada cable: 

  • si tiene 1 franja negra (luego, 2 secciones): es audio mono
  • si tiene 2 franjas negras (luego, 3 secciones): es audio estéreo
  • si tiene 3 franjas negras (luego, 4 secciones [importante]): es audio (estéreo) y vídeo. 

Perfecto. Luego, vamos a necesitar un cable como el último: un cable cuyo conector tenga las 4 secciones. Pero: ¿qué son cada una de las secciones? 

  • 2 secciones: audio. Cada una de ellas pertenecerá a cada uno de los lados: izquierdo y derecho.
  • 1 sección vídeo.
  • 1 sección: toma de tierra o ground.

"Perfecto. Me compro un cable que tenga ese conector, con las 4 secciones y ya lo tengo. "

Me temo que no va a ser tan fácil. El problema está en que cada una de ellas tiene que estar en una posición determinada. En caso contrario, no vamos a poder usar ese cable. Me preguntaréis: 

"Entonces,  ¿qué posiciones debe de tener?"

O, a lo mejor os estáis diciendo 

"no puedo ver la tele con la rasp"

porque no tenéis HDMI u os estáis encontrando con problemas a la hora de usar el jack. Veámoslo con la siguiente foto de un cable que no sirve:

Cable 3,5 mm audio/vídeo erroneo
Cable 3,5 mm audio/vídeo erroneo

Lo importante es comprobar que una sección determinada se encuentre donde debe. Sobretodo el vídeo y la toma de tierra (GND). Como se puede ver, este cable se corresponde con la descripción. Pero, internamente está construido de una forma incompatible con el que necesitamos. En el cable mostrado se encuentra en la segunda sección por la derecha y debería de estar en la segunda por la izquierda tal y como indican en la siguiente imagen, obtenida de la página oficial(EN):

Secciones conectores 3,5 mm audio/video jack
Secciones conectores 3,5 mm audio/video jack: Fuente oficial

¿Y cómo sé si el cable que acabo de comprar es compatible? Tendrás que usar un polímetro (también conocido como voltimetro). 

Polimetro o voltimetro
Polimetro o voltimetro

Con uno tan básico como el que se muestra te debería de servir. Lo configurarás para comprobar las resistencias (en mi caso, girando la rosca hasta "la una"). Una vez configurado, cogerás uno de los terminales (por ejemplo, el rojo) y lo llevarás uno de los jacks (por poner un ejemplo, también el rojo). El otro terminal (el negro) lo irás situando en cada una de las secciones hasta que la aguja se mueva. En cuanto lo haga, sabrás que esa sección se corresponde con ese jack. Así, podrás ir comprobando una a una todas las secciones hasta que tengas definido a qué jack pertenece cada sección. Sabiendo que cada sección tiene su función, sabrás dónde deberá de ir ese jack. Te podrás encontrar con un jack rojo que en vez de ser audio sea vídeo, siendo el de audio el amarillo. Incluso, que el audio cuyo color suele ser el izquierdo ahora sea el derecho. 

Si queremos resumir esta parte: no tener en cuenta los colores sino qué conector eléctricamente hablando se corresponde con la función esperada para la rasp

Tal y como os dije, el cable de arriba no es correcto, por lo que ha tocado buscar otro que sí que se corresponde con la configuración esperada. 

¡¡Estupendo!! Ahora que ya sabemos que el cable es el adecuado , tenemos que configurar el sistema para que funcione con la salida de televisión con formato PAL, que es el que tenemos aquí en España. Dando por hecho que tenemos la imagen transferida a la tarjeta (tal y como hicimos en este otro sistema) tendremos que hacer, como mínimo, un cambio. 

Abramos el fichero que se llama config.txt. Dentro hay una sección que está comentada: sdtv_mode. Para que funcione en un televisor PAL tiene que estar igualado a 2.

sdtv_mode=2

A partir de aquí, ya deberíamos de poder ver sin ningún problema cómo arranca el sistema y su escritorio (o consola, según corresponda). Aunque existen más configuraciones para indicar qué formato queremos (4:3, 16:9, 14:9) no las tocamos. 

Y ya está. Espero que os sea de utilidad. Y si tenéis algún problema más, avisad. A ver si os podemos ayudar.