1. Presentación
Esta guía recoge los pasos necesarios para poner en marcha una central PBX basada en Asterisk capaz de dar servicio a un grupo reducido de terminales inalámbricos (softphones ejecutándose en un PC, smartphones y/o tablets) dentro del ámbito de cobertura de un adaptador WiFi - USB conectado directamente al equipo que ejecuta el SO con la distribución Linux que tiene el software que gestiona el tráfico telefónico.
Los componentes hardware y software utilizados en este sistema son:
Raspberry Pi 2 modelo B + Fuente de Alimentación
Memoria micro SD-CARD 4GB HC I Class 4
Adaptador WiFi - USB: WLAN 11g Zaapa (zd1211rw)
-
Driver propietario (non-free) para Debian 8 (jessie) del adaptador WiFi
Paquetes adicionales para la creación de un punto de acceso inalámbrico
Aprovecho para agradecer a aquellos que, desinteresadamente, han puesto a disposiciones de todos sus propias experiencias, en forma de blogs, páginas web o documentos en formato .PDF, con información relativa a los contenidos que aquí aparecen y que sin su ayuda nunca hubiese sido posible completar este proyecto. Aún sin disponer de su autorización expresa (pido perdón por adelantado) haré referencia a las siguientes fuentes de información que me fueron útiles:
-
-
Tutorial: Cómo crear un punto de acceso con Raspberry Pi. De GeekyTheory
2. Distribución RasPBX. Descarga y volcado en tarjeta micro SD
El sistema operativo elegido para este proyecto incluye el software encargado de hacer funcionar una PBX VoIP, basada en Asterisk, al encender el equipo (conectar la alimentación). Será la distribución Linux RasPBX, especialmente adaptada para funcionar dentro de un dispositivo Raspberry Pi.
Desde el sitio web http://www.raspberry-asterisk.org accedemos al área de descarga donde tomaremos la versión más reciente de este SO (en este momento está disponible la versión: raspbx-17-10-2015.zip) con la idea de tener compatibilidad con la variante más reciente de este ordenador (Raspberry Pi 2 -modelo B-).
Al tratarse de una distribución que viene de Raspbian (rama procedente, a su vez, del proyecto Debian 8 -Jessie-) contamos con la ventaja de tener a nuestra disposición un montón de paquetes compatibles con RasPBX. Por ejemplo los relacionados con los drivers del adaptador WiFi, el punto de acceso ó el servidor DHCP que utilizaremos más adelante.
En realidad lo que acabamos de bajarnos es la imagen (fichero .IMG) de una unidad de almacenamiento de 4GBytes con el contenido, en bruto (datos + completa estructura interna incluyendo el sector de arranque y particiones), de una unidad de memoria SD de esta capacidad con el sistema operativo y programas, asterisk y FreePBX entre otros, ya instalados.
Siguiendo las indicaciones de Mike, vuelco el contenido descomprimido del archivo en la unidad de memoria con la orden: # dd if=raspbx-17-10-2015.img of=/dev/disk1 bs=2m desde el directorio donde tengo el archivo. Aunque si trabajamos en linux, la llamada varía ligeramente: #dd if=raspbx-17-10-2015.img of=/dev/sdb bs=2M
Ambos comandos se ejecutarán con privilegios de administrador (root).
La ubicación destino (por ejemplo, /dev/sdb) representa, dentro del árbol de directorios del SO donde estoy trabajando, la unidad micro SD de almacenamiento. Para conocer su localización al conectarla a nuestro ordenador nos ayudaremos de la orden de consola:
# diskutil list (OSX). ¡Ojo! no hay que olvidar desmontar la unidad antes de proceder al traslado de la imagen a la memoria SD con #unmountdisk /dev/diskN.
y en linux: # fdisk -l (o #fdisk -l /dev/sdX). Desmontaremos con #umount /dev/sdXN.
Esperamos a que termine este proceso (suele tardar varios minutos) y pasamos la memoria micro SD a la raspberry pi. Por último, conectamos un cable ethernet desde nuestra LAN y enchufamos su alimentación para arrancar el ordenador con el “disco duro” actualizado.
3. Acceso remoto
Con el fin de completar la instalación del resto del software necesario para nuestro proyecto, ahora necesitamos acceder a la consola de RasPBX desde nuestro equipo utilizando el protocolo SSH. En el sistema operativo Windows ® es frecuente usar la herramienta PuTTY para este cometido aunque aquí se mostrará el proceso desde linux y OSX.
No es necesario conocer la dirección IP recibida por el dispositivo recién conectado ya que por defecto podemos referenciarlo como “raspbx” (linux) ó “raspbx.local” (OSX).
Al entrar con el perfil de “root” (administrador) añadiremos su contraseña (por defecto es “raspberry”).
4. Puesta al día del SO y ajustes para trabajar sin acceso a internet
Primero, actualizaremos el sistema operativo con la orden: #raspbx-upgrade
A continuación, con el propósito de evitar inestabilidades del sistema durante su funcionamiento, llevaremos a cabo algunos ajustes recomendados en la documentación mostrada en el sitio web de RasPBX (ver apartado: 3. Running RasPBX without Internet connection):
#apt-get install fake-hwclock Instala el paquete fake-hwclock
#apt-get install dnsmasq Instala el paquete dnsmasq
#mv /etc/resolv.conf /etc/resolv.conf.dnsmasq Renombra resolv.conf
#nano /etc/dnsmasq.conf Edita el archivo dnsmasq.conf
#nano /etc/resolv.conf Crea el archivo resolv.conf
#/etc/init.d/dnsmasq restart Reinicia el servicio dnsmasq
5. Añadir el driver del adaptador WiFi
Como es fácil suponer, este apartado está muy ligado dispositivo físico con el que contemos. Obtendremos los datos que necesitamos para localizar el manejador de este elementos consultando la información suministrada por el comando #lsusb que necesitaremos tener en nuestro sistema:
Con esta información, y un poco de paciencia en la búsqueda de más detalles sobre este hardware en internet, encontramos el driver para la distribución Debian 8 “Jessie”, válido también para nuestra distribución, aunque se suministra dentro de un repositorio de paquetes que no viene instalado por defecto. Por tanto, primero hay que hacerle saber al SO dónde encontrar la aplicación y, a continuación, proceder a su instalación.
En el fichero /etc/sources.list añadimos la línea:
deb http://http.debian.net/debian/ jessie main contrib non-free
con el editor nano: #nano /etc/apt/sources.list
Actualizamos la lista de paquetes:
Y pasamos a ejecutar: #apt-get install firmware-zd1211. Reiniciamos el SO con #reboot y verificamos el buen funcionamiento del tándem driver-adaptador.
6. Prueba de comunicación WiFi. Conexión a un punto de acceso
En este punto del proceso vamos a comprobar que es posible comunicar inalámbricamente nuestra Raspberry Pi con un punto de acceso conocido (y los datos de acceso disponibles) confirmando, de este modo, que ya se encuentra completamente operativo el stick wireless. Antes de nada añadimos aplicaciones para gestionar las comunicaciones inalámbricas en el ordenador con #apt-get install wireless-tools
Y ejecutamos la herramienta que nos informa del estado actual del adaptador inalámbrico recién instalado, #iwconfig:
Establecemos ahora la configuración lógica de wlan0 para después conectar el equipo automáticamente a la red a través de este medio no guiado. Para ello es necesario editar el fichero /etc/network/interfaces y añadir los datos requeridos para enlazar con el AP, por ejemplo:
Con los siguientes datos de configuración:
Y hacemos saber al sistema que deseamos cargar esta configuración manualmente escribiendo: #ifup wlan0 (recuerda que #ifdown wlan0 realiza la función contraria).