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) |
$ 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 |
$ 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.