viernes, enero 15, 2010

Código promocional de descuento de Dell válido hasta el 20/01/2010


  Es algo que no tiene que ver con la temática del blog, pero hace mucho que no tengo tiempo para escribir nada interesante ni medianamente elaborado. Recientemente me he visto en la necesidad de comprar un equipo Dell y he descubierto el maravilloso mundo de la negociación con comerciales y de los cupones de descuento, que en general te suponen el mismo ahorro que puedes conseguir negociando con un comercial, pero ahorrándote mucho tiempo y dinero en teléfono.
Los cupones tienen una validez muy limitada de tiempo y sólo valen para compras a través de la web de Dell. En este caso es un 5% de descuento válido hasta el 20 de enero de 2010 y el código es Q9XHFRZ?8?WRFN.

martes, febrero 05, 2008

Dispositivos MTP en GNU/Linux. Philips Gogear.


Hace un par de años me regalaron un reproductor mp3 Philips GoGear 1420. Tiene 4 Gb de capacidad, es sencillo de utilizar, relativamente pequeño (teniendo en cuenta lo que ha evolucionado el mercado en dos años y que lleva disco duro y no memoria flash) y la calidad de sonido no tiene nada que envidiar a un iPod. Los fanáticos de Apple me pondrán a parir por esto, pero aun admitiendo que mi oído no es demasiado selecto, he escuchado el mismo álbum en un iPod y en el mío y no veo la diferencia.

Hasta aquí lo bueno. Muchos reproductores se comportan como un pendrive usb, y por tanto se les puede cargar archivos desde cualquier sistema operativo que lo soporte, pero la familia GoGear de Philips utiliza un protocolo llamado MTP.  MTP (Media Transfer Protocol) es un protocolo creado por Microsoft, para permitir la transferencia de información con cámaras digitales, reproductores de audio y otros dispositivos digitales portátiles.

Además para la gestión de álbumes, artistas, etc. utiliza una base de datos SQLite que habría que actualizar para que se pudiera acceder a los archivos. Lo que ofrece Philips es un driver para Windows XP, que genera un icono en Mi PC similar a una unidad de disco, a través del cual se pueden añadir o eliminar archivos y de forma transparente actualiza esta base de datos. Además se puede sincronizar con una aplicación del tipo Windows Media Player. Pero no incluye ningún driver para GNU/Linux.

En GNU/Linux existe el proyecto libmtp que pretende implementar este protocolo para nuestro sistema operativo. La mayoría de las distribuciones incluyen esta librería en sus repositorios, por lo que a mucha gente le bastará con instalarla, junto con libusb, que libmtp necesita, y tu sistema GNU/Linux tendrá soporte para este tipo de dispositivos. En distribuciones tipo Debian, como Ubuntu, bastaría con:

sudo apt-get install libusb-0.1-4 libmtp6 mtp-tools


A partir de aquí con aplicaciones como Amarok o Rhythmbox podríamos transferir y eliminar ficheros de nuestro reproductor. Por ejemplo en Amarok hay que agregar un dispositivo MTP. Para ello haremos lo siguiente:

  1. Menú "Settings" -> "Configure Amarok".

  2. En la pantalla de configuración seleccionar "Media Devices".

  3. Hacer clic en el botón "Add Device...",  seleccionar en el apartado "Select the plugin to use with this device" la opción "MTP Media Device" y asignarle un nombre al dispositivo.

  4. Aceptar los cambios haciendo clic en los botones OK.


Con esto tenemos agregado nuestro dispositivo en Amarok. A continuación conectamos el dispositivo al ordenador, nos vamos a la pestaña "Devices" de Amarok y hacemos clic en el botón "Connect". Hecho esto nos aparecerá el contenido de nuestro dispositivo. Navegando por las colecciones y agregando álbumes o canciones con la opción "Transfer to media device", se van acumulando ficheros en la cola de transferencia (Transfer Queue en Amarok). Bastará con hacer clic en el botón "Transfer" para enviar al dispositivo los archivos y escucharlos. Para eliminar ficheros basta con seleccionarlos en el árbol de contenido y utilizar la tecla Supr o la opción "Delete from device" del menú contextual.


Todo esto habría sido lo bonito, pero en mi caso el sistema continuaba sin reconocer el dispositivo. El paquete mtp-tools instala una serie de comandos que comienzan por mtp-. Generalmente se instalan en /usr/bin o /usr/local/bin. El comando mtp-detect detecta los dispositivos de este tipo conectados al sistema. En mi caso devolvió el siguiente mensaje:

libmtp version: 0.2.1

Attempting to conect device(s)
Potential MTP Device with VendorID:0471 and ProductID:014c responded to
control message 2 with a response that was too short. Problems may arrise
but continuing
PTP: Opening session
Fallo de segmentación (core dumped)



El motivo es que las versiones de libmtp y libusb que hay en los repositorios, en mi caso de Ubuntu, no están totalmente actualizadas (libmtp 0.2.1 en el repositorio, mientras que actualmente el proyecto va por la 0.2.5) y no reconocen mi modelo en concreto, así que no quedó mas remedio que instalarse las últimas versiones, tanto de libmtp como de libusb, descargadas de las páginas de sus respectivos proyectos y compilarlas. El proceso es básicamente el mismo en todos los casos, descargarse el archivo, descomprimirlo y seguir las instrucciones que aparecen en el fichero INSTALL o README, que suelen ser ./configure, make y make install, esta última como root.

Comenzamos con libusb. En mi caso la última versión estable disponible era la 0.1.12:

wget http://puzzle.dl.sourceforge.net/sourceforge/libusb/libusb-0.1.12.tar.gz
tar xvzf libusb-0.1.12.tar.gz
cd libusb-0.1.12
./configure
make
sudo make install
cd ..
rm -R libusb-0.1.12
rm libusb-0.1.12.tar.gz



A continuación instalamos libmtp de forma muy similar, en este caso la versión 0.2.5:

wget http://ovh.dl.sourceforge.net/sourceforge/libmtp/libmtp-0.2.5.tar.gz
tar xvzf libmtp-0.2.5.tar.gz
cd libmtp-0.2.5
./configure --prefix /usr
make
sudo make install
cd ..
rm -Ry libmtp-0.2.5
rm libmtp-0.2.5.tar.gz



Hecho esto, la cosa seguía sin funcionar. Pero me di cuenta de que la primera línea continuaba diciendo libmtp version: 0.2.1, por lo que no estaba pillando la versión nueva de las librerías, así que reinicié el equipo por si acaso. Una vez reiniciada la máquina, mtp-detect me devolvió la lista de propiedades de mi reproductor y Amarok también lo detectó sin problemas.

Si alguien lee esto y tiene problemas que no dude en poner un comentario, a ver si entre todos conseguimos hacer funcionar estos dispositivos.


Un error muy típico es el siguiente:

mtp-detect: error while loading shared libraries: libmtp.so.7: cannot open shared object file: No such file or directory

Ocurre cuando al compilar libmtp no se especifica el lugar correcto de libusb. esto se consigue ejecutando ./configure --prefix "ruta_libusb", en mi caso /usr.

viernes, diciembre 28, 2007

DNS dinámico en linux


Mucha gente se anima a publicar contenidos en la web. La mayoría recurren a los blogs, pero otros se deciden a hacer su propia página personal, bien estática o utilizando php. La mejor opción es publicarla en algún servidor, ya sea gratuito o de pago, pero si a alguien le pica el gusanillo de hacerlo en su propio ordenador se encuentra con que al acceder a ella desde cualquier otro lugar no sabe a qué dirección debe hacerlo, ya que la mayoría de los que tienen ADSL tienen la ip dinámica y cambia cada vez que nos conectamos.

Una solución a esto, y en general a cualquier posibilidad de conectarnos a nuestro equipo a través de internet, es utilizar los servicios de un servidor de DNS dinámico y configurar nuestro equipo adecuadamente. Esto permite conectarnos a nuestro equipo utilizando un nombre de dominio. Uno de estos servicios es DynDNS, que ofrece tanto servicios gratuitos como de pago.
Primero nos creamos una cuenta mediante el enlace "Create account". Sólo se nos solicita un nombre de usuario, dirección de correo electrónico, contraseña, aceptar las condiciones del servicio y algunos datos de encuesta. A nuestra dirección de correo llegará un mensaje con un enlace para activar nuestra cuenta.

Hecho esto nos autenticamos y accedemos al grupo "My Services". En el apartado "Hostnames", hacemos clic en "Add new hostname". Aquí especificaremos un nombre de equipo en la casilla "Hostname" y uno de los dominios disponibles que nos ofrece DynDNS. Seleccionaremos la opción "Host with IP address" y si el equipo que queremos hacer visible desde el exterior es el mismo desde el que estamos haciendo esto, podemos hacer clic en el enlace "Use autodetected IP address x.x.x.x". Esto hará que la dirección IP que actualmente tenemos asignada se relacione con el nombre de host y el dominio que hemos elegido, con lo que ya podríamos acceder a nuestro equipo desde otro lugar.

Si utilizáis router, habría que modificar las tablas NAT para redirigir el tráfico que llegue al puerto 80 a la dirección IP de la máquina que tiene arrancado el servidor web y por tanto las páginas web.
Hasta ahora todo es muy sencillo, ¿pero qué ocurre si apagamos el router o módem y nos volvemos a conectar mañana. Que la dirección IP ha cambiado y habría que volver a entrar en la web de DynDNS y actualizar la IP. Esto no es práctico por supuesto y para evitarlo existen programas que se encargan de hacer esto de manera automática. Uno de ellos es ddclient, un script hecho en perl que realiza esta función. Está disponible en los repositorios de Ubuntu, por lo que la forma más sencilla de instalarlo es:
sudo apt-get install ddclient

Después de instalarse el paquete se ejecutará un asistente que nos preguntará los parámetros necesarios para configurarlo.

Aquí vamos a ver como instalarlo bajando la versión de sourceforge y configurándolo a mano, lo que será válido para cualquier GNU/Linux.

Comenzamos instalando subversion, una herramienta de control de versiones que nos permitirá acceder a la última versión de ddclient:

sudo apt-get install subversion

A continuación nos descargamos la última versión de ddclient:
svn co https://ddclient.svn.sourceforge.net/svnroot/ddclient/trunk/svn ddclient

Esto nos creará una carpeta ddclient, en la que estará el ejecutable "ddclient", ejemplos de ficheros de configuración y de configuración del arranque automático y el fichero README, que es recomendable leer aunque resumo lo que hay que hacer.

Copiar el ejecutable:
cd ddclient
sudo cp ddclient /usr/sbin/

Crear la carpeta de configuración y copiar un fichero de configuración de ejemplo:
sudo mkdir /etc/ddclient
sudo cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf

Editar el fichero ddclient.conf con vuestro editor favorito:
gedit /etc/ddclient/ddclient.conf

Lo siguiente es un ejemplo de lo que podría ser este fichero, los comentarios van precedidos de almoadilla:
daemon=300 #Se comprobará si ha cambiado la ip
#cada 300 segundos
syslog=yes #Se grabarán los cambios de ip en el log del sistema
mail=root #Enviar todos los mensajes al usuario root
mail-failure=root #Enviar todos los mensajes de error al usuario root
pid=/var/run/ddclient.pid #Guardar el identificador de proceso en
#el fichero /var/run/ddclient.pid
ssl=yes #Utilizar ssl para transferir la información.
#Es necesario instalar ssl-library
use=web, web=checkip.dyndns.org #Para utilizar el servicio de detección
#de ip de dyndns
server=members.dyndns.org,
protocol=dyndns2 #Servidor y protocolo a utilizar.
#ddclient soporta otros proveedores. Estos son los datos de
#dyndns
login=xxxxxx #Nombre de usuario de nuestra cuenta dyndns
pasword=ppppppp #Contraseña de nuestra cuenta dyndns
nombre_host.dominio #Nombre de host y dominio seleccionado,
#por ejemplo myservidor.dyndns.net
Para arrancar el servicio podemos ejecutar:
ddclient start

Podemos ver si todo ha ido bien consultando el log del sistema:
tail /var/log/syslog

Así podremos detectar posibles errores que se hayan producido. En algunos sistemas es frecuente el error:
ddclient[4677]: FATAL: Error loading de Perl module IO::Socket::SSL needed for SSL connect.

Esto se soluciona instalando esta librería:
sudo apt-get install libio-socket-ssl-perl

Ddclient graba los cambios de ip en /var/cache/ddclient/ddclient.cache, por lo que podréis ver la ip actual consultando ese fichero.

Si hacéis cualquier cambio en el fichero ddclient.conf podréis hacerlos efectivos con:
ddclient restart

domingo, agosto 12, 2007

Frets On Fire, para amantes de Guitar Hero


Ubuntu games es un proyecto brasileño que ofrece un directorio de juegos para GNU/Linux y especialmente para Ubuntu. Echando un vistazo en el apartado de Simuladores me encontré con una curiosidad, un simulador de guitarra, similar al del juego Guitar Hero, famoso en Playstation y XBox.

En la página principal del proyecto Frets On Fire, podemos descargarnos la instalación para Windows, Linux y MacOS X, pero la gente de Ubuntu Games nos indica la ubicación de repositorios para Ubuntu Feisty.

Para instalarlo en Ubuntu haremos lo siguiente:

  1. Agregar el repositorio, bien a través Sistema->Administración->Origenes de Software, o editando directamente el fichero sources.list con el comando:

    sudo gedit /etc/apt/sources.list

    El repositorio en cuestión es:

    deb http://repositorios.nighto.net/ feisty/

  2. Actualizar los repositorios: sudo apt-get update

  3. Instalar el juego: sudo apt-get install fretsonfire


El juego inicialmente solo incluye 4 canciones, pero podemos agregar las de Guitar Hero 1 y 2, mediante lo siguiente:

sudo apt-get install fretsonfire-songs-gh1 fretsonfire-songs-gh2

Para jugar podemos utilizar el teclado, siendo las teclas F1 a F5 los trastes y las teclas Enter y Mayúsculas las cuerdas. También podemos utilizar la guitarra de la Play con un adaptador PSX-USB.
Además está en multitud de idiomas, incluido el español.

Yo personalmente me encontré con un problema con las canciones de Guitar Hero 2. Al seleccionar la colección de Guitar Hero 2 me apareció el siguiente mensaje de error:


[Errno 13] Permision denied:

'data/songs/Guitar Hero 2/woman'

OK

Es un problema de permisos, ya que ya mayor parte de los directorios de las canciones de esta colección tienen como propietario root y no tiene permisos para otros usuarios, como el que utilizamos para ejecutar el juego.
Para solucionarlo hay que situarse en el directorio donde está instalado, y acceder a las carpeta donde están las canciones, en mi caso:

cd /opt/FretsOnFire/data/songs

A continuacióncambiar los permisos para el directorio Guitar Hero 2 que contiene esta colección:

sudo chmod -R 755 "Guitar Hero 2"

Y ya sólo queda disfrutar pegándole a las teclas tocando temazos como Killing in the name of de los Rage, aunque los que nos estén viendo nos miren con caras raras.

domingo, mayo 13, 2007

Configurar en linux tarjeta de red Marvell 88E8056 integrada en placa Gigabyte GA-965P-S3


Después de llevar bastante tiempo sin publicar ninguna entrada, motivado entre otras cosas por un cambio de equipo que me ha dado bastantes quebraderos de cabeza, recurro a publicar la solución a uno de los problemas que me he encontrado.

Inicialmente pedí el equipo con una placa base asus P5B, pero se sobrecalentaba y el equipo se quedaba colgado, daba igual cuál fuera el sistema operativo que le instalara. Tras dos cambios decidí que me cambiaran la placa por una Gigabyte 965P-S3, de características similares salvo por el puerto e-Sata que no incluye y por la tarjeta de red integrada, que en vez de una típica con chip Realtek incorpora el chip Marvell 88E8056.

Ubuntu Edgy no me la detectaba y en el CD-ROM venían drivers para linux con el inconveniente de que no eran binarios, sino que había que compilarlos. Primer problema, no tenía instalado el paquete linux-headers para poder compilar y no tenía red. La solución a esto fue poner al ordenador una antigua tarjeta de red PCI con chip Realtek 8139 que lógicamente se detectó a la primera.
Así me pude instalar el paquete linux-headers necesario para compilar:

sudo aptitude install linux-headers

En la carpeta Network/Marvell/Other Driver/Linux del cdrom de drivers de la placa base se encontraba el driver para linux, en el archivo install-7_06.tar.bz2, que descomprimí en mi carpeta de usuario utilizando la opción "Extraer en..." del menú contextual. Para ahorrar tiempo os diré que realicé todos los pasos que vienen en el fichero README y no compilaba correctamente, con lo cual decidí bajarme los drivers de la web del fabricante, que tampoco funcionaron.
Recurrí a buscar en internet y me bajé nuevamente los drivers de un enlace de la página www.opendrivers.com, concretamente
en está página. De aquí me bajé una versión superior, concretamente la 10.0.4.3, incluida en el archivo install_v10.0.4.3.tar.gz2. Nuevamente descomprimí este fichero, lo que generó la carpeta DriverInstall en mi directorio de usuario.

Hecho esto, entramos en el directorio DriverInstall y basta con ejecutar el script install.sh con sudo ./install.sh, pero al menos en mi caso, como el script indica que debe ser ejecutado por el shell /bin/sh, y en mi caso el enlace simbólico /bin/sh apuntaba al shell dash, se producía un error al ejecutar. Hay dos soluciones igual de rápidas: cambiar el script o cambiar el enlace simbólico a otro shell como por ejemplo bash. Yo abrí el archivo install.sh con gedit y cambié la primera línea #!/bin/sh por #!/bin/bash. Tras ejecutar el archivo, se compilaron e instalaron los módulos necesarios, apagué el equipo, quité la vieja tarjeta de red, arranqué de nuevo y con la herramienta de configuración de la red Sistema/Administracion/Red asigné la dirección IP, máscara de subred, dirección de puerta de enlace y servidores DNS y funcionó correctamente.

jueves, diciembre 28, 2006

Instalar compilador de C.


Está claro que la mayoría de nosotros no nos vamos a dedicar a la programación, aunque nunca se sabe.

Al margen de esto me he encontrado en alguna ocasión con que era difícil encontrar el binario (ejecutable) de un programa adecuado para mi máquina, pero si algo caracteriza a un programa licenciado bajo GPL (General Public License), gran parte de los que funcionan en GNU\Linux, es que su código fuente debe estar disponible. Esto es una gran ventaja porque podríamos adaptar un programa a nuestras necesidades (con los conocimientos necesarios, por supuesto), pero aunque nos sirva tal cual, otra de las ventajas es que podríamos compilarlo para nuestro procesador. El autor o autores puede que lo hayan hecho en una máquina PC con procesador intel y que el binario que se distribuya esté compilado para esa plataforma, pero si no nos funciona porque utilizamos un Mac con PowerPC o incluso un PC con procesador AMD, bastaría con recompilar ese código fuente y generar nosotros mismos el binario.
En general no hay que saber gran cosa para compilar el código fuente de un programa de estas características, porque el autor del programa ya se encarga de proporcionar unos ficheros de configuración para facilitar el proceso. Lo que sí necesitamos es una serie de paquetes:

  • gcc Compilador C GNU

  • g++ Compilador C++ GNU

  • make Utilidad "make" GNU

  • libc-dev Librerías de desarrollo GNU C y archivos de cabecera


Para instalarlas hacen falta las siguientes instrucciones:

sudo apt-get install gcc g++ libc-dev


sudo apt-get install make


Si estáis ya deseando empezar con el mundo de la programación, nada mejor que hacer un programa y compilarlo a ver que tal. Siempre se empieza por un "Hola mundo", es decir, un programita que se limita a lanzar ese mensaje u otro parecido por la pantalla. Como está muy visto, en vez de Hola Mundo, vamos a hacer HolaX, que también está visto pero menos. Para probarlo abris el Editor de Textos desde el menú (gedit desde la consola) y escribimos el siguiente código (también vale copiarlo, y de hecho es lo que yo haría):


#include

int main(int argc, char **argv)
{
char nombre[50];
printf("¿Cómo te llamas?");
scanf("%s",nombre);
printf("Hola %s\n",nombre);
return 0;
}

A continuación lo guardáis como holax.c en vuestro directorio y desde la consola tecleais:

gcc holax.c -o holax


Si todo ha ido bien, ahora aparecerá un archivo llamado holax, que es el binario ejecutable, si ha ido mal puede ser que el compilador no se haya instalado correctamente, pero es más probable que algo en el programa no se haya escrito correctamente.

Para ejecutarlo tecleamos ./holax y este maravilloso programa funcionará, preguntándonos nuestro nombre y saludándonos después cuando pulsemos ENTER.
El compilador será de utilidad para generar el binario de algún programa del que sólo dispongamos el fuente. Más adelante veremos un ejemplo de ello.

Soporte para formatos de audio y video.


Después de escribir la anterior entrada, comentando como escuchar archivos mp3, me encontré con un artículo del blog de Maverick, cuya dirección he puesto en el apartado de enlaces, en el que se describía como optimizar la versión Edgy Eft de Ubuntu Linux. En el que incluye no solo cómo añadir el soporte para mp3 sino para muchos otros formatos de audio y video como DivX, Xvid, etc. Podéis localizar este artículo fácilmente en su blog, porque a pesar de que es del 29 de octubre de 2006 todavía continúa siendo el más visitado de su blog y aparece el primero en la sección "Posts más vistos".

El enlace directo es http://cmaverick.wordpress.com/2006/10/29/edgy-optimizado/

martes, diciembre 12, 2006

Escuchar archivos mp3 en Ubuntu.


Por defecto no podemos escuchar archivos mp3 en Ubuntu. Al parecer esto es así por problemas legales en algunos países, por lo que no se incluyen en la instalación los codecs. Para que un reproductor de archivos de audio como Rhythmbox pueda decodificar los archivos mp3 es necesario instalar un codec como gstreamer-fluendo-mp3. Podemos instalarlo buscando en Synaptic el paquete gstreamer0.10-fluendo-mp3 o en un terminal con la instrucción:

sudo apt-get install gstreamer0.10-fluendo-mp3


Si tenéis una versión más antigua y los repositorios no están actualizados, cambiad el 10, que es la versión por una versión más antigua.

Si todo ha ido bien podréis ahora escucharlos sin ningún problema.