Sniffing de tráfico USB con Wireshark

Problema: una impresora HP LaserJet 1300 que funcionaba perfectamente en Ubuntu 9.10 ha dejado de hacerlo al actualizar a Ubuntu 10.04 el PC de sobremesa. Realmente el trabajo de impresión se envía, la impresora parpadea indicando que está recibiendo datos, pero nunca deja de parpadear, y no arrastra papel para imprimir.

Al conectar otro Ubuntu 10.04 – de un portátil – a la misma impresora, funciona perfectamente. Las versiones de CUPS, libpoppler, foomatic y compañía son las mismas en ambos ordenadores. Eliminando del PC completamente todos los programas indicados (apt-get remove –purge && rm -rf /etc/cups) y volviendo a instalar, no se soluciona el problema.

CUPS en modo debugger no indica ningún fallo (es posible ponerlo en modo debugger cambiando el DebugLevel en /etc/cups/cups.conf). Un diagnóstico de problemas de impresión tampoco arroja ningún resultado.

¿Cómo solucionar? Bien, la idea es ir al meollo de la cuestión: ¿qué se está enviando por USB a la impresora en uno y otro caso? ¿Cuál es la diferencia entre lo que envía el portátil y lo que envía el PC de sobremesa? Eso nos puede dar alguna pista.

Para capturar el tráfico USB nos valdremos de un kernel moderno y compilado con soporte debugs:

$ mount | grep debugfs
none on /sys/kernel/debug type debugfs (rw)

Lo siguiente es comprobar en qué bus USB tenemos conectada la impresora:

$ lsusb | grep Hewlett
Bus 007 Device 002: ID 03f0:1017 Hewlett-Packard LaserJet 1300

Ahora que tenemos todos los datos, arrancamos Wireshark y elegimos hacer sniffing sobre el bus USB apropiado. Al enviar un documento cualquiera a imprimir, veremos que hay actividad en Wireshark. En la imagen vemos que se ha convertido el documento a formato PostScript y eso es lo que se ha enviado a la impresora. Haciendo lo mismo desde el portátil, al enviar el mismo fichero a la misma impresora veo que hay diferencias precisamente al final del documento PostScript.

A partir de este punto el trabajo que he realizado no ha sido nada interesante, pues realmente ha sido un penoso proceso de prueba y error, copiando versiones de programas del portátil al PC, sin buenos resultados… hasta que en un foro he visto que para impresoras HP en Linux recomendaban encarecidamente instalar HPLIP, un conjunto de drivers y aplicaciones de gestión en Linux de la propia HP. Realmente hasta ahora nunca lo había usado (me bastaba con el soporte base que me daba CUPS), pero ha sido instalarlo, configurar una impresora desde hp-toolbox e imprimir a la primera.

Recuperando mi tiempo

¿A cuántas listas de distribución que realmente no lees estás suscrito? Son una fuente de procrastinación. Hoy me he dado de baja de las siguientes:
* Fedora Weekly News (uso Ubuntu)
* GNOME Announce List (realmente no leía los anuncios)
* TopCoder (ya no participo en el torneo)
* Anuncios de YouSendIt (para qué quiero conocer las novedades si últimamente sólo envío grandes archivos a través de RapidShare)
* Amazon Web Services

Y alguna que otra más … Me siento más ligero.

Obtener un thumbnail de un vídeo con ffmpeg

Otra receta rápida:

$ ffmpeg -y -i upld-1281178498829.flv -r 1 -ss 5 -vframes 1 -s 120x90 /tmp/upld-1281178498829.jpg

-y = sobreescribir en caso de que ya existiera
-i = nombre del vídeo (input)
-r 1 = fijar el fps a 1
-ss 5 = sacar el thumb del segundo 5
-vframes 1 = sacar sólo un frame
-s 120×90 = tamaño del thumb

Descripción XML del panel de GNOME

¿Quieres saber exactamente qué iconos forman parte de tu panel y cuál es la configuración exacta de cada uno de ellos? Puedes obtener una descripción en formato XML así:

$ gconftool-2 --dump /apps/panel

Comando útil cuando tienes algún icono minúsculo (de 1×1 por ejemplo) que no hay manera de conocer su procedencia – ni de eliminar- usando el ratón…