lunes, 14 de julio de 2008

Software Libre

Muchos amigos me han preguntado qué es el software libre o más bien en que consisten las llamadas libertades del software, asi que dedicaré unas líneas a ello! Copiaré para ello unas líneas de wikipedia y el esquema que la verdad que refleja muy bien de qué va el tema: "Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software; de modo más preciso, se refiere a cuatro libertades de los usuarios del software: la libertad de usar el programa, con cualquier propósito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo que puede ayudar a otros; de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie (para la segunda y última libertad mencionadas, el acceso al código fuente es un requisito previo".

Es decir, todo aquello que no cumpla una de esas normas es considerado como diría Richard Stallman como software privativo. Quizás soy muy partidario de este tipo de cosas pero se ha dejado bastante claro que una comunidad abierta como es la de linux tiene futuro, no me metere en discusiones de qué sistema operativo es mejor que otro. Pero le pese a quien le pese Linux tiene un hueco importante ya en el mundo de empresa (lo usamos en google :) ) cosa a la que eran reacios no hace demasiado tiempo.

Es tan importante la sociedad que se está formando que los Grandes y poderosos de Microsoft comienzan a liberar código. Eso será por algo, quizás se han dado cuenta de todo lo que pierden si no empiezan a cambiar su actitud e incluso su modelo de negocio. Pero vamos ahi queda eso :)

Para más información wikipedia siempre ayuda, pongo aquí el esquema de la Wiki.



domingo, 6 de julio de 2008

Configuración Modem Huawei E169G en Debian


Bueno lo prometido es deuda, ahora mismo ya estoy escribiendo desde mi linux lo que quiere decir que he conseguido configurar la conexión del modem UMTS para mi Debian.

Lo primero, decir que es mucho más fácil de lo que me imaginaba y que es incluso más sencillo que en Windows.

Lo primero que debemos hacer es añadir al fichero /etc/rc.local la siguiente línea:
Huawei Technologies Co

modprobe usbserial vendor=0x12d1 product=0x1001


Una vez hecho esto ya podemos conectar el modem USB y reiniciar el equipo, ya que sino lo reiniciamos es probable que no nos reconozca el modem.

Pasamos a la configuración de modem, que se configura en la configuración de redes: Desktop >> Administration >> Networking. Nos aparecerá una ventana como la siguiente:



Elegimos la conexión de Modem y le damos a propiedades para configurarla, la tendremos que configurar de la siguiente manera:



El usuario y password podemos usar el genérico 123 y 123.

Una vez aceptados estos parámetros activamos el interfaz y ya lo tenemos todo! Tenemos nuestro modem UMTS funcionando en Linux! :)

En mi caso solo quedaba conectar el teléfono IP a la conexión Ethernet del portátil y configurar el laptop para que rute no olvidándose de la línea fundamental para hacer natting!

# iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE

Además de añadir las rutas y demás parámetros adecuados!

En definitiva ya tengo mis juguetes permitiendo llamar a casa!!




Banda Ancha en Irlanda


Estoy en Irlanda en un piso alquilado que no tiene línea de teléfono, y hay pocas posibilidades para contratar Internet para 3 meses! pero existe una tecnología que se está extendiendo rápidamente, al menos en España que son los modems UMTS que utilizan HSDPA para ofrecernos un ancho de banda similar a lo que nos ofrece un acceso ADSL básico en España, en este caso 3,6 Mbps.

La diferencia principal que he encontrado en el modelo de negocia que ofrece la compañía '3' de Irlanda es que existe la posibilidad de contratar este servicio en prepago, es decir; compras el modem UMTS y recargas la tarjeta SIM y a partir del saldo que tengas y lo que quieras contratar, en días o en tráfico que necesitas, eliges el servicio que quieres contratar. Por ejemplo, yo he elegido la opción de pagar por 30 días de internet 25 euros y con ello te ofrecen 10GB de descargas.

Hasta ahí todo bien, pero bueno hay que mirar un poco el consumo que uno hace ya que aproximadamente un poco más de la mitad del tráfico lo dedico a las llamadas por internet. Es decir, utilizando un codec G711 para realizar las llamadas, nos da un caudal efectivo a nível IP de 80Kbps en cada sentido, lo cual supone 72 MB por cada hora hablada, si consideramos la mitad del tráfico del mes en llamadas serían algo más de 69 horas habladas. Siempre hay que ponerse en el caso peor, por lo que estos calculos los realicé para no quedarme pillado; por ello solo quedan 5 GB de navegación y demás que pueden ser consumidos perfectamente viendo vídeos en youtube o descargando actualizaciones.... Así que hay que tener bastante ojito.

El modem UMTs va conectado directamente al laptop que ahora tiene un Windows XP corriendo y le conecto un teléfono Cisco 7940 con un cable Ethernet, por lo que el portátil hace las funciones de router cuando se establece una llamada.

Se da en algunas ocasiones que el caudal efectivo proporcionado no llega a las cifras adecuadas para mantener una conversación aceptable, ya sea por la demanda que haya en la célula o por la sincronización del Modem, la verdad que de esto último no estoy seguro ya que siempre sincroniza a 3,6Mbps; solo sé que si pruebo a desconectar y conectar todo funciona correctamente.

Pese a que de momento asi puedo cursar llamadas, quiero configurarlo en Linux, creo que mi windows no ruta como debería ya que añade retardo además de la línea. Esta semana me pondré con ello a ver si lo consigo y ya lo comentaré por aquí. De momento he visto que no demasiada gente lo tiene configurado en linux.

Así que nada más, espero escribir el siguiente post ya desde Linux :)

sábado, 5 de julio de 2008

OpenMoko: Por fin a la Venta!


Llevabamos mucho tiempo esperando que este móvil saliese a la venta aunque estoy seguro que la espera habrá merecido la pena! Muchos hablan de iPhone como si fuese el mejor teléfono del mercado ahora mismo pero a aquéllos que piensan eso les invito a que prueben este juguete, que aparte de tener todo lo que puede ofrecer un iPhone es un producto 100% europeo, libre e incluso bonito! palabra que muchas veces no suele estar asociada a Linux! y es que este teléfono corre Linux!

OpenMoKo viene del Alemán = offene MO-bile KO-mmunikation, y ha sido allí donde se ha desarrollado el proyecto principalmente. Surge de la idea de expandir las libertades de Linux y su versatilidad en las comunicaciones móviles y ciertamente parece que lo conseguirá.

Las características del teléfono son las siguientes:

  • Size and Weight
    • 4.75 x 2.44 x 0.73 inches
    • 6.5 ounces (185 grams)
  • Display
    • Touch Screen
    • 2.8" VGA (480x640) VGA Screen
  • Speed
    • ARM9 @ 400 MHz
    • 2D/3D Graphics Acceleration
  • GSM
    • Tri band 850/1800/1900 MHz
    • Tri band 900/1800/1900 MHz
  • Power
    • Removable 1200 mAh battery
  • Memory
    • 128MB SDRAM
    • 256MB NAND Flash
    • microSD Slot
  • Input and Output
    • Input and Output
    • 2.5 mm audio jack
    • GPS external connector
  • Hardware Highlights
    • Wi-Fi (802.1 1b/g)
    • AGPS
    • GPRS (2.5G not EDGE)
    • Bluetooth 2.0
    • 3axis Motion Sensors (2)
  • Software Highlights
    • Openmoko GNU/Linux-based
    • 100% FOSS on CPU
    • GNU/Linux development tools

Además de todo esto debemos añadir que al tratarse de un linux siempre puede configurarse y modificarse todo a la medida, es decir; tenemos frente a nosotros el primer teléfono a la carta.

El precio de lanzamiento es de 329 euros es Europa que dista bastante de los 399 dólares que cuesta en los Estados Unidos.

El emulador del SW de OpenMoKo lo podéis encontrar aquí

Es para Ubuntu y se instalaría de la siguiente manera:

$ sudo aptitude install libsdl-dev gcc-3.4 lynx netpbm
$ svn checkout https://svn.openmoko.org/trunk/src/host/qemu-neo1973cd qemu-neo1973
$ ./configure –target-list=arm-softmmu –cc=/usr/bin/gcc-3.4make
$ openmoko/download.sh
$ openmoko/flash.sh
$ arm-softmmu/qemu-system-arm -M neo -m 130 -mtdblock $ openmoko/openmoko-flash.image -kernel openmoko/openmoko-kernel.bin -usb -show-cursor -snapshot

Se tarda bastante en compilar así que lo mejor es tener un poco de paciencia.

Dos links interesantes relacionados con el proyecto son:

Pagina Principal


Wiki



domingo, 30 de diciembre de 2007

Asterisk y Gtalk


Muchos son los proyectos que intentan la convergencia entre los diferentes IM y algunos servicios de llamadas a través de internet.

Vamos a configurar nuestro asterisk para poderlo comunicar con una cuenta de googleTalk.

Para ello aprovechamos algunos ficheros de configuración que trae la última versión de asterisk(1.4), destinados exclusivamente a este fin.


Primeramente debemos modificar nuestras extensiones definidas anteriormente y añadir un usuario al de gTalk con el que deseamos establecer la conexión. No es necesario modificar el archivo sip.conf

Al fichero de configuración extensions.conf le debemos añadir:

[google-in]
exten => s,1,NoOp( Call from Gtalk )
exten => s,n,Set(CALLERID(name)=”From Google Talk”)
exten => s,n,Dial(SIP/test1)

[google-out]
exten => 200,1,Dial(gtalk/gtalk_account/username@gmail.com)


En esta versión de Asterisk existe además dos ficheros de configuración que vamos a modificar: jabber.conf y gtalk.conf.

El contenido de jabber.conf será de la siguiente manera:

[general]
debug=yes
autoprune=no
autoregister=no

[gtalk_account]
type=client
serverhost=talk.google.com
username=username@gmail.com/Talk
secret=********
port=5222
usetls=yes
usesasl=yes
buddy=buddy@gmail.com
statusmessage=”This is an Asterisk server”
timeout=100


Y el contenido de gtalk.conf será de la siguiente manera:

[general]
context=google-in
allowguest=yes
;
[guest]
disallow=all
allow=ulaw
context=google-in

[buddy]
username=username@gmail.com
disallow=all
allow=ulaw
context=google-in
connection=gtalk_account



Una vez configurado esto ya lo tenemos, configuramos un cliente(softphone) con la numeración a la que podemos llamar según el dialplan que hemos definido.

Una vez que nos metemos en la consola por primera vez aparecerán cosas de la siguiente manera:

JABBER: gtalk_account INCOMING:

Mi usuario de gtalk se tiene agregado a si mismo por eso ese log.

También aparecerán logs de la siguiente manera.

JABBER: gtalk_account INCOMING:

Y alguno de la siguiente manera:

JABBER: gtalk_account OUTGOING: Greetings I am the Asterisk Open Source PBX and I want to subscribe to your presence



Una vez visto que efectivamente asterisk está interactuando con la cuenta de gtalk que hemos configurado pasamos a la ejecución del ejemplo:

Primero intentamos desde la consola de asterisk:

*CLI> dial
The 'dial' command is deprecated and will be removed in a future release. Please use 'console dial' instead.

Y de repente como era esperable nuestro cliente comienza a sonar. Y en la pantalla aparece el número de Google Talk.



Finalmente llamamos a la extensión 200, (cuenta de gtalk.) y obtenemos el siguiente log en la consola de asterisk

*CLI>
[Dec 30 15:20:47] ERROR[14176]: chan_gtalk.c:858 gtalk_alloc: no gtalk capable clients to talk to.
[Dec 30 15:20:47] WARNING[14176]: app_dial.c:1125 dial_exec_full: Unable to create channel of type 'gtalk' (cause 0 - Unknown)


Es un comienzo de cómo asterisk se puede comunicar con gtalk! seguiremos investigando.






Jugando con Asterisk

No hace mucho tiempo que llevo jugando con esto de Linux cuando me enseñaron que era Asterisk.

¿Qué es Asterisk?

Asterisk es una centralita software (PBX) de codigo abierto. Como cualquier centralita PBX permite interconectar telefonos y conectar dichos telefonos a la red telefónica convencional (RTB - Red telefónica básica)- Su nombre viene del simbolo asterisco (*) en inglés.

La diferencia con las centralitas convencionales reside en que las llamadas son dirigidas con internet extremo a extremo. ¿Qué supone esto? Llamadas internacionales baratas a cambio de no poder asegurar la calidad del sonido. Recordemos que internet es Best Effort.

Además de todo esto, el mayor de los atractivos de Asterisk es que soporta diferentes protocolos utilizados en llamadas VoIP: H323, IAX(propietario de Asterisk) y SIP ( el más usado en la actualidad ).

Una vez leídas estas pinceladas quizas sería recomendable leerse el siguiente tutorial que detalla qué es lo que se puede hacer con Asterisk, en qué consiste Asterisk y cómo se puede hacer. Tutorial

Una vez leído ese tutorial, configurarse un servidor sencillo no debe resultar excesivamente complicado.

Un ejemplo simple sería el siguiente (particularizado para debian):

1.- Instalamos los paquetes de asterisk:
# apt-get install asterisk

2.- Configuramos el contenido de sip.conf (situaldo en /etc/asterisk)


[general]

context=default
usercallerid=yes
bindport=5060 ; UDP Port to bind to (SIP standard port is 5060)
bindaddr=0.0.0.0 ; IP address to bind to (0.0.0.0 binds to all)
srvlookup=yes ; Enable DNS SRV lookups on outbound calls

disallow=all ; First disallow all codecs
allow=ulaw ; Allow codecs in order of preference
allow=ilbc ;
trustrpid = yes ; If Remote-Party-ID should be trusted
sendrpid = yes ; If Remote-Party-ID should be sent
subscribecontext = default ; Set a specific context for SUBSCRIBE requests
; Useful to limit subscriptions to local extensions
; Settable per peer/user also

localnet=192.168.1.0/255.255.255.0; All RFC 1918 addresses are local networks
domain=
type=friend
secret=welcome ; Password of the peer
qualify=yes ; Qualify peer is no more than 2000 ms away
;nat=yes ; This phone is natted
host=dynamic ; This device registers with us
canreinvite=no ; Asterisk by default tries to redirect
context=internal ; the internal context controls what we can do


[test2]
type=peer
qualify=yes ; Qualify peer is no more than 2000 ms away
nat=yes ; This phone is not natted
canreinvite=yes ; Asterisk by default tries to redirect
host=dynamic ;It will register with us
secret=welcome
context=internal


3.- Configuramos el contenido de extensions.conf (situaldo en /etc/asterisk)

[general]
static=yes
writeprotect=no


[globals]

; -------------------
; peers and friends
; -------------------

TEST1=SIP/test1
TEST2=SIP/test2
ALL_INTERNAL=${TEST1}&${TEST2}

[internal]

exten => 100,1,Dial(${ALL_INTERNAL},25,r)

exten => 101,1,Dial(${TEST1},25,r)

exten => 102,1,Dial(${TEST2},25,r)



4.- Lanzamos las consola de asterisk
# asterisk -r

5.- volvemos a cargar los ficheros de configuracion
*CLI> sip reload
*CLI> dialplan reload

6.- Configuramos los clientes para que autentiquen contra el servidor, ya sean softphones o teléfonos IP. Y ya lo tenemos nuestro primer servidor de Asterisk configurado!

Nuevo Google!

Google tiene una versión Black!

YA hace algún tiempo que Google ha sacado una versión en negro. La finalidad de éste proyecto no es otra que el ahorro de energía.

A partir de ahora a utilizar el nuevo google black.