domingo, 23 de agosto de 2009

Novedades en Ubuntu 9.10

Ayer me puse a descargar la versión Alfa 4 de Ubuntu 9.10 para echar un vistazo a las novedades, y para probarla en los equipos que habitualmente utilizo.

A pesar de que todavía falta algo más de dos meses para la aparición de la versión final, el comportamiento ha sido correcto, ya que no he sufrido ningún problema de falta de estabilidad, y he podido ver algunas de las novedades que se preparan.

La forma de testearlo ha sido la habitual: Preparar un USB autoarrancable e inciar el sistema en cuestión en los equipos para las pruebas (Asus EEE PC 701 y un Pentium 4 de sobremesa que cuenta ya con algunos añitos).



Esta versión incluye el kernel 2.6.31-5 y Gnome 2.27.5, los cuales aportan principalmete cambios en los controladores de las tarjetas gráficas de intel, así como otros relacionados con GDM y las aplicaciones de Gnome.

Uno de estos cambios, es la sustitución del cliente de mensajería instantanea Pidgin por Empathy. En mi caso, lo he probado con una cuenta de Yahoo, y hasta donde he llegado, parecía funcionar correctamente.



Además, se incluye Firefox 3.5, el cual anunciaba importantes mejoras tanto en los tests de compatibilidad con estándares como en la velocidad y eficiencia de ejecución de aplicaciones javascript. Lo he probado con algunas webs que hacen uso intensivo de javascript (Openstreetmap, Google Maps) y sin haber hecho ninguna medida rigurosa, sí que da la sensación de que las cosas van con algo más de agilidad.



Por otra parte, el sistema de información acerca de la energía y batería para los equipos portátiles, también parece haber mejorado y proporciona información más detallada.



Otra de las novedades, es la inclusión de algunas herramientas de gestión de discos. En particular una para analizar la ocupación de los mismos (la cual ya estaba disponible en versiones anteriores, pero no aparecía en las versiones live ni en las instalaciones por defecto).



Mucho más interesante, en mi opinión, que el analizador de ocupación de disco, es otra herramienta que nos proporciona información detallada sobre nuestros sistemas de almacenamiento, y en particular sobre la información S.M.A.R.T. proporcionada en la actualidad por la mayor parte de los discos existentes, y desconocida por un gran número de usuarios.



La utilidad que se encarga de ofrecernos esta información es Palimpsest



Por último, un comentario sobre Ubuntu One. Se trata de un sistema de almacenamiento y compartición de ficheros por red. El sistema incluye los accesos a este servicio de almacenamiento, aunque en mi caso particular no lo he podido probar al no estar suscrito al mismo.



En resumen, la impresión causada es muy positiva: El sistema se comporta correctamente, actualiza las aplicaciones a las últimas versiones disponibles y se esfuerza por ofrecer mejoras y como novedad ahora también servicios (aunque con respecto a éstos habrá que leer detenidamente las condiciones de uso). Mi opinión por el momento (aunque la prueba no ha sido exhaustiva en profundidad) es que no tengo ninguna queja con respecto a Ubuntu 9.10 y que si las cosas siguen así, en dos meses lo veremos instalado en muchos equipos.

Actualización (05/09/2009):
El día 3 de septiembre se publicó la versión alfa-5 de Ubuntu 9.10. Descargué e instalé dicha versión en un equipo del año 2005: P4 HT @3.2GHz, 1GB RAM, 250GB HD. La instalación se realizó con el sistema de archivos ext4, que es el utilizado en el proceso de instalación salvo que se le indique otra cosa. Los resultados obtenidos tras la instalación son excelentes. Indico algunos tempos de arranque del sistema y aplicaciones:

Arranque de Ubuntu 9.10 ~29s
Open Office Org Writer ~5s
Mozilla Firefox 3.5.2 ~3s
GIMP ~15s

Actualización (18/09/2009):
El día 17 de septiembre se publicó la versión alfa-6 de Ubuntu 9.10. Esta versión incluye muchos cambios, a destacar especialmente el uso de upstart, ya que probablemente es el que más implicaciones puede tener en relación con el resto del sistema.

Como novedades, cabe destacar la aplicación Ubuntu Software Store, que presenta de forma mucho más gráfica y detallada las aplicaciones disponibles para instalar en nuestro equipo.

Leer más...

miércoles, 5 de agosto de 2009

Crear vídeos para YouTube desde Ubuntu

En la anterior entrada hemos visto cómo volcar nuestros vídeos desde una cámara MiniDV al disco duro del ordenador.

A continuación vamos a ver el proceso para publicar estos vídeo en YouTube. Si echamos un vistazo a las recomendaciones sobre los formatos de vídeo vemos los códecs tanto de audio como de vídeo que recomiendan utilizar.

Nuestro objetivo es utilizar unos códecs que proporcionen una buena calidad y con un tamaño de fichero final resultante razonablemente pequeño. En particular, elegiremos trabajar con los códecs más avanzados de tipo mpeg4 soportados: H.264 para vídeo (también conocido como AVC) y AAC para el audio.

Además, dado que estos son los codecs utilizados actualmente en la mayor parte de los portales de vídeo para la publicación de éstos, es posible incluso (aunque no tengo ninguna constancia de esto) que evitemos algún paso adicional de reencodado, consiguiendo así una mejor calidad en el resultado final.

Para realizar la conversión, utilizarems la herramienta ffmpeg, disponible en los repositorios de Ubuntu 9.04 e incluida en la instalación por defecto. Con respecto al codec de vídeo, tenemos que instalar el paquete libx264-65 que es donde se encuentra el código para codificar en formato H.264; por último, en lo referente al audio, deberemos de reemplazar el paquete libavcodec52 por libavcodec-unstripped-52 dado que éste último es el que incluye lo necesario para convertir audio a formato AAC.

En definitiva, es suficiente con hacer lo siguiente:


$ sudo apt-get install libx264-65 libavcodec-unstripped-52


Una vez que contamos con la herramienta de conversión, así como con los codecs adecuados, obtenemos la línea de comando en cuestión que realizará la acción deseada:


ffmpeg -i captureTest.dv -acodec libfaac -ab 64k -vcodec libx264 -b 720k -threads 0 -deinterlace -r 25 -s 640x480 -aspect 4:3 captureTest.mp4


En nuestro caso particular:
  • El fichero de entrada es captureTest.dv (volcado de un vídeo grabado en una cámara MiniDV) y el fichero generado (salida) es captureTest.mp4
  • Generamos audio en formato AAC con una tasa (bitrate) de 64kbps
  • Generamos vídeo en formato x264/h264 con una tasa de 720kbps
  • Dado que el contenido inicial está entrelazado, indicamos que se realice un proceso de desentrelazado
  • Deseamos un resultado final con un tamaño de 640x480 a 25fps
  • La proporción (aspect ratio) final debe ser 4:3

Con este comando, aplicandolo al vídeo de ejemplo conseguimos pasar de 69.5MB a 2.75MB, pero dado que utilizamos codecs mpeg-4 muy eficientes, mantenemos una calidad razonablemente buena, tal y como se aprecia en el ejemplo:



Como dato anecdótico, el video muestra la entrada a la Cartuja de Miraflores, en Burgos. Leer más...

Capturar video MiniDV en Ubuntu

Hace aproximadamente 9 años compré una cámara MiniDV. Hacía ya bastante tiempo que apenas la utilizaba, pero con el tema de poner vídeos en youtube la he desempolvado y he estado viendo qué se puede hacer con ella en un ordenador equipado con Ubuntu 9.04

La cámara graba en formato PAL SD (720x576, 25fps). El formato MiniDV tiene la ventaja de que se puede editar y acceder fácilmente a cada imagen, pero tiene el gran inconveniente de que su compresión es mínima. Es decir, los vídeos en este formato son inmensamente grandes. En particular, el vídeo se graba a una tasa de 28.8Mbps y el audio a 1Mbps, de modo que en total estamos hablando de unos 30Mbps. En definitiva, cada minuto de grabación suponen unos 225MB de espacio si decidimos volcar estos vídeos en nuestro disco duro.

De modo que nos encontramos con dos pasos a resolver:


  1. Capturar el vídeo en el ordenador.

  2. Convertir el vídeo a un formato más apropiado según el uso que le vayamos a dar al mismo.


La cámara de video se conecta al ordenador por medio de un cable IEEE1394 (Firewire). El equipo detecta correctamente el conector 1394, pero no crea una entrada en /dev/ (en particular /dev/raw1394) hasta el momento en que detecta que un dispositivo ha sido conectado.

Como software de captura, en los repositorios podemos encontrar kino y dvgrab. Dado que la captura con kino es sumamente sencilla, utilizaremos este programa.


$ sudo apt-get install kino


Antes de comenzar a utilizar Kino, comentaremos que en la versión 9.04 de Ubuntu hay un problema con la creación del dispositivo /dev/raw1394. Podemos sortear el problema o bien lanzando kino mediante sudo desde la línea de comando:


$ sudo kino


O mejor, cambiando los permisos del punto de acceso al dispositivo (recordemos que previamente hay que conectar y encender la cámara para que el sistema cree el acceso al dispositivo en cuestión):


$ sudo chmod 666 /dev/raw1394


Si lanzamos kino sin realizar este cambio, nos encontraremos con un mensaje de error ("raw1394 kernel module not loaded or failure to read/write /dev/raw1394", o la versión correspondiente al idioma en que tengamos instalado el sistema) y no seremos capaces de realizar el proceso de captura.

Una vez realizado este cambio, lanzamos Kino, y seleccionamos la opción de captura. El programa es muy intuitivo. Con las opciones por defecto, el programa vuelca los fragmentos de vídeo en ficheros separados (cada toma es un fichero diferente) en el directorio que hayamos indicado.



Al final, nos encontraremos con unos cuantos fragmentos de vídeo de tamaño muy considerable con los cuales podemos proceder a tareas de edición o de conversión de formatos. Leer más...

lunes, 22 de junio de 2009

Multiterminal en Ubuntu 9.04

El concepto de multiterminal es una particular configuración de un equipo informático de tal modo que permite que el equipo pueda ser utilizado por más de una persona simultáneamente. Dado que el hardware actual tiene sobrada potencia para los requerimientos que pueda exigir la gestión de múltiples escritorios, esta configuración es especialmente interesante en entornos de tipo de trabajo de oficina. La principal ventaja: el ahorro, no sólo en energía sino también en costes de mantenimiento.

Hasta hace algún tiempo, este tipo de configuraciones no eran sencillas y requerían modificar, recompilar o parchear diferentes partes del sistema. En las versiones más recientes, el kernel de Linux ya incluye lo necesario para poder tratar por separado los eventos provenientes p.ej. de diferentes teclados. De esta manera, actualmente se puede conseguir una configuración multiterminal simplemente instalando algún paquete adicional y modificando algún fichero de configuración.

En anteriores ocasiones he preparado tutoriales para configuraciones multiterminal en Ubuntu 6.06 y 8.04, pero esta es la primera ocasión en que publico el tutorial también en castellano.

La configuración es muy similar a la de la versión 8.04, con la diferencia de que algunos componentes de software han sido actualizados consiguiendo así alguna mejora con respecto a versiones anteriores. No obstante, continúa habiendo algunos problemas.





El equipo es el mismo que se utilizó en la anterior versión:
Pentium 4 a 3GHz, con 512MB de RAM y un disco duro de 80GB. La tarjeta de video es una ATI Radeon X300 PCIe de Gigabyte con dos salidas (VGA y DVI). En la salida DVI se utiliza un adaptador VGA de modo que finalmente tenemos dos monitores VGA analógicos en el sistema. Los monitores son pantallas convencionales LCD/TFT con una resolución de 1280x1024.

1.- En primer lugar, instalamos Ubuntu 9.04 en el ordenador. Lo hacemos utilizando un sistema "live" (CD/DVD o USB). Dado que actualmente la mayor parte de los equipos soportan arranque desde USB, recomedamos hacerlo con un USB-live, dado que el proceso de instalación será mucho más rápido que si lo hacemos desde un CD o DVD.

2.- A continuación, actualizamos el sistema para tener los últimos paquetes disponibles. Lo podemos hacer o bien con las herramientas gráficas (Gestor de Actualizaciones / Synaptic) o bien utilizando la línea de comandos desde un terminal:


$ sudo apt-get update


3.- Posteriormente, instalamos unos paquetes adicionales (xserver-xephyr y wmctrl). Estos paquetes no vienen incluidos en la instalación por defecto, pero podemos encontrarlos en los repositorios oficiales, de modo que su instalación es muy sencilla. Dichos paquetes son necesarios para conseguir obtener la configuración multiterminal que estamos buscando.


$ sudo apt-get install xserver-xephyr wmctrl


Antes de comenzar con las modificaciones particulares de la configuración multiterminal, es recomendable hacer los ajustes y configuración necesarios para el escenario de trabajo particular de cada usuario (configuración de red, creación de usuarios, etc). Algunas herramientas y utilidades de Gnome no funcionan al trabajar con múltiples sesiones simultáneas. Al detectar el sistema operativo múltiples sesiones, no es posible generar los necesarios ficheros de bloqueo requeridos por las herramientas de configuración.

Es muy recomendable conservar una copia de los ficheros de configuración en su estado inicial (/etc/X11/xorg.conf y /etc/gdm/gdm.conf). Estos ficheros serán necesarios si el usuario desea volver a la configuración inicial (monousuario) del equipo.

Una vez realizadas estas tareas previas de configuración inicial, procedemos a realizar la configuración específica del equipo multiterminal.



Inicialmente, tras la configuración por defecto, el sistema se inicia con las dos pantallas en modo "clon". si examinamos la salida del comando xrandr podremos ver los detalles de nuestra actual configuración. En nuestro caso particular, obtenemos lo siguiente:


$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1200
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3
640x480 75.0 59.9
720x400 70.1
DVI-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3
640x480 75.0 72.8 59.9
720x400 70.1
S-video disconnected (normal left inverted right x axis y axis)


El siguiente paso es modificar /etc/X11/xorg.conf para indicar cómo obtener un "escritorio extendido". En caso de tener dudas sobre este tema, en el wiki de ubuntu se puede encontrar información adicional para configurar y definir manualmente sistemas multipantalla.

En las últimas versiones de Linux, algunos aspectos relacionados con la gestión de dispositivos están siendo modificados y se gestionan desde diferentes partes del sistema, como hal y udev. Vemos que ya no es necesario indicar nada relacionado con ratón y teclado en el fichero xorg.conf

Tras haber hecho nuestra copia del fichero xorg.conf inical, lo modificamos para describir nuestra configuración con dos monitores. Incluimos también algunas opciones convenientes (las indicadas en la sección "ServerFlags") para un sistema multiterminal.


Section "Device"
Identifier "Card0"
BoardName "ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]"
Driver "ati"
BusID "PCI:1:0:0"
Option "Monitor-VGA-0" "Mon-VGA"
Option "Monitor-DVI-0" "Mon-DVI"
EndSection

Section "Monitor"
Identifier "Mon-VGA"
Option "DPMS"
EndSection

Section "Monitor"
Identifier "Mon-DVI"
Option "DPMS"
Option "Below" "Mon-VGA"
EndSection

Section "Screen"
Identifier "Screen-base"
Device "Card0"
Monitor "Mon-VGA"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1280x1024"
Virtual 1280 2048
EndSubSection
EndSection

Section "ServerFlags"
# Even if mouse detection fails, X will start
Option "AllowMouseOpenFail" "yes"

# VT switching is disabled
Option "DontVTSwitch" "yes"

# X restart (Ctrl+Alt+Backspace) is disabled
Option "DontZap" "yes"
EndSection


En esta ocasión hemos elegido una distribución vertical de los monitores. Ha sido únicamente como prueba para ver si la aceleración 3D funciona al mantener las dimensiones de la pantalla virtual menores (o iguales) que un cuadrado de 2048 pixels de lado. Si el usuario prefiere una distribución horizontal, basta con utilizar leftOf o rightOf en lugar de below, en la sección correspondiente al segundo monitor. Además, se deberá de ajustar el tamaño del escritorio virtual al requerido en función de la distribución deseada.

Tras haber hecho estos cambios, si reiniciamos el servidor X veremos un escritorio ocupando los dos monitores en vertical y con estas características:


$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 2048, maximum 1280 x 2048
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3
640x480 75.0 59.9
720x400 70.1
DVI-0 connected 1280x1024+0+1024 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3
640x480 75.0 72.8 59.9
720x400 70.1
S-video disconnected (normal left inverted right x axis y axis)


Tras haber modificado el fichero xorg.conf y teniendo ya un escritorio extendido que cubre los dos monitores (tanto si utuilizamos una distribución vertical como una horizontal) el siguiente paso es configurar gdm para lanzar dos sesiones Xephyr, una para cada puesto.

Previamente, tenemos que obtener información acerca de los eventos de entrada (los dos teclados y ratones) del sistema.


$ ls -la /dev/input/by-path/ | grep event | grep kbd
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 pci-0000:00:1d.2-usb-0:2:1.0-event-kbd -> ../event5
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 platform-i8042-serio-0-event-kbd -> ../event3

$ ls -la /dev/input/by-path/ | grep event | grep mouse
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 pci-0000:00:1d.2-usb-0:1:1.0-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 platform-i8042-serio-1-event-mouse -> ../event8


En nuestro caso, tenemos una pareja de teclado y ratón conectados por puerto PS2 para uno de los puestos, y para el segundo una pareja de teclado y ratón USB. Los valores que obtengamos aquí serán usados posteriormente para configurar los dispositivos de entrada que corresponden a cada puesto.

A continuación se crea un lanzador con el objeto de ejecutar Xephyr con los parámetros adecuados y relacionando a cada uno con sus eventos de entrada. Para lograr esto, creamos un fichero que se utilizará a modo de script de lanzamiento. podemos nombrar y crear el fichero del modo que nos parezca más conveniente. En nuestro caso, lo creamos como /usr/sbin/Xephyr-path.sh

Se escoge un editor (vi, gedit, ...) para crear el fichero en cuestión, sin olvidar que tiene que tener permisos para poder ser ejecutado por root (el propietario del fichero).


$ sudo gedit /usr/sbin/Xephyr-path.sh
$ sudo chmod 744 /usr/sbin/Xephyr-path.sh


El fichero en cuestión tendrña un contenido similar a esto (cambiando el parámetro xkblayout en función del lenguaje de teclado del usuario):


$ cat /usr/sbin/Xephyr-path.sh



#!/bin/bash

# 200906 - josean
# http://netpatia.blogspot.com/

trap "" usr1

XEPHYR=/usr/bin/Xephyr
DISPLAY=:0
XAUTHORITY=/var/lib/gdm/:0.Xauth

args=()

while [ ! -z "$1" ]; do
if [[ "$1" == "-kbdpath" ]]; then
shift
if [ ! -z "$1" ]; then
args=("${args[@]}" "-keybd")
args=("${args[@]}" "evdev,,device=/dev/input/by-path/$1,xkbrules=xorg,xkbmodel=evdev,xkblayout=es")
fi
elif [[ "$1" == "-mousepath" ]]; then
shift
if [ ! -z "$1" ]; then
args=("${args[@]}" "-mouse")
args=("${args[@]}" "evdev,,device=/dev/input/by-path/$1")
fi
else
args=("${args[@]}" "$1")
# echo "+++ args $1 +++" >> /tmp/logXephyr
fi
shift
done

# Next line is just to create a log file with the invocation parameters, for debug purposes
# echo $XEPHYR -ac "${args[@]}" >> /tmp/logXephyr
exec $XEPHYR -ac "${args[@]}"


Tras haber creado este script, continuamos con las modificaciones en el fichero /etc/gdm/gdm.conf

En la sección [servers] de gdm.conf comentamos las reglas correspondientes a la distribución inicial y definimos lo necesario para la nueva distribución. Modificamos el fichero para lanzar las X de base y dos sesiones Xephyr (una por puesto) ejecutandose sobre las X de base.


# ****************************************************************************

[servers]

# 0=Standard
#
# Means that DISPLAY ":0" will start an X server as defined in the
# [server-Standard] section.

# ****************************************************************************

# Multiseat setup (200906)

0=Xephyr0
1=Xephyr1
2=Xephyr2

[server-Xephyr0]
name=Xephyr0
command=/usr/bin/X -br -dpms -s 0
handled=false
flexible=false

[server-Xephyr1]
name=Xephyr1
command=/usr/sbin/Xephyr-path.sh -br -screen 1280x1024 -kbdpath platform-i8042-serio-0-event-kbd -mousepath platform-i8042-serio-1-event-mouse
handled=true
flexible=false

[server-Xephyr2]
name=Xephyr2
command=/usr/sbin/Xephyr-path.sh -br -screen 1280x1024 -kbdpath pci-0000:00:1d.2-usb-0:2:1.0-event-kbd -mousepath pci-0000:00:1d.2-usb-0:1:1.0-event-mouse
handled=true
flexible=false

# ****************************************************************************


Vemos que éste es el script en e que hay que indicar qué dispositivos de entrada (sus puntos físicos de conexión) son los que corresponden con cada uno de los puestos.

El segundo cambio en el fichero gdm.conf está relacionado con la petición de autentificación. En esta parte hay algunas tareas que todavía es necesario realizar de forma manual.

Nos encontramso con el problema ya conocido de colocar cada sesión Xephyr adecuadamente para que cada usuario vea su sesión en su monitor. La versión actual de Xephyr no soporta el parámetro geometry que incluyen muchas aplicaciones X, de modo que no es posible indicar a Xephyr el lugar en el que se tiene que colocar. Para evitar este problema, creamos un script que será invocado en lugar de hacer una llamada directa al script de petición de identificación para iniciar sesión (greeter).

Este script, invocará una serie de comandos destinados a colocar cada ventana Xephyr en el lugar deseado. Para ello haremos uso de las utilidades xwininfo, wmctrl. con ellas podremos identificar una de las ventanas Xephyr y desplazarla al segundo monitor, de manera que resolvamos el problema de solapamiento entre las ventanas de sesión. Este es el motivo por el que anteriormente instalamos el paquete wmctrl.

En la sección [daemon] de gdm.conf cambiamos la referencia al "greeter" original por una referencia a este nuevo script. El script en cuestión no sólo invocará la petición de identificación, sino que se ocupará de colocar cada ventana Xephyr en su posición correcta:


# ****************************************************************************

[daemon]

# The greeter for attached (non-xdmcp) logins. Change gdmlogin to gdmgreeter
# to get the new graphical greeter.
# Greeter=/usr/lib/gdm/gdmgreeter
Greeter=/usr/sbin/Xephyr-login.sh

# ****************************************************************************


Como hemos indicado, creamos el script responsable de solicitar la identificación (en nuestro caso lo hemos llamado /usr/sbin/Xephyr-login.sh). Este script será invocado por el usuario gdm, de modo que creamos el script como propiedad de dicho usuario, dando únicamente permisos de ejecución por éste.


$ sudo gedit /usr/sbin/Xephyr-login.sh
$ sudo chown gdm:gdm /usr/sbin/Xephyr-login.sh
$ sudo chmod 744 /usr/sbin/Xephyr-login.sh


El script que acabamos de crear debería de tener este aspecto:


$ cat /usr/sbin/Xephyr-login.sh


#!/bin/bash
# /usr/sbin/Xephyr-login.sh

XAUTHORITY=/var/lib/gdm/:0.Xauth
XEP=$(xwininfo -root -children -display :0 | grep "Xephyr on :1" --max-count=1)
echo XEP ${XEP} >> /tmp/logXephyrLogin

# assign values to positional parameters to obtain the id (first parameter) of the Xephyr window
set ${XEP}
DISPLAY=:0 wmctrl -i -r $1 -e 0,0,1024,-1,-1
/usr/lib/gdm/gdmlogin


En nuestro caso, desplazamos en vertical una de las sesiones 1024 pixels (recordamos que nuestra distribución consiste en dos pantallas de 1280x1024 alineadas verticalmente).

Vemos que cuando se debería invocar la identificación de sesión, en su lugar se ejecuta el nuevo script (que incluye también esta parte de solicitud de identificación). Desde el punto de vista del usuario, lo que se ve es cada una de las pantallas de identificación ejecutandose en uno de los monitores. El resto de las operaciones realizadas pasan desapercibidas para el usuario.

La versión 9.04 de esta configuración multiterminal consigue algunas mejoras con respecto a versiones anteriores:
* La rueda de scroll vertical del ratón funcina correctamente.
* Los indicadores LED de los teclados funcionan de forma independiente sin mezclarse.

Updated 2009/06/22: Cambios menores
Leer más...

viernes, 12 de junio de 2009

Fedora 11 en el Asus EeePC 701

Dado que recientemente ha sido publicado Fedora 11 (Leonidas), y aprovechando que está disponible en forma de Live-ISO, he decidido descargar la imagen en cuestión, preparar un Live-USB y probarla en el Asus EeePC 701.

Fedora 11 incluye una serie de mejoras en cuestiones relativas a seguridad y virtualización, además de mejoras en sus características en los ámbitos de equipo de escritorio como de servidor.

La distribución incluye el soporte de ficheros ext4 y entre otras cosas se habla de un arranque en 20 segundos (obviamente no es el caso de la versión live-USB). En algunos blogs se indica que es incluso más rápido que el inicio de Ubhuntu 9.04, el cual consigue unos tiempos mucho más que aceptables.

En cualquier caso, el objeto de esta entrada no es hacer una revisión de Fedora 11 y sus nuevas características, sino analizar si es una opción viable para instalar en un Asus Eee PC 701, con sus particulares limitaciones y su hardware.

En una de las páginas de la web de Fedora indican que este modelo está completamente soportado sin necesidad de realizar modificaciones ni ajustes manuales.

Efectivamente, los componentes que he estado examinando (tarjeta de audio, adaptador de red inalámbrica y cámara) son detectados de forma automática y funcionan a la perfección.



Una distribución muy recomendable para quienes quieren aprovechar las ventajas y las prestaciones de una distribución completa, sin recortes ni simplificaciones excesivas, y con unos completísimos repositorios de aplicaciones y utilidades listos para instalar

Note: English version:
Fedora 11 on the Asus EeePC 701 Leer más...

viernes, 29 de mayo de 2009

Asus Eee PC 701 con Ubuntu 9.04

Desde finales de 2007 tengo un Asus Eee PC 701, y desde entonces he probado diferentes sistemas operativos en dicho equipo. De todos ellos, aquéllos en los que más interés he tenido han sido las diferentes versiones de Ubuntu.

Tan pronto como Ubuntu 8.04 estuvo disponible, eliminé el Xandros que venía inicialmente con el equipo y lo reemplacé por dicha versión de Ubuntu. Inicialmente, me encontré con muchas dificultades, debido principalmente a componentes del hardware no soportados o no reconocidos directamente por la distribución en cuestión.

Seis meses después, se publicó Ubuntu 8.10, el cual aportaba algunas mejoras con respecto a la versión anterior. Las cosas empezaban a mejorar, de modo que ya resultaba un poco más sencillo conseguir que todos los componentes del sistema funcionasen correctamente, aunque todavía era necesario realizar manualmente algunas modificaciones sobre éste. Las dificultades se debían fundamentalmente a la tarjeta WiFi (Atheros AR2425), que no era reconocida directamente por el kernel.

La siguiente versión (Ubuntu 9.04) se anunciaba con un kernel que ya reconocía y soportaba directamente la tarjeta inalámbrica de este equipo, de modo que he ido probando mediante USB-live las versiones que se han ido publicando, desde la Alfa 4. Efectivamente, una de las grandes ventajas de esta versión es su soporte completo y sin modificar nada de todos los componentes hardware del Asus Eee PC 701 (tarjeta WiFi incluida).

Cuando, a finales de abril, se publicó la versión definitiva de Ubuntu 9.04, decidí hacer una instalación limpia (en lugar de actualizar desde la versión anterior) de dicha versión. La versión que tenía anteriormente instalada (8.10) había sido modificada en muchos aspectos con respecto a una instalación estándar, y mi objetivo era averiguar hasta qué punto la nueva versión era capaz de funcionar y de reconocer los componentes del equipo en cuestión.

El resultado no podría haber sido más satisfactorio: Los componentes hardware son reconocidos y funcionan correctamente sin necesidad de realizar ninguna modificación. La tarjeta inalámbrica (que había sido el componente más problemático) inmediatamente detectó y mostró las redes wifi disponibles en las proximidades. No tuve ninguna dificultad en conectar al punto de acceso de casa, que utiliza encriptación WEP: Simplemente fue introducir la clave, y comenzar a navegar.

La siguiente gran mejora a destacar con respecto a versiones anteriores es la relacionada con la velocidad. No se trata de una comparación subjetiva, sino de comparar las salidas del comando dmesg (/var/log/messages) de la anterior versión (8.10) y la actual (9.04). Los tiempos se han acortado de manera significativa. El disco SSD se reconoce y gestiona de forma más adecuada que antes, obteniendo de este modo un sistema que, a pesar de sus limitados recursos (un Celeron a 630MHz y 512MB de memoria) responde de forma sorprendentemente ágil.

Es importante recalcar que el sistema no ha sido optimizado para obtener un arranque rápido, sino que se trata únicamente de la instalación por defecto. La única modificación que se ha realizado es la elección del sistema de ficheros ext2 en lugar de ext3, y la ausencia de partición de intercambio (swap).



17:00 Pulsamos el botón de encendido
17:08 Pantalla inicial de Asus Eee PC
17:10 Pantalla del gestor de arranque GRUB
17:13 GRUB lanza la opción de arranque por defecto
17:42 Solicitud de usuario y password por parte de GDM
17:48 Tecleando: Usuario + password + Intro
18:07 Conexión WiFi establecida. El sistema está listo para utilizar!!!

Tal y como se puede ver, el sistema está listo en 67 segundos:

  • 10s : BIOS
  • 9s : Interacción del usuario: GRUB + GDM login / greeter
  • 48s : Arranque del sistema: Carga + inicio de sesión + conectar WiFi

Como comentario a título informativo: Para obtener el contador de tiempo en el video, se ha colocado el Eee PC delante de la pantalla de un equipo de sobremesa (un pentium 4 que ya tiene algunos añitos) y se ha ejecutado la siguiente instrucción:

$ xclock -digital -strftime "%M:%S" -face courier-140 -update 1

El equipo de sobremesa, naturalmente, también utiliza Ubuntu 9.04 ;-)

El objeto de este artículo no es analizar Ubuntu 9.04, sino únicamente evaluar su usabilidad en este equipo en particular. Como hemos indicado anteriormente, el equipo cuenta únicamente con 512MB de memoria, los cuales resultan más que suficientes para realizar tareas ordinarias con el sistema en cuestión. De hecho, inicialmente el sistema utiliza algo menos de 130MB de memoria, dejando algo más de 350MB disponibles para ser usados por las aplicaciones.



Vemos algunas mejoras y cambios con respecto a versiones anteriores, como el mecanismo de gestión de conexiones de red y el nuevo aspecto gráfico de las notificaciones.





Componentes como la controladora de audio y la cámara incorporada, funcionan correctamente sin necesidad de realizar ningún tipo de modificación.



Incluso con un equipo tan limitado, es posible ver videos de youtube en HD (video del ejemplo).



Las utilidades relacionadas con la gestón de energía (ACPI), tales como suspender, despertar y apagar el equipo, funcionan correctamente. La mayor parte de las teclas hotkeys también lo hacen, con la excepción de la tecla para activar y desactivar la tarjeta inalámbrica. Este es el único detalle que he encontrado hasta ahora que requiere ser configurado manualmente.



Así pues, el comentario final podría ser el siguiente: Para quienes busquen un ultraportátil (netbook) capaz de ejecutar una distribución estándar sin limitaciones (salvo las referentes a prestaciones debido al modesto hardware) tal y como si estuvieramos trabajando en un equipo de sobremesa, recomiendo sin ningún lugar a dudas el uso de Ubuntu 9.04 en este tipo de equipos. Leer más...

sábado, 28 de marzo de 2009

Novedades en Ubuntu 9.04

Desde hace algunos días, estoy probando Ubuntu 9.04 (en particular, desde la versión alfa-4) en dos de los equipos que tengo en casa.

Los escenarios son bien distintos: Uno de ellos es un equipo de sobremesa que ya tiene algún tiempo (unos 4 años), pero suficiente para el trabajo doméstico y la navegación cotidiana, se trata de un Pentium 4 HT 3GHz con 2GB de memoria RAM. En este equipo, hasta hace algunas semanas utilizaba exclusivamente Windows XP. Ya en anteriores ocasiones había intentado instalar Ubuntu en este equipo, pero tenía algunos componentes de hardware un poco particulares que me ocasionaban dificultades para el correcto funcionamiento de diferentes distribuciones de Linux que había probado en el equipo.

En este momento, puedo decir que el 95% del hardware de mi equipo funciona a la perfección, y que por fin he tomado la decisión de aparcar Windows XP y cambiar a Linux. En Linux, y en particular en Ubuntu, dispongo de todo el software que habitualmente necesito para las tareas que suelo hacer. Además de esto, me encuentro con algunas ventajas adicionales, como:

  • Facilidad de gestión de sitios remotos mediante fuse/sshfs. Existe software para conseguir algo similar en Windows, pero su instalación dista mucho de ser trivial.
  • Actualización automática completa: Sistema operativo + aplicaciones. Dada la enorme cantidad de software disponible (de manera libre : gratuita + legal) en los repositorios oficiales, apenas es necesario instalar software adicional. Todo el software que provenga de los repositorios se mantiene actualizado (corrección de errores y de fallos de seguridad) de manera automatizada y sumamente sencilla.

No pretendo hacer una comparativa ni enumerar las ventajas de un SO frente a otro. Las ventajas de los sistemas libres son muchas y aquí únicamente indico las que me interesa obtener para este equipo en particular.

Entre las novedades a destacar:

  • Actualizaciones: Kernel 2.6.28 y Gnome 2.26
  • Aparentemente el inicio del sistema es más rápido. Digo aparentemente porque el uso anterior con otras versiones de Linux en este equipo ha sido muy limitado, y en cualquier caso no tenía medidas previas. La situación actual, es que desde la pantalla inicial del GRUB hasta tener la sesión de usuario con una conexión inalámbrica establecida, transcurren unos 45 segundos, lo cual me parece un tiempo muy bueno. Indicar que el sistema funciona con ext3, pues aunque en algunos sitios se indica que ya se puede utilizar el nuevo sistema de ficheros ext4 en Ubuntu 9.04, y que con éste se consiguen mejoras de tiempos del orden del 20%, yo por ahora he preferido seguir trabajando de la manera tradicional.
  • Hay algunos cambios en el aspecto del interface gráfico: Aparte de los fondos de escritorio, principalmente el sistema de notificaciones. Como principal ventaja, el hecho de ser menos intrusivo.





El segundo equipo es ya un veterano en Linux: Se trata de un Asus Eee PC 701, por cuyo interior ya han pasado (además del Xandros inicial) versiones 7.10, 8.04 y 8.10 de Ubuntu.

En la actualidad, este equipo funciona con Ubuntu 8.10, al que ha habido que hacerle algunas modificaciones, principalmente para poder utilizar la tarjeta inalámbrica. La mejor noticia que podía oir, es que en la versión 9.04 dicha tarjeta viene soportada sin necesidad de modificaciones: Utilizando la versión 9.04 beta en modo live, el 100% del hardare del equipo funciona aparentemente sin problemas. En particular, la navegación funciona sin ninguna dificultad.

Leer más...

miércoles, 4 de marzo de 2009

Problemas con adaptador USB wireless en Linux

El objeto de esta entrada es indicar una solución muy sencilla que puede ser útil para resolver problemas con algunos adaptadores inalámbricos USB en Linux.

En mi caso particular, utilizo un adaptador Netgear MA111 (v1), basado en el chipset prism2. Este dispositivo, aunque tiene algo más de cinco años de antigüedad, de soportar únicamente velocidades de 11Mbps (802.11b) y de ser un dispositivo USB1.1, es perfectamente funcional y cumple perfectamente con su cometido.



Utilizo el adaptador en un equipo con una distribución Ubuntu 8.10 de 64 bits. Gracias al enorme esfuerzo de los desarrolladores y la gran cantidad de harware soportado, el adaptador funciona sin realizar ningún tipo de configuración, tanto arrancando con un live-usb como con la distribución recien instalada. El único requisito es introducir la clave de la red, y a funcionar.

El problema aparece al cabo de unos minutos navegando: Se interrumpe la conexión y no es posible volver a establecerla. Tras algunos intentos (deshabilitar y habilitar de nuevo la red, quitar y poner el adaptador, descargar y cargar - rmmod/insmod/modprobe - ) los módulos que controlan el dispositivo, no hay más remedio que reiniciar el equipo para volver a tener red.

El problema se repite en cada sesión. Un tráfico de unos pocos MB es suficiente para bloquear de nuevo el dispositivo de red. Al tratar de obtener más información, descubro que en el momento en que el tráfico de red se interrumpe, en el log del sistema (dmesg) aparecen decenas de mensajes como éste:


hfa384x_usbctlx_complete_sync: CTLX[3] error: state(Request failed)


Tras buscar un poco la cadena con el mensaje de error en cuestión, encuentro con que el error es más o menos habitual y se da con muchos modelos de adaptadores inalámbricos usb. En particular, me encuentro con alguna entrada en launchpad informando del error.

Continuando la búsqueda, aparece también una propuesta de solución.

Decido probarlo:
Marcamos como blacklist el módulo prism2_pci


$ sudo echo blacklist prism2_pci >> /etc/modprobe.d/blacklist


Tras reiniciar el equipo, comienzo a navegar, con múltiples pestañas, escuchando simultáneamente una radio online con Rhythmbox. Me dedico a ver también el capítulo 1 de Aguila Roja, y por el momento todo funciona perfectamente.


$ ifconfig wlan0 |grep RX
RX packets:350374 errors:0 dropped:0 overruns:0 frame:0
RX bytes:508203218 (508.2 MB) TX bytes:15082717 (15.0 MB)


Más de 500MB transferidos, y ni el más mínimo síntoma de error. Conclusión: Muy recomendable el intentarlo para todos aquéllos que tengan algún problema con tarjetas de red inalámbricas en Linux Leer más...

martes, 3 de marzo de 2009

Firefox + FlashPlayer 64 bits en Ubuntu 8.10

Recientemente he instalado Ubuntu 8.10 x86_64 en un equipo en el que hasta ahora solía trabajar con Windows XP. Me encuentro ahora instalando software y haciendo algunas pruebas respecto a la usabilidad del equipo, y sobre todo al tratarse de la versión de 64 bits.

Tras más de 4 años utilizando distribuciones Linux de 64 bits en servidores en producción, no tengo ninguna duda de que es una excelente opción para este tipo de máquinas. Sin embargo, para equipos domésticos cuyo principal uso es el de ser utilizado como ordenador de sobremesa, no termino de decidir si es mejor optar por la solidez de algo sobradamente probado, o si por el contrario merece la pena ganar algo de rendimiento aunque en ocasiones nos lleve a encontrarnos con dificultades propias de un bet-tester.

Para quienes quieren probar lo último, Adobe desde hace algún tiempo proporciona versiones de 64 bits de su popular reproductor de Flash. Quienes lo quieran instalar de los repositorios oficiales de Ubuntu (versión 8.10, 64 bits), se encontrarán con que instalan la versión de 32 bits, a través de ndiswrapper.

Podemos descargar e instalar de forma manual la versión de 64 bits (precisamente hace escasos días, el 24 de febrero de 2009, han publicado una nueva versión: 10.0.22.87).

El proceso es así de sencillo:


$ cd /tmp
$ wget http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz
$ tar -xzf libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz
$ sudo mv libflashplayer.so /usr/lib/firefox-addons/plugins


A continuación, reiniciamos Firefox, y ya disponemos tanto de un navegador como de un reproductor de flash en 64 bits.

En la web de Adobe, insisten en que se trata de una versión alfa, de modo que será más o menos frecuente que el navegador se bloquee al acceder a ciertas páginas en flash. Hay que tener claro que se trata de una herramienta para testeo o para desarrolladores, pero para usuarios finales que deseen un producto estable, por ahora la recomendación es utilizar la versión de 32 bits.

Actualización (7-marzo-2009): Parece ser que los usuarios de sistemas de 64 bits todavía tendremos que esperar un poco hasta disponer de un entorno de reproducción de flash estable.

Tras ver lo muy inestable que resulta la versión alfa proporcionada por Adobe, utilizo la versión de los repositorios de Ubuntu (32 bits + wrapper). Esta versión genera errores esporádicos como éste:


npviewer.bin[5916]: segfault at ff9bea2c ip 00000000ff9bea2c sp 00000000ff8cecec error 4


Y al tratar de obtener un poco más de información me encentro en Launchpad con el que probablemente sea el error más sufrido actualmente en Ubuntu (no hay más que ver el número de suscriptores y duplicados).

Tal vez sea el momento de probar en profundidad SWFdec y Gnash Leer más...

sábado, 21 de febrero de 2009

Spam telefónico

Inicialmente el objeto de este blog era comentar cosas de caracter técnico, relacionadas con la informática y en particular con el software open source.

Ya en una ocasión estuve considerando utilizarlo para protestar, no porque pretenda conseguir nada, sino más bien a modo de pataleta, de que te sientes indefenso y al menos quieres desahogarte contando por ahí lo que te ha sucedido.

En esa ocasión en que estuve a punto de escribir, me sucedió algo como lo que cuenta un tal Javier, en unos comentarios (ver comentario del 3-feb-2009) de otra víctima del spam telefónico. Fue un día en el que recibí 8 llamadas anónimas de teleoperadores ofreciendo los servicios de turno, y una de ellas fue más agresiva de lo habitual.

En aquella época la mayor parte de las llamadas eran de teleoperadoras con acento latinoamericano. Mi forma de defenderme consistía en preguntar desde qué país se realizaba la llamada. El motivo era sencillo: si la llamada se hacía desde España citaba la LOPD, les decía que deseaba ser dado de baja y pedía datos de contacto de la empresa con el pretexto de pedir formalmente mi baja. La verdad es que en algunas ocasiones funcionaba y conseguía que fuera la propia teleoperadora la que me colgara (supongo que el motivo principal era no perder tiempo con un potencial cliente que no iba a contratar ningún servicio).


Imagen: Telekomor

En una de las ocasiones la conversación (llamada proveniente de número oculto) fue algo así:

- Buenas tardes, mi nombre es NNNNN de la compañía CCCCC y le llamo para ofrecerle el servicio SSSSS.
- Buenas tardes, ¿Me puede decir desde qué país me llama?
... Unos segundos de silencio. Supongo que esa pregunta no está en su guión y la deja descolocada ...
- No le estoy llamando desde el País Vasco.
... A continuación el que se queda descolocado soy yo. No sé si mi interlocutora me toma el pelo o es que sus conocimientos de geografía no le llegan ni para saber desde qué país llama...
- Mire, si no me responde no la voy a atender. (cuelgo)

A los pocos segundos recibo una llamada (de nuevo desde número oculto)
- Oiga es usted un maleducado que si no le interesa me lo podía haber dicho y no tiene por qué colgarme...
- ¿Yo un maleducado? O sea, ¿me llamas sólo para insultarme? Tú eres una sinvergüenza...
(me cuelga sin dejarme terminar siquiera la frase)

Vuelvo a recibir otra llamada de número oculto a los pocos segundos. Harto, decido no descolgar.

El teléfono deja de sonar, pero pocos segundos después, suena de nuevo. Esta vez es un número que empieza por 91. Descuelgo y me encuentro de nuevo con la misma teleoperadora, hablandome a gritos en tono amenazador. Sencillamente la mando a la mierda y cuelgo.

En los siguientes 30 minutos vuelvo a recibir varias llamadas en el teléfono, algunas de ese mismo 91 y otras anónimas. Paso de perder más tiempo y descolgar para que un personaje anónimo me insulte.

Es en esa ocasión cuando estuve tentado de contarlo todo en el blog, pero como mis obligaciones superan con mucho a mi tiempo libre, y de hecho apenas escribo un puñado de artículos al año, decidí olvidar el tema y dedicarme a contar cosas más interesantes en el escaso tiempo que puedo dedicar a escribir.

En aquella época (mediados de 2008) era raro el día que no recibía 3 ó 4 llamadas de este tipo. En agosto de 2008 en los principales periódicos (el mundo, el país) y en muchos blogs pudimos ver que los gobernantes se han hecho eco de los abusos (seguro que a alguno de ellos también le ha tocado atender este tipo de llamadas) y anuncian que se modificará la ley para combatir el spam telefónico. Ya en algunos comentarios de blogs, alguien insinuaba que esa ley no iba a cambiar nada, como así ha sido.

El caso es que, al menos en mi domicilio, hubo algunos meses de respiro en que pasamos de recibir unas 30 llamadas semanales de este tipo a recibir apenas 2 ó 3.

Supongo que durante este tiempo, los departamentos legales de las empresas que viven de irrumpir por teléfono en la vida de los ciudadanos, se dedicaron a rebuscar hasta que encontraron algún hueco legal o vieron que la ley era absolutamente inútil. El caso, es que a fecha de febrero de 2009, la situación es la misma.

Hoy mismo, le he explicado a un teleoperador que si ayer no me interesaba lo que me ofrecía, que hoy me seguiría sin interesar. Le he recordado que ayer pedí que me dieran de baja de su lista, y hoy se lo he vuelto a pedir. Supongo que en breve me volverá a llamar (¡qué considerado!, como es una oferta tan buena, no quiere que me la pierda y él insite en llamar).

Al igual que ocurre con el spam de correo electrónico (unas pocas empresas generan prácticamente la totalidad del que circula), en mi casa hay 3 empresas que generan el 80% de este tipo de llamadas. Hay varios blogs de otras personas que han sufrido este tipo de llamadas. En uno de ellos dan algunas indicaciones y proponen actuar por la vía legal.

El problema de actuar por la vía legal es la inaccesibilidad en la práctica para quien no puede dedicar mucho tiempo y tiene conocimientos legales limitados. No todo el mundo puede permitirse estar 14 meses (y aún no se ha resuelto) enviando faxes, aportando pruebas y arriesgandote a ser atacado legalmente por el abogado de la parte contraria sólo para que dejen de llamarte por teléfono (y sin haberlo conseguido todavía).

La historia, así como los comentarios de otras víctimas, no tienen desperdicio: I, II, III.

Como la ley (de momento) no parece tener ningún efecto, ya han desarrollado un invento para cortar este tipo de llamadas: Truecall, el problema es que la broma nos sale por 100 euros. También podemos optar por tratar de desesperar a quien llama, actuando tal y como lo haría un servico de atención al usuario.

Una última referencia: Un excelente artículo de la revista Consumer, explicando el funcionamiento de los call center.

Actualización (22-mayo-2009): Vuelvo a leer que el Gobierno va a prohibir el spam telefónico (¿Pero no lo había hecho ya?)

La noticia incluye mucas cosas que suenan demasiado bien como para ser creíbles. El hecho de que dentro de dos semanas haya unas elecciones resta un poco más de credibilidad a la misma (qué curioso, que las noticias que se aprueban justo antes de las elecciones son las que parecen preocuparse por el ciudadano, y que suelen dejar para unos días después las que pisotean impunemente todos estos derechos).

En fin, trataremos de ser positivos, intentaremos creernoslo y a ver si dentro de cuatro días no viene el listo de turno a decir que si un número sale publicado en un listín telefónico, esto indica que, de forma implícita, el titular acepta estar dispuesto a recibir llamadas comerciales sin restricciones en número ni horarios.

Actualización (27-julio-2009): En efecto, tal y como indiqué hace algo más de dos meses, las nuevas medidas no han servido para nada. Los abusos se siguen produciendo en el horario y con la frecuencia que les da la gana a quienes llaman indiscriminadamente.

En esta última semana he recibido un número inusualmente elevado de llamadas provenientes del 1485 (uno de los días que me llamaron, lo hicieron hacia las 11:30, les indiqué que no quería saber nada de su empresa y ese mismo día a las 13:30 me estaban llamando de nuevo). Harto, he registrado el número de mi móvil en www.listarobinson.es

Dentro de unos días sabré si el servicio en cuestión es útil o se trata simplemente de otra pantomima más en este circo de abusos y tomaduras de pelo en el que los ciudadanos somos el elemento cómico del espectáculo. Leer más...

martes, 20 de enero de 2009

GPS para Linux (II)

Tras haber mostrado en el anterior artículo el proceso de instalación de Navit, ahora nos ocuparemos de instalar en el equipo lo necesario para recibir señal de los satélites y así poder utilizarlo como navegador GPS.

La primera cuestión es elegir el hardware adecuado. Afortunadamente en la actualidad hay una fuerte competencia entre los fabricantes de chips receptores GPS, lo cual lleva a una constante mejora en las características de los mismos así como un abaratamiento de los receptores. Hoy en día es posible conseguir receptores de última generación, de gran sensibilidad y consumo muy reducido por precios sorprendentemente bajos.

En este caso en particular, el receptor utilizado en un Globalsat ND-100. Se trata de un receptor muy interesante, pues aúna características tales como reducido tamaño, muy bajo consumo, rapidez de adquisición, alta sensibilidad y sobre todo un coste sumamente reducido (Se pueden conseguir en eBay por menos de 30 euros, gastos de envío incluidos).



Una de las cosas que me llamó la atención fue el hecho de que se anunciaba con drivers para Linux, pero lo que me desconcertó, es que estos drivers se anuncian para sistemas "RedHat 7.3 / 8.0 / 9.0". Algunos de estos sistemas tienen 7 años de antigüedad, y curiosamente no se menciona ningún Linux reciente. A pesar de lo desconcertante de los drivers anunciados para Linux, seguí adelante y decidí comprar uno de estos dispositivos.



La decisión no pudo haber sido mejor. Al conectar el dispositivo GPS-USB en un Ubuntu 8.10 instalado en un equipo Asus EeePC 701, éste reconoció automaticamente lo necesario para tratarlo como un dispositivo que transmite datos por un puerto serie (Prolific PL2303 USB to serial adaptor).


~$ dmesg | tail -10

[ 104.472054] usb 3-2: new full speed USB device using uhci_hcd and address 2
[ 104.639516] usb 3-2: configuration #1 chosen from 1 choice
[ 104.986259] usbcore: registered new interface driver usbserial
[ 104.989944] usbserial: USB Serial support registered for generic
[ 104.992020] usbcore: registered new interface driver usbserial_generic
[ 104.992020] usbserial: USB Serial Driver core
[ 105.011304] usbserial: USB Serial support registered for pl2303
[ 105.013390] pl2303 3-2:1.0: pl2303 converter detected
[ 105.025605] usb 3-2: pl2303 converter now attached to ttyUSB0
[ 105.028018] usbcore: registered new interface driver pl2303
[ 105.028018] pl2303: Prolific PL2303 USB to serial adaptor driver


En estas líneas de dmesg se nos indica la referencia (ttyUSB0) del puerto serie que recibirá los datos del receptor GPS.



El siguiente paso es instalar gpsd. Esta paquete contiene la utilidad gpsd (que actúa como demonio sirviendo datos del GPS a cuantas aplicaciones lo requieran) y permite ocultar los detalles de la configuración del GPS a las aplicaciones que hacen uso de éste. Dado que este paquete se encuentra en los repositorios de Ubuntu, su instalación es sumamente sencilla:


~$ sudo apt-get install gpsd


Una vez instalado el servicio gpsd y con el receptor GPS conectado en el ordenador, colocamos éste en un lugar despejado en el que pueda recibir la señal necesaria para estimar su posición. A los pocos segundos el dispositivo obtiene su localización y comienza a enviar información a gpsd.


~$ gpsd /dev/ttyUSB0


Podemos comprobar los datos recibidos con xgps (utilidad incluida en el paquete gpsd-clients, el cuál se habrá instalado automáticamente al instalar gpsd). Obtenemos algo como esto:



El software de navegación que habíamos elegido (Navit) viene preparado para obtener datos de posicionamiento a través de gpsd, y de hecho la configuración por defecto trata de obtener los datos del GPS a través de dicho servicio. No tenemos más que ejecutar la aplicación y a los pocos segundos mostrará nuestra ubicación (la representación en pantalla dependerá de los mapas que hayamos decidido instalar en Navit).



Así de sencillo. No hemos tenido ni que abrir el miniCD con los drivers proporcionados por el fabricante del GPS y en pocos minutos hemos conseguido tener perfectamente en funcionamiento un dispositivo GPS conectado a nuestro sistema Linux.

Actualización (5/08/2009):

Dado que en los comentarios no se permiten determinadas etiquetas, respondo aquí cómo incluir en Navit los mapas de Openstreetmaps: Para incluir los mapas de openstreetmaps en Navit, se pueden cambiar los permisos al fichero o bien editarlo como sudo:

$ sudo gedit /etc/navit/navit.xml

En el fichero, hay que buscar la seccion correspondiente a openstreetmaps. En mi caso, lo tengo así (he tenido que poner espacios adicionales dado que blogger no permite introducir determinadas etiquetas en el contenido):


< !-- Mapset template for openstreetmaps -->
< mapset enabled="yes">
< map type="binfile" enabled="yes" data="/usr/share/navit/maps/peninsula.bin" />
< /mapset>


Se trata de un mapa de la Península Ibérica. Leer más...

lunes, 12 de enero de 2009

Navit: Navegación GPS para Linux

Ultimamente estoy interesado en el tema de desarrollo de software relacionado con posicionamiento mediante GPS, y en particular he estado recopilando información acerca de lo que hay disponible para Linux.

Mi interés particular se centra en lo que se conoce como GPS tracker (un sistema que genera un registro de los lugares en los que ha estado) para un proyecto en el que estoy comenzando a trabajar. Además, en paralelo, he estado examinando algunas de las aplicaciones libres disponibles para Linux de sistemas de navegación basados en GPS.

Podemos citar aplicaciones como Roadnav, RoadMap, GPSDrive, tangoGPS, Viking y Navit.

Quizás me deje alguna y seguramente más de una de las citadas no sean muy adecuadas como sistema de navegación, pero probablemente sean lo más parecido a los sistemas de navegación comerciales con los que quizás estemos más familiarizados.

Tras examinar la documentación acerca de las características de los sistemas, he decidido probar más en profundidad Navit pensando en que puede ser el que más se aproxime a lo que estoy buscando. Este software tiene algunas características que en mi caso particular me parecen interesantes.

Quiero insistir en que este artículo no es una comparativa y en ningún momento indico que ninguno sea mejor o peor que los otros. Para hacer una comparativa tendría que probarlos todos ellos en profundidad, y esto es algo que en este momento no he hecho.



Lo que he hecho ha sido instalar Navit en un Ubuntu 8.10 con una particularidad: El equipo. Se trata de un Asus EeePC 701 (512MB RAM y una pantalla de 7" de 800x480), es decir, un hardware muy limitado.

Una de las ventajas de utilizar Ubuntu es que al ser un sistema Linux muy extendido, son muchos los desarrolladores de software que proporcionan paquetes .deb ya preparados (sin necesidad de que el usuario compile el software), o mejor aún: Repositorios para poder instalar el software y gestionar sus actualizaciones del mismo modo que cualquiera de las aplicaciones incluidas con la distribución. Este es el caso de Navit.

En el caso de Ubuntu 8.10, añadimos la siguiente línea al fichero /etc/apt/sources.list


deb http://navit.latouche.info/ubuntu intrepid main

También podemos hacerlo desde la herramienta Synaptic, añadiendo esta línea desde la opción de menú "Opciones > Repositorios > Software de terceros".

Una de las dificulades con las que me encontré al tratar de instalarlo fue un tema de las firmas digitales. Aunque en la web se indican las claves a importar, no indican (o yo no lo supe encontrar) qué utilizar como servidor de claves. Tras realizar algunas búsquedas, encontré una página en el que se indican estos detalles.

En definitiva, que debemos de hacer lo siguiente:


~$ gpg --keyserver x-hkp://gpg-keyserver.de --recv-keys CB229096
~$ gpg --export -a CB229096 | sudo apt-key add -


Tras esto, ya podemos instalar la última versión del software disponible para nuestra distribución.


~$ sudo apt-get install navit


El siguiente paso es prepararar Navit: Principalmente obtener datos de un GPS e introducir mapas. Pero por ahora ya hemos dado el primer paso: Aunque en el estado actual (sin mapas ni GPS) sea de escasa utilidad, ya podemos ejecutar la aplicación.

Actualización (15-enero 2009):

Otro software que tiene un excelente aspecto y que habrá que probar en cuanto haya ocasión es QLandkarte

Leer más...