January 12th, 2010 | Tags: ,

Adobe has still not released a 64 version of Adobe AIR for Linux, so the installation may be a little bit tricky, as it involves installing some 32bits libs.

Googling a bit I found a great tutorial on how to successfully install all needed libs and procedures. The post  is related to Tweetdeck installation also, but that’s only the last step. In case you’re in trouble, follow these steps: http://www.ossramblings.com/tweetdeck_in_64_bit_ubuntu

Continuous updates and improvements are being introduced to xorg input package, and from time to time something breaks (specially if you use last trunk versions or have unstable versions). As seen in my previous posts I’m testing last burning ubuntu release (currently karmic-alpha3).

Recent changes have been introduced (and dropped) to xserver-xorg-input-synaptics regarding multifinger click testing (Alberto, thanks):

xserver-xorg-input-synaptics (1.1.2-1ubuntu2) karmic; urgency=low

* debian/patches:

- 105_correct_multifinger_click.patch: Drop patch as it breaks the expected behavior for multitouch clicking (LP: #320585).

- 111_add_active_area.patch: Backport "Synaptics Area" property from upstream (LP: #402863).

- 112_jumpy_cursor_quirks.patch: Add Quirk for Dell Mini 10v touchpad (LP: #402863).

- 113_add_capabilities.patch: Backport read-only "Synaptics Capabilities" property from upstream.

-- Alberto Milone <email address hidden> Wed, 22 Jul 2009 10:42:11 +0200

After applying this update tap-to-click did not work on my HP2133 mininote on gnome (but yes during gdm login session, so it has to be something related to gnome or x). After checking mouse preferences and checking that ‘Enable mouse clicks with touchpad’ was enabled I checked the input properties to see the internal props for my synaptics touchpad, the ‘Synaptics Tap Action’ property. I did see that tap-to-click was not enabled, so after changing the setting it worked again.

Steps to check:

1) Find your touchpad input device ID with  xinput list and locate the “SynPS/2 Syanptics TouchPad”. id=9 for me.

2) Get the device properties with xinput list-props <devId> and check the ‘Synaptics Tap Action’ property id and values. In my case:

Synaptics Tap Action (263): 2,3,0,0,0,0,0

3) Change the internal property value with xinput set-int-prop <devId> <propId> 8 <space_separated_values>. I changed the 4th flag to 1:

xinput set-int-prop 9 263 8 2 3 0 1 0 0 0

And tab-to-click worked again. Easy, isn’t it?

Some links:

Ways to configure input devices in ubuntu

Synaptics TouchPad help page (ubuntu documentation)

For more technical description about properties and values can be found on source code for version 1.1.2.

July 15th, 2009 | Tags: ,

From ubuntu-devel-announce mailing list:

Pedro Villavicencio Garrido to ubuntu-bugsquad, ubuntu-devel-a.
show details 4:24 PM (5 hours ago)
Fellow Ubuntu Triagers!

This week’s HugDay target is *drum roll please* synaptic!
* 200 New bugs need a hug
* 44 Incomplete bugs need a status check
* 100 Confirmed bugs need a review
* 6 Bugs with patches that need a review

Bookmark it, add it to your calendars, turn over those egg-timers!
* Thursday 16 of July
* https://wiki.ubuntu.com/UbuntuBugDay/20090716

Can’t stress it enough: everyone can help!

Have some time? Triage boogz! I won’t be upset if you get a headstart~ 😉
Have a blog? Blog about Hugday!
Have some screen space? Open #ubuntu-bugs and keep an eye out for
newcomers in need.
Have minions? Teach THEM to triage for you! :)

Wanna be famous? Is easy! remember to use 5-A-day so if you do a good
work your name could be listed at the top 5-A-Day Contributors in the
Ubuntu Hall of Fame page!

Make a difference; we will be in #ubuntu-bugs (FreeNode) all day and
night, and will be ready to answer your questions about how to help.

If you’re new to all this, head to

Have a nice day,

July 12th, 2009 | Tags: , , , ,

Aprovechando que tocaba actualizar la versión de WordPress he añadido algunos pequeños cambios:

  • Actualización de la versión del tema, iNove.
  • Añadido el plugin de ratings WP-PostRatings.
  • Añadido el plugin para ver los posts relacionados, WordPress Related Posts.
  • Cambios estéticos en la sidebar.
  • Actualización del detector de Spam Akismet.

Posiblemente también desdoblaré el blog en breve, uno para contenido mas técnico y otro más personal.

June 26th, 2009 | Tags: , , , , , ,

After some difficulties with development ubuntu UNR 9.10 Karmic Koala distribution and its (then) kernel, I finally got a stable system on my HP2133 netbook when I upgraded the kernel to All problems with system freezes and wireless (b43fwcutter) were solved and the system has been running perfect for the last days.

So now I’ve decided to change my root file system to the new ext4.

Before gaining the system stability I run multiple installations and tried ext4 and run fine and speedy on the system, so there should be no problem on conversion. I’ve read that migrated file systems do not run as speedy as if you do an ext4 clean install, because old files are not converted to extents format, only the new one. But I expect that performance increase will be gained on the following upgrades done on most used system packages and files.

WARNING: Once you run following commands, the files ystem will no longer be mountable using the ext3. Please note that ext4 may have some bugs so do not use for production servers (wait for sometime watch Linux kernel mailing list for ext4 bugs). It’s recommended that you keep /boot in a ext3 partition for sometime.

WARNING: Remember that your kernel must support ext4 (2.6.28+), and also your GRUB.

WARNING: Next steps are based on Ubuntu UNR 9.10 Karmic Koala, kernel, e2fsck 1.41.5 and GRUB 1.96

1) First step, if you have multiple partitions and/or disks, is knowing where the ROOT is, so run mount and check the mount point for ‘/’:

$ mount
/dev/sda4 on / type ext3 (rw,relatime,errors=remount-ro,commit=600)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw)
binfmt_misc on /proc/sys/fs/bitfmt_misc type bitfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/esbiete/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=esbiete)
/dev/sdb on /media/cdrom0 type vfat (rw,uid=100,utf8,dmask=027,fmask=137)

2) So in my case ‘/’ is located on /dev/sda4. Next you can run tune2fs to convert the file system:

$ sudo tune2fs -O extents,uninit_bg,dir_index /dev/sda4

3) If there are no errors, file system will be quickly converted, but there will always be some inconsistencies that must be corrected before any other action. So cd to ‘/’ and run e2fsck:

$ cd /
$ sudo e2fsck -fpDC0 /dev/sda4

After saying ‘y’ to the warning your file system will be checked an inconsistencies repaired.

4) Also do not forget that you have to update /etc/fstab file so it can mount ext4 file system.

5) Last step is rebuilding your GRUB2 startup configuration (not really necessary, but preferably after any change related to FS):

$ cd /boot/grub
$ sudo cp grub.cfg grub.cfg.old
$ sudo grub-mkconfig -o grub.cfg

I forgot step number 4 and, after reboot, the system run an automated fsck that can not be concluded, as it encountered an UNEXPECTED INCONSISTENCY, and asked to perform a manual fsck:

$ e2fsck -fvDC0 /dev/sda4

It found some unattached inodes that were connected to /lost+found and fixed. Also some wrong block counts, inode bitmap differences and wrong directories count. All fixed. Press CTRL+D to reboot and let the startup process to perform a last fsck. The file system was back to ext3. So I repeated all steps and it converted successfully.

Enjoy your new ext4 system.

June 20th, 2009 | Tags: , , , ,

Finalmente he conseguido romper tanto la instalación anterior que me he decantado por darle una oportunidad a la nueva versión de Ubuntu especial para netbooks.
Si bien es cierto que el nuevo desktop de Ububtu para esta edición está dando problemas de rendimiento, existe la opción de seguir usando la interficie gráfica anterior.
Después de descargar la versión en desarrollo y ponerla en un USB, ha arrancado sin problemas y todo ha funcionado perfectamente después del cambio al Classic Desktop.
Así que ahora mismo ya se está instalando en el HP2133, y en una partición ext4, que parece ser que vuela :)

June 20th, 2009 | Tags: , ,

Bueno, ahora ya tengo el nuevo Kernel recién salido del horno instalado, y parece que el sistema en si funciona bien, pero sin sonido y la red no carga automáticamente, aunque tanto la ethernet como wifi, cargados manualmente con el ifconfig funcionan bien. Esto último es un mal menor.

Para el sonido me he bajado la última versión de ALSA, pero da un error de compilación, ya que en los kernel-headers creados por la nueva versión del kernel falta el Makefile_32.cpu, que debería estar en /usr/src/linux-headers-2.6.30-ultimate/arch/x86.

Tras bajarme del site de Ubuntu los headers para x86 (linux-headers-2.6.30-2-386) ya tengo el fichero que faltaba.

De todas formas, vamos a hacerlo bien siguiendo manualmente el script encontrado en antonywilliams.com, realizado para actualizar ALSA de forma automática cada vez que cambiemos la versión del Kernel. Aprovecho también las explicaciones del blog “Seamos realistas…pidamos lo imposible”.En estos momentos la última versión de ALSA es la 1.0.20.

Primeramente actualizaremos ciertas librerias necesarias. He tenido que poner el --fix-missing porqué no encontraba alguna de las dependencias:

apt-get install build-essentials libncurses5-dev gettext xmlto linux-headers`uname -r` --fix-missign

Descargamos la última versión del driver, lib y utils de ALSA:

wget ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.20.tar.bz2
wget ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.20.tar.bz2

Seguidamente nos creamos una carpeta donde vamos a mover y descomprimir los ficheros descargados:

sudo mkdir -p /usr/src/alsa
cd /usr/src/alsa
sudo cp ~/alsa* .
sudo tar xjf alsa-driver*
sudo tar xjf alsa-lib*
sudo tar xjf alsa-utils*

Ahora ya los tenemos preparados para compilar. En este paso podemos indicarle el tipo de tarjeta de sonido que tenemos (en los netbooks y portátiles suele ser la hda-intel, aunque podemos consultar el módulo correspondiente a nuestra tarjeta o fabricante en la página ALSA Sound Matrix).

Uno de los switch interesantes si tenéis un lio de kernels y headers como yo es el --with-kernel, que nos permite indicarle donde están los headers que debe usar para compilar. En mi caso usaré linux-headers-2.6.30-2-386, aunque lo habitual es que con `uname -r` os compile perfectamente.

cd alsa-driver*
sudo ./configure --with-cards=hda-intel --with-kernel=/usr/src/linux-headers-2.6.30-2-386
sudo make
sudo make install

Y hacemos lo mismo con las lib y utils:

cd ../alsa-lib*
sudo ./configure
sudo make
sudo make install

cd ../alsa-utils*
sudo ./configure
sudo make
sudo make install

Tras reiniciar el sistema lo más normal es que ya tengamos la versión actualizada y sonido en nuestro ordenador. Como no podía ser de otra manera, en mi caso no hay sonido y sigo teniendo el mismo error de que no tengo los “complementos correctos de GStreamer instalados“. Bueno, primeramente voy a copiar los módulos a la carpeta Ubuntu, que, al menos en la instalación original, era dónde los buscaba:

cp -v /lib/modules/`uname -r`/kernel/sound/pci/hda/snd-hda-intel.ko /lib/modules/`uname -r`/ubuntu/media/snd-hda-intel/snd-hda-intel.ko
cp -v /usr/src/alsa/alsa-driver*/modules/* /lib/modules/`uname -r`/kernel/sound/
depmod -a

Para mi sorpresa, seguro que debido a mis inventos, el snd-hda-intel.ko no está donde debería, así que no vamos a sobreescribir nada. Mi intuición me dice que este debe ser el motivo por lo que las cosas no funcionan. Bueno, vamos a copiar los nuevos drivers compilados a la carpeta de módulos del sistema. Bueno, puestos a hacer unos inventos más copio el snd-hda-intel.ko a la nueva carpeta /lib/modules/2.6.30-ultimate/ubuntu/media/snd-hda-intel.

Aprovecho también para hacer un cambio en /etc/modprobe.d/alsa-base, y modifico (o añadir si no la tenéis) la siguiente linea:

options snd-hda-intel model=hp

Vamos a reiniciar…aquí no se oye nada…seguro que en algún momento hice un “si lo haces de esta manera no te va a funcionar nunca”. Bueno, vamos a seguir…

Primeramente pruebo un sudo modprobe snd-hda-intel y me da errores por todas partes. Claramente veo que no voy a llegar a ninguna parte, parece ser que hay problemas en la compilación y que no pueden encontrarse los módulos y funciones que busca.

Definitivamente no ha sido buena idea jugar actualizando unas partes si y otras no. Jugar con tener los headers que no hayan sido generados por la compilación del kernel seguro que ha sido la peor idea, aunque ya era de suponer, pero me gusta forzar las pruebas a ver qué resiste y qué no.

Si alguien se ha leído este post y tiene un sistema “normal” no habrá tenido problemas en instalar una versión actualizada de los ALSA y tendrá sonido.

Bueno, el siguiente paso es probar una actualización completa y automática del sistema…a ver que ocurre.

June 15th, 2009 | Tags: , , , , , , ,

Hace unos días decidí trastear un poco mi nuevo HP2133 Mini-Note y montarle linux en una nueva partición, por si las cosas no salían bien (o si lo necesito) poder arrancar con el Vista que viene instalado.

Después de informarme un poco opté por Ubuntu, su distribución estable Hardy Heron 8.0.4 LTS, que es la que había leído que aguantaba mejor con este mini portátil. De hecho probé la última distribución de Canonical, específica para netbooks, la Jaunty Jackalope 9.04 Netbook Remix desde USB, y un desastre con los drivers de video y el refresco del menú, el interface gráfico no era usable debido a la lentitud de refresco de los menús (parece ser que el bug está detectado y se espera solucionar en una próxima revisión de OpenChrome. Hay un patch, pero aún no estoy a ese nivel).

Total que me quedé con la 8.0.4 LST. La instalación funcionó sin problemas siguiendo las magníficas instrucciones de instalación para el HP2133 del post de Ubuntu Laptop Testing Team…luego llegaron las cosas que no funcionan…por suerte, Google lo sabe todo.

Hay varios problemas detectados y solucionables, el más molesto son los problemas con la resolución gráfica (1024×600), modo no soportado con la instalación, pero instalando en modo VESA standar (xforcevesa en las Boot Options) ningún problema. Posteriormente debemos bajarnos los drivers de VIA y ajustar el xorg.conf para que nos funcione correctamente. No pongo más detalles porqué están perfectamente explicados en el post del Laptop Testing Team.

Después de solucionar este inconveniente toca cambiar los drivers de audio y poner los ALSA y pelearse con la tarjeta WiFi para poder usarla.

A diferencia del post yo no logré que la tarjeta Broadcom funcionase con los drivers B43 y el b43 fwcutter para el firmware, ninguna de las opciones sugeridas en el post de LinuxWireless.Org me funcionó. Logré bajarme los otros drivers de Broadcom, los STA y con estos si que funcionó a la perfeccción.

El siguiente paso…upgrade del kernel a la recientemente salida 2.6.30, que tiene soporte directo para el procesador C7-M a ver que pasa.

November 8th, 2008 | Tags: , , ,

Hace unas semanas varios contactos me invitaron a participar en un nuevo juego que se había publicado en Facebook, “Guerra de Pandillas“. Tras rechazar varias veces las invitaciones, uno, que no se puede resistir a estas tonterías, acabé entrando en el juego.

Una de las opciones que te da el juego para ir prosperando y ganar dinero (como no), es la de comprar territorios (esquinas, tiendas, gimnasios, casinos…). Cada territorio tiene un coste que aumenta con el tiempo y da un beneficio Y cada hora, por ejemplo:

  Esquina Tienda Ciber-Café
Ganancias $50 (por hora) $100 (por hora) $500 (por hora)
Precio $4,000 $8,000 $38,250

A medida que se adquieren propiedades de un mismo tipo, éstas van aumentando su precio. Consecuentemente, y como ocurre con todo, hay que vigilar en que se invierte y cuál es el retorno de la inversión.

Como puede verse en la tabla, en este momento, es lo mismo comprar 1 tienda que 2 esquinas ya que tanto el coste como el rendimiento es el mismo, pero nos salé más beneficioso invertir en un ciber-café que en 5 tiendas o 10 esquinas.

Bueno, al fin y al cabo todo esto se reduce a obtener un sencillo ratio entre precio y ganancias, e invertir siempre en aquellos territorios con un ratio inferior:

  Esquina Tienda Ciber-Café
Ganancias $50 (por hora) $100 (por hora) $500 (por hora)
Precio $4,000 $8,000 $38,250
Ratio Pre/Gan 80 80 76.5

Vemos claramente que el ratio del ciber-café es inferior, por lo tanto ese ha de ser nuestra inversión. dicho ratio también nos indica la cantidad de horas que han de pasar para recuperar la inversión hecha.

Una vez comprado el ciber-café los números cambian, y debemos volver a invertir en esquinas y tiendas (en el juego hay muchas más opciones):

  Esquina Tienda Ciber-Café
Ganancias $50 (por hora) $100 (por hora) $500 (por hora)
Precio $4,000 $8,000 $40,500
Ratio Pre/Gan 80 80 81

Para facilitar las tareas y no tener que hacer cálculos mentales o con una calculadora he programado un pequeño script para Greasemonkey que simplemente añade dicho ratio al lado del precio del territorio y así podemos ver rápidamente dónde debe ir a parar el dinero.

// ==UserScript==
// @name          Guerra de Pandillas - Ratio Territorio
// @namespace     http://biete.com
// @description   get ratio of price and gains
// @description   with getting the ratio of the price of territory and the gains you get from having it, you can
// @description   evaluate what territory you should invest on to maximize your hourly gains. Less the ratio, best investment.
// @include       http://apps.facebook.com/guerra-de-pandillas/*
// ==/UserScript==

var allDivs, thisDiv, text, node, price, gain;

var Territorio = new Array();
	Territorio[0] = 'Esquina';
	Territorio[1] = 'Tienda';
	Territorio[2] = 'Ciber-caf';
	Territorio[3] = 'Gimnasio';
	Territorio[4] = 'Bar';
	Territorio[5] = 'Restaurante';
	Territorio[6] = 'Discoteca';
	Territorio[7] = 'Prost';
	Territorio[8] = 'Centro comercial';
	Territorio[9] = 'Hotel';
	Territorio[10] = 'Casino';

allDivs = document.evaluate('//div[@class="mod_info"]', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

for (var i = 0; i < allDivs.snapshotLength; i++) {
	for (var x = 0; x < Territorio.length; x++) {
		if (allDivs.snapshotItem(i).innerHTML.indexOf(Territorio[x]) != -1) {
			thisDiv = allDivs.snapshotItem(i);
			for (var j = 0; j < thisDiv.childNodes.length; j++) {
				node = thisDiv.childNodes[j];
				if (node.nodeName == 'SPAN') {
					if (node.textContent.indexOf('(') != -1) {
						gain = node.textContent.substring(1,node.textContent.indexOf('('));
						gain = gain.replace(/,/g,'');
					else {
						price = node.textContent.substring(1);
						price = price.replace(/,/g,'');
						node.textContent = node.textContent + ' Ratio: ' + eval (price + ' / ' + gain);

Espero que os sea de ayuda.