Archivo de la categoría: General

Jitsi Meet ahora para iOS y Android

Supongo que lo primero seria establecer el contexto 🙂 Como comenté en mi blog en inglés, desde enero he cambiado de aires y estoy trabajando para Atlassian, en el equipo de Jitsi.

Para los que no lo conozcan, Jitsi Meet es una colección de proyectos software para realizar multi-videoconferencias. Uno de sus componentes, el Jitsi Video Bridge es probablemente el SFU mas avanzado a día de hoy. Oh, y todo es Software Libre, bajo licencia Apache 2.

Desde hace bastante tiempo https://meet.jit.si está disponible con una instancia publica donde cualquiera puede crear sus conferencias. O bien podéis instalaros vuestro propio servidor (escribiré un post al respecto en breve).

Ayer lanzamos Jitsi Meet para iOS y Android, de manera que ahora los usuarios pueden unirse a las conferencias desde dispositivos móviles y disfrutar de la misma experiencia que los usuarios de la web.

Para los que les gustan los detalles: las apps están hechas con React Native, y al igual que el resto de proyectos, son 100% Open Source.

 

Videoconferencias en tu propio servidor con SylkServer

Tener un sistema con el que poder hacer videoconferencias ad-hoc en nuestro propio servidor es algo que puede resultarnos interesante.  Hoy vamos ha hacer eso mismo, instalando SylkServer y Sylk WebRTC client en un servidor con Ubuntu 16.04, de manera que el resultado sea el mismo que al visitar ésta web.

Sigue leyendo

VoIP2day 2016 – Videoconferencias: el santo grial de WebRTC

Pasrece que últimamente solo quito el polvo al blog para poner alguna presentación, asi que allá vamos 🙂

Aquí os dejo la presentación que dí en el VoIP2day de hace algunas semanas, el tema fue el rol de WebRTC en democratizar las videoconferencias y cómo lo aprovechamos nosotros con SylkServer:


Para los que lo queráis probar, aquí os dejo unos links de interés:

https://webrtc.sipthor.net
http://sylkserver.com
https://github.com/AGProjects

Espero publicar una guía sobre cómo desplegar Sylk WebRTC en vuestro propio servidor pronto, ¡estad atentos!

VoIP2day 2015: Extendiendo SIP con WebRTC

Como todos los años desde el 2007, he tenido la suerte de asistir al VoIP2day y ademas dar una presentación. Me encanta poder asistir para reencontrarme con viejos amigos, ver a que estamos jugando cada uno, y conocer gente nueva de nuestro pequeño mundillo.

En esta ocasión he presentado “Extendiendo SIP con WebRTC”, en la que he explorado la forma en la que utilizamos WebRTC en AG Projects para extender cualquier infraestructura SIP, utilizando SylkServer.


¡Espero que os sirva!

ElastixWorld 2015: De SIP a WebRTC y vice versa

Si, si hace un mes del tema, ¡lo se! Pero he estado de vacaciones hasta el pasado domingo 🙂

El ElastixWorld 2015 ha sido increíble, como de costumbre, estos chicos consiguen seguir superándose año a año. No voy a poder comentarlo tan elocuentemente como Elio lo ha hecho en su blog, asi que mejor vais allí a leer todo sobre como fue el ElastixWorld 2015.

A continuación os dejo mi presentación “De SIP a WebRTC y vice versa”. En ella comente cual es nuestra idea sobre WebRTC y como aplicarlo en redes SIP tradiciones. Presentamos SylkServer 3, que incluye un gateway a WebRTC.


Podéis leer mas acerca del gateway aquí, y probarlo directamente con una cuenta de SIP2SIP aquí.

¡Nos vemos en Buenos Aires para el ElastixWorld 2016!

SylkServer 3.0.0 disponible, con gateway WebRTC!

Wow, hace casi un año que no escribo por aquí. Tras las labores de mantenimiento correspondientes y pasar a utilizar un theme algo mas minimalista, vamos al grano.

Ayer lanzamos SylkServer 3.0.0, una nueva versión de SylkServer, el servidor de aplicaciones SIP que desarrollamos en AG Projects. La funcionalidad principal que trae la version 3.0.0 es la capacidad de funcionar como un gateway a WebRTC.

En este post vamos a explorar un poco esta nueva versión, instalándola en una maquina virtual o servidor, hasta llegar al punto donde podamos realizar una llamada desde nuestro navegador a un dispositivo SIP de la vieja escuela.

Paso 1: requisitos previos

Lo primero que necesitamos en un sistema en el que instalar SylkServer. Yo voy a basarme en una Debian Jessie.

Una vez nuestro sistema esta instalado / actualizado, tenemos que anyadir los repositorios de AG Projects, siguiendo las instrucciones que se indican aquí.

Paso 2: instalación

Una vez tengamos los repositorios en nuestro sistema, instalaremos un par de paquetes, y el sistema de dependencias se encargará del resto:

sudo apt-get update
sudo apt-get install sylkserver sylkserver-webrtc-gateway

Paso 3: ejecución

Arrancamos los servicios de Janus y SylkServer:

sudo systemctl restart sylkserver
sudo systemctl restart janus

Consultamos syslog para ver que todo se haya arrancado correctamente:

Sep  4 12:11:22 debian-stable sylk-server[10031]: Starting SylkServer 3.0.0, with no configuration file
Sep  4 12:11:22 debian-stable sylk-server[10031]: Using SIP SIMPLE SDK version 2.5.1
Sep  4 12:11:24 debian-stable sylk-server[10031]: SylkServer started, listening on:
Sep  4 12:11:24 debian-stable sylk-server[10031]: 192.168.99.36:5060 (UDP)
Sep  4 12:11:24 debian-stable sylk-server[10031]: 192.168.99.36:5060 (TCP)
Sep  4 12:11:24 debian-stable sylk-server[10031]: 192.168.99.36:5061 (TLS)
Sep  4 12:11:24 debian-stable sylk-server[10031]: Site (TLS) starting on 10888
Sep  4 12:11:24 debian-stable sylk-server[10031]: Web server listening for requests on: https://192.168.99.36:10888
Sep  4 12:11:24 debian-stable sylk-server[10031]: warning: Error loading builtin "sylk.applications.xmppgateway" application: No module named wokkel.disco
Sep  4 12:11:24 debian-stable sylk-server[10031]: Loaded applications: conference, webrtcgateway, playback, echo, ircconference
Sep  4 12:11:24 debian-stable sylk-server[10031]: Default application: conference
Sep  4 12:11:24 debian-stable sylk-server[10031]: Application map:
Sep  4 12:11:24 debian-stable sylk-server[10031]: * echo:
Sep  4 12:11:24 debian-stable sylk-server[10031]: - echo
Sep  4 12:11:24 debian-stable sylk-server[10031]: [webrtcgateway] WebSocket handler started at wss://192.168.99.36:10888/webrtcgateway/ws
Sep  4 12:11:24 debian-stable sylk-server[10031]: [webrtcgateway] Allowed web origins: *
Sep  4 12:11:24 debian-stable sylk-server[10031]: [webrtcgateway] Allowed SIP domains: *
Sep  4 12:11:24 debian-stable sylk-server[10031]: [webrtcgateway] Using Janus API: ws://127.0.0.1:8188
Sep  4 12:11:24 debian-stable sylk-server[10031]: [webrtcgateway] Janus backend connection up

Paso 4: prueba

En el paso anterior hemos visto que SylkServer ha arrancado su servidor web en el puerto 10888:

Web server listening for requests on: https://192.168.99.36:10888

Asi que dirigimos el navegador a https://IP-del-servidor:10888/webrtcgateway/ y veremos la siguiente web:

Screenshot 2015-09-04 12.28.56

Al hacer click en el link “SylkRTC Test suite” se mostrará la pagina de prueba desde la que poder registrarnos y hacer llamadas:

Screenshot 2015-09-04 12.29.12

Rellenamos nuestros datos y llamamos al 3333@sip2sip.info para probar…

Screenshot 2015-09-04 12.30.14

Yeah!


 

Supongo que os surgirán algunas dudas de configuración y demás. Hay varias cosas que se pueden configurar en el fichero webrtcgateway.ini, pero una de nuestras decisiones de diseño con SylkServer es zeroconf, es decir, que el software funcione diréctamente sin configurar nada.

Para mas información, podéis consultar la web de SylkServer, el wiki con la documantación del API, o probar Blink for Web con vuestra cuenta de SIP2SIP.

Screenshot 2015-09-04 12.30.27

Open Pi Phone en el VoIP2day + Webinar

La semana pasada tuvo lugar el VoIP2day, cita oficial de profesinales y frikis de la VoIP. Nos juntamos los de siempre, pero ví algunas caras nuevas y buen contenido, espero que el evento siga mejorando 🙂

Tuve la ocasión de dar una charla titulada “Proyecto Open Pi Phone” en la que presenté una revisión de OP^2, que incluye nuevo hardware y una nueva versión del software. El software ya se encuentra disponible en la web del proyecto.

Esta es la pinta que tenía la nueva versión:

op2-spoiler

Y aqui os dejo las dispos:


Si tenéis especial interés en escucharme contarlo, mañana Jueves 16 de Octubre voy a impartir un webinar a traves de OpenWebinars, a las 19:00 CET.

SIP2SIP: SIP gratis para las masas

Hace unos pocos días tuve la oportunidad de participar nuevamente en el voip2day, con la charla “SIP2SIP: SIP gratis para las masas”.

El evento fue increíble, ¡sin duda la mejor edición hasta la fecha! Pude reencontrarme con antiguos amigos, hacer nuevos y desvirtualizar a otros cuantos 🙂

Muchas gracias a los organizadores y sponsors por seguir trabajando en hacer un voip2day mejor cada año.

Aquí os dejo mi presentación, para los que pudierais asistir:


¡Nos vemos el año que viene!

 

Añadiendo soporte de GPIO a Asiri

Si tuviste la suerte de recibir una placa Asiri en ElastixWorld, y seguiste la guía que escribí ayer, deberías tener una placa Asiri con uElastix funcionando sin problemas. Mola y todo eso, pero hoy en día los puertos GPIO son la moda, y como Asiri no tiene pues tenemos que hacer algo al respecto.

Antes de empezar, y para que quede claro, ¿qué es GPIO? La Wikipedia nos ayuda:

GPIO (General Purpose Input/Output = Entrada/Salida de Propósito General) es un pin genérico en un chip, cuyo comportamiento (incluyendo si es un pin de entrada o salida) se puede controlar (programar) por el usuario en tiempo de ejecución.

Vamos al lío. Lo primero que hice al recibir mi Asiri fue ir a la página web para ver que clase de puertos y conectores tenía, y me llevé una agradable sorpresa al ver que disponía de un puerto I2C:

asiri-board

 

La placa Asiri que me tocó a mi no tenía soldado un header en el puerto I2C, así que lo primero que tenemos que hacer es soldar un header de 4 pines para facilitar las conexiones:

asiri-header1

 

Así quedará con los cables conectados:

asiri-header2

 

I2C es un bus de comunicaciones en serie, y gracias a mis aventuras con el hardware ya conocía la manera de utilizarlo para GPIO, con la ayuda de un chip MCP230xx.

Los chips MCP23008 y MCP23017 son unos circuitos integrados muy baratos (menos de $2) que nos ofrecen 8 y 16 puertos GPIO respectivamente y se conectan a otro circuito mediante I2C, así que parece que estamos de suerte. Yo tengo un MCP23017 (el de 16 puertos GPIO) así que usaré ese para los ejemplos aquí expuestos. Veamos el chip:

mcp23017-pinout

 

Para funcionar con él, realizaremos las siguientes conexiones en nuestro breadboard:

  • A0, A1, A2: GND. Con estos pines se controla la identificación del chip en el bus I2C, ya que es posible encadenar varios. En éste caso conectamos todos a GND porque solo tenemos un chip.
  • RESET: +3.3V. La línea reset ha de estar conectada a voltaje positivo.
  • VDD: +3.3V.
  • VSS: GND.
  • SDA: conectado al pin SDA del puerto I2C de Asiri.
  • SCL: conectado el pin SCL del puerto I2C de Asiri.

Los 16 puertos GPIO del chip se reparten en 2 bancos de 8, numerados GPA0-7 y GPB0-7.

Una vez hemos realizado las conexiones necesarias, vamos a ver si el sistema detecta el chip. Para ello vamos a cargar el módulo del kernel necesario e instalar el paquete de herramientas de manejo del puerto I2C:

modprobe i2c-dev
yum install i2c-tools

 

Vemos si el kernel ha creado el dispositivo I2C en /dev:

[root@uelx ~]# ls -l /dev/i2c*
crw------- 1 root root 89, 1 Dec 31  1999 /dev/i2c-1
[root@uelx ~]#

 

¡Parece que si! A ver si vemos el chip…

[root@uelx ~]# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- 08 -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: 20 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
[root@uelx ~]#

 

Yeah, ahí está, en la dirección 0x20. Ahora vamos a montar un pequeño circuito con un LED para probar si la cosa realmente funciona:

Asiri-MCP23017_bb

Vamos a utilizar la herramienta i2cset del paquete i2c-tools que instalamos antes para encender y apagar el LED:

# configurar GPB0 como salida
i2cset -y 1 0x20 0x01 0x00
# activar GPB0, encender el LED
i2cset -y 1 0x20 0x13 0x01
# apagar el LED
i2cset -y 1 0x20 0x13 0x00

 

Si todo ha ido bien, deberíais ver que el LED se enciende con la segunda instrucción y se apaga con la tercera.

Como manejar el asunto así es un poco tedioso, he hecho una pequeña librería para el manejo de GPIO en Asiri con Python: python-asiri.

La librería depende del módulo smbus, que desafortunadamente no está disponible en los repositorios de Fedora Core 17, pero no pasa nada, vamos a compilarlo a mano:

wget http://dl.lm-sensors.org/i2c-tools/releases/i2c-tools-3.1.0.tar.bz2
tar jxvf i2c-tools-3.1.0.tar.bz2
cd i2c-tools-3.1.0
export CFLAGS="-I`pwd`/include"
cd py-smbus
python setup.py build
python setup.py install

 

Y ahora ya podemos instalar python-asiri:

yum install git
git clone https://github.com/saghul/python-asiri
cd python-asiri
python setup.py install

 

En el directorio examples podéis encontrar un ejemplo de LED que parpadea y otro con un botón. Si habéis creado el circuito igual que en el diagrama de arriba, tendréis el LED conectado el puerto GPB0, es decir, el 8, por lo que el ejemplo funciona sin modificaciones:

cd examples
python blink.py

 

Si todo ha ido bien deberíais ver el LED parpadeando a intervalos de 1 segundo, hasta que pulséis Ctrl-C. ¡Lo hemos conseguido!

Y ahora os toca, ¿qué vais a construir con Asiri?