Instalar Ubuntu 10.04 en iMac 27″

Nadie puede negar que son bonitos y fáciles de usar.  Teniendo debajo la solidez de un sistema UNIX open source (Darwin) y encima la cuidada capa gráfica Quartz , no es de extrañar que sea un sistema que guste. Unámosle a esto que si Apple cuida algo en particular es el diseño de sus máquinas (los iMac de 27″ , estéticamente son atractivos) y entonces nos daremos cuenta de por qué Apple resurgió de sus cenizas (iPod, iPhone, iPad, iMac…)  Pero héte aquí que a pesar de disponer de servicios similares a APT ( MacPorts ) para la instalación y gestión de paquetes software, se echa en falta la flexibilidad de un sistema Linux, la posibilidad de instalar miles de aplicaciones de escritorio con licencia libre… la libertad. O tal vez sea que nos hemos acostumbrado tanto al sistema del pingüino que no podemos vivir sin él 🙂 El caso es que en mi grupo de investigación, Inko P. se lió la manta a la cabeza y estuvo un par de días instalando Ubuntu en la máquina de la manzana, documentando en detalle el proceso a medida que lo iba haciendo. Y esa explicación, paso a paso, sobre cómo instalar Ubuntu 10.04 en el iMac 27″, la hemos publicado en el blog del grupo.

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.

Receta: Solucionar «Impresora sin papel» cuando sí lo hay

Ayer imprimí un documento y cuando quedaba una última página por imprimir, se me acabaron los folios (DINA4). No problem, vuelvo a cargarla… Y la cosa es que la impresora desde entonces sigue funcionando, pero con un (muy) molesto icono triangular rojo que dice «Impresora sin papel». Llevaba ya un buen rato mirando la causa hasta que he visto que es un bug de CUPS. Pero tiene solución:

* Editar /etc/cups/printers.conf con sudo
* Buscar la línea que dice «Reason media-empty-error». Borrarla y grabar.
* Reiniciar cups (sudo /etc/init.d/cups restart).

Un alivio.