11.7. Solución de problemas

Las secciones siguientes se ocupan de algunos de los problemas relacionados con el software y el hardware de la impresora que aparecen con más frecuencia y ofrece propuestas para solucionarlos o eludirlos.

11.7.1. Impresoras sin compatibilidad con lenguaje de impresión estándar

Las impresoras que no admiten ningún lenguaje de impresión habitual y con las que tan sólo es posible comunicarse mediante secuencias de control especiales se denominan impresoras GDI. Estas impresoras sólo pueden funcionar con las versiones del sistema operativo para las que exista un controlador comercializado por el fabricante. GDI es una interfaz de programación desarrollada por Microsoft para dispositivos de gráficos. El verdadero problema no radica en la interfaz de programación, sino en el hecho de que sólo es posible comunicarse con las impresoras GDI mediante el lenguaje de impresión propio del modelo de impresora específica.

En el caso de algunas impresoras, puede cambiarse del funcionamiento en modo GDI a uno de los lenguajes de impresión estándar. Algunos fabricantes proporcionan controladores propios para sus impresoras GDI. El inconveniente que presenta este tipo de controladores es que no se garantiza su funcionamiento con el sistema de impresión instalado, además de que no resultan adecuados para las distintas plataformas de hardware. Por contra, las impresoras que admiten un lenguaje de impresión estándar no dependen de una versión del sistema de impresión ni de una plataforma de hardware especiales.

En lugar de dedicar el tiempo a intentar hacer funcionar un controlador Linux para una marca concreta, podría resultar más rentable adquirir una impresora compatible. Esto resolvería el problema con el controlador de una vez por todas, con lo que se eliminaría la necesidad de instalar y configurar el software especial del controlador, junto con la de conseguir las actualizaciones de éste que podrían precisarse a raíz de desarrollos posteriores del sistema de impresión.

11.7.2. Inexistencia de archivo PPD adecuado para una impresora PostScript

Si el paquete manufacturer-PPDs no contiene ningún archivo PPD adecuado para una impresora PostScript, debería ser posible utilizar el archivo PPD desde el CD del controlador del fabricante de la impresora, o descargar un archivo PPD adecuado de la página Web del fabricante.

Si el archivo PPD se suministra en formato zip (.zip) o como archivo zip de extracción automática (.exe), descomprímalo mediante unzip. En primer lugar, revise las cláusulas de la licencia del archivo PPD. A continuación, utilice la utilidad cupstestppd para comprobar si el archivo PPD cumple la “Adobe PostScript Printer Description File Format Specification, version 4.3.” (Versión 4.3 de la Especificación de formato de archivo de descripción de impresora PostScript de Adobe). Si la utilidad devuelve el valor “FAIL”, hay errores serios en los archivos PPD y es probable que causen problemas importantes. Los problemas de los que informe cupstestppd deben eliminarse. En caso necesario, solicite un archivo PPD adecuado al fabricante de la impresora.

11.7.3. Puertos paralelos

El procedimiento más seguro consiste en conectar directamente la impresora al primer puerto paralelo y seleccionar los ajustes de puerto paralelo siguientes en el BIOS:

  • I/O address: 378 (hexadecimal)

  • Interrupt: irrelevante

  • Mode: Normal, SPP o Output Only

  • DMA: inhabilitado

Si, pese a estos ajustes, no es posible la comunicación con la impresora mediante el puerto paralelo, especifique explícitamente la dirección de entrada o salida de datos (I/O address) de acuerdo con el ajuste del BIOS como 0x378 en /etc/modprobe.conf. Si hay dos puertos paralelos cuyas direcciones de entrada o salida son 378 y 278 (hexadecimal), especifique estas últimas como 0x378,0x278.

Si la interrupción (Interrupt) 7 se encuentra libre, puede activarse con la cadena que se muestra en el Ejemplo 11.1, “/etc/modprobe.conf: Modo de interrupción para el primer puerto paralelo”. Antes de activar el modo de interrupción, compruebe si el archivo /proc/interrupts ya se está utilizando. Tan sólo aparecen las interrupciones que se utilizan en ese momento. Es posible que esto cambie en función de los componentes de hardware activos. Ningún otro dispositivo debe hacer uso de la interrupción para el puerto paralelo. Si no está seguro, utilice el modo de sondeo mediante irq=none.

Ejemplo 11.1. /etc/modprobe.conf: Modo de interrupción para el primer puerto paralelo

alias parport_lowlevel parport_pc
options parport_pc io=0x378 irq=7

11.7.4. Conexiones de impresora de red

Identificación de problemas de red

Conecte directamente la impresora al equipo. Si desea realizar pruebas, configure la impresora como impresora local. Si esto funciona, los problemas están relacionados con la red.

Comprobación de la red TCP/IP

La red TCP/IP y la resolución de nombres deben ser funcional.

Comprobación de lpd remotos

Utilice el siguiente comando para comprobar si puede establecerse una conexión TCP como lpd (puerto 515) en host:

netcat -z host 515 && echo ok || echo failed

Si la conexión con lpd no puede establecerse, es posible que lpd no se encuentre activo o que haya problemas básicos de red.

Como usuario root, utilice el siguiente comando para consultar un informe de estado (posiblemente muy largo) para cola en host remoto, siempre que el lpd respectivo se encuentre activo y el host admita consultas:

 
echo -e "\004cola" \ 
  | netcat -w 2 -p 722 host 515 

Si lpd no responde, es posible que no esté activo o que haya problemas básicos de red. Si lpd responde, la respuesta debería mostrar por qué la impresión no es posible en la cola en host. Si recibe una respuesta como la que aparece en el Ejemplo 11.2, “Mensaje de error desde lpd, el problema está causado por el lpd remoto.

Ejemplo 11.2. Mensaje de error desde lpd

lpd: your host does not have line printer access
lpd: queue does not exist
printer: spooling disabled
printer: printing disabled
Comprobación de cupsd remotos

Por defecto, el servidor de red CUPS debería difundir sus colas cada 30 segundos en puerto UDP 631. En consecuencia, el siguiente comando puede utilizarse para comprobar si hay un servidor de red CUPS en la red.

netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID

Si existe una difusión de servidor de red CUPS, aparece la salida como se muestra en el Ejemplo 11.3, “Difusión desde el servidor de red CUPS”.

Ejemplo 11.3. Difusión desde el servidor de red CUPS

ipp://host.domain:631/printers/queue

Utilice el siguiente comando para comprobar si puede establecerse una conexión TCP como lpd (puerto 631) en host:

netcat -z host 631 && echo ok || echo failed

Si no puede establecerse la conexión con cupsd, es posible que cupsd no esté activo o que haya problemas básicos de red. lpstat -h host -l -t devuelve un informe de estado (posiblemente muy largo) para todas las colas en host, siempre que el cupsd respectivo se encuentre activo y el host admita consultas.

El siguiente comando puede utilizarse para comprobar si la cola en host acepta un trabajo de impresión que conste de un solo carácter de retorno de carro. No debería imprimirse nada. Es posible que salga una página en blanco.

echo -en "\r" \
  | lp -d queue -h host
Solución de problemas de impresoras de red o servidores de impresión dedicados

A veces, los gestores de cola que se ejecutan en un servidor de impresión dedicado pueden ocasionar problemas cuando tienen que hacer frente a muchos trabajos de impresión. Puesto que el gestor de cola del servidor de impresión dedicado es el causante de esto, no hay nada que el usuario pueda hacer. Como solución, eluda el gestor de cola del servidor de impresión dedicado dirigiendo la comunicación a la impresora conectada en el servidor de impresión dedicado directamente a través del zócalo TCP. Consulte la Sección 11.4.2, “Impresoras de red”.

De esta forma, la función del servidor de impresión dedicado queda relegada a la de un convertidor de las distintas formas de transferencia de datos (red TCP/IP y conexión de impresora local). Para utilizar este método, necesita saber el puerto TCP del servidor de impresión dedicado. Si la impresora está conectada al servidor de impresión dedicado y encendida, normalmente este puerto TCP puede determinarse con la utilidad nmap del paquete nmap cierto tiempo después de haber encendido el servidor de impresión dedicado. Por ejemplo, nmap dirección IP puede dar el siguiente resultado para un servidor de impresión dedicado:

Port       State       Service
23/tcp     open        telnet
80/tcp     open        http
515/tcp    open        printer
631/tcp    open        cups
9100/tcp   open        jetdirect

Esta salida indica que la comunicación con impresora conectada al servidor de impresión dedicado puede realizarse a través del zócalo TCP en el puerto 9100. Por defecto, nmap tan sólo comprueba varios puertos comúnmente conocidos que se enumeran en /usr/share/nmap/nmap-services. Para comprobar todos los puertos posibles, utilice el comando nmap -p de_puerto-a_puerto dirección IP. Esto podría llevar cierto tiempo. Para obtener más información, consulte la página Man de nmap.

Escriba un comando como:

echo -en "\rHello\r\f" | netcat -w 1 IP-address port
cat file | netcat -w 1 IP-address port

para enviar directamente cadenas de caracteres o archivos al puerto respectivo para comprobar si puede establecer comunicación con la impresora en este puerto.

11.7.5. Impresión defectuosa sin mensajes de error

El trabajo de impresión finaliza para el sistema de impresión cuando el sistema secundario CUPS completa la transferencia de datos al destinatario (impresora). Si el procesamiento posterior en el destinatario falla (por ejemplo, si la impresora no es capaz de imprimir los datos de la impresora específica), el sistema de impresión no registra este hecho. Si la impresora no es capaz de imprimir los datos específicos de impresora, seleccione un archivo PPD distinto que sea más adecuado para la impresora.

11.7.6. Colas inhabilitadas

Si falla completamente la transferencia de datos al destinatario tras varios intentos, el sistema secundario CUPS, como usb o socket, informa de un error al sistema de impresión (a cupsd). El sistema secundario decide si los intentos tienen sentido hasta que la transferencia de datos se notifica como imposible, y también cuántos intentos han de llevarse a cabo. Puesto que estos intentos se llevarían a cabo en vano, cupsd inhabilita la impresión para la cola respectiva. Tras eliminar la causa del problema, el administrador del sistema debe rehabilitar la impresión con el comando /usr/bin/enable.

11.7.7. Exploración de CUPS: Supresión de trabajos de impresión

Si un servidor de red CUPS difunde sus colas a los hosts clientes mediante la exploración y se encuentra activo un cupsd local adecuado en los hosts clientes, el cupsd cliente acepta trabajos de impresión de las aplicaciones y las reenvía al cupsd del servidor. Cuando cupsd acepta un trabajo de impresión, se le asigna un nuevo número de trabajo. Por lo tanto, el número de trabajo del host cliente difiere del número de trabajo que figura en el servidor. Puesto que, normalmente, un trabajo de impresión se reenvía inmediatamente, no puede suprimirse con el número de trabajo que figura en el host cliente, puesto que el cupsd cliente considera el trabajo de impresión como completado al reenviarse al servidor cupsd.

Para suprimir un trabajo de impresión que se encuentra en el servidor, utilice un comando como lpstat -h print-server -o para determinar el número de trabajo que figura en el servidor, siempre que éste no haya completado ya el trabajo de impresión (es decir, siempre que no la haya enviado a la impresora). El trabajo de impresión que se encuentra en el servidor puede suprimirse mediante este número de trabajo:

cancel -h print-server queue-jobnnumber

11.7.8. Trabajos de impresión defectuosos y errores de transferencia de datos

Los trabajos de impresión permanecen en las colas y la impresión se retoma si se apaga la impresora o si el equipo se apaga y rearranca durante el proceso de impresión. Los trabajos de impresión defectuosos pueden eliminarse de la cola mediante cancel.

Si un trabajo de impresión es defectuoso o tiene lugar un error en la comunicación entre el host y la impresora, ésta imprime numerosas hojas con caracteres ininteligibles, puesto que no es capaz de procesar los datos correctamente. Para solucionar este problema, proceda como sigue:

  1. Para detener la impresión, retire todo el papel de las impresoras de inyección de tinta o abra las bandejas del papel de las impresoras láser. Las impresoras de alta calidad tienen un botón para cancelar la impresión en curso.

  2. Es posible que el trabajo de impresión permanezca en cola, puesto que los trabajos tan sólo se eliminan tras haberse enviado completamente a la impresora. Utilice lpstat -o o lpstat -h servidor-de-impresión -o para comprobar la cola cuya impresión está en curso. Suprima el trabajo de impresión mediante cancel cola-númerodeimpresión o cancel -h servidor-de-impresión cola-númerodetrabajo.

  3. Es posible que algunos datos se transfieran a la impresora aun cuando el trabajo de impresión se ha suprimido de la cola. Compruebe si el proceso del sistema secundario CUPS continúa ejecutándose para la cola respectiva y finalícelo. Por ejemplo, para una impresora conectada al puerto paralelo, el comando fuser -k /dev/lp0 puede utilizarse para finalizar todos los procesos que aún acceden a la impresora (o, en términos más precisos, al puerto paralelo).

  4. Restaure completamente la impresora apagándola durante cierto tiempo. A continuación, introduzca el papel y enciéndala.

11.7.9. Depuración del sistema de impresión CUPS

Utilice el procedimiento genérico siguiente para localizar problemas en el sistema de impresión CUPS:

  1. Establezca LogLevel debug en /etc/cups/cupsd.conf.

  2. Detenga cupsd.

  3. Elimine /var/log/cups/error_log* para evitar tener que buscar entre archivos de registro muy grandes.

  4. Inicie cupsd.

  5. Repita la acción en la que apareció el problema.

  6. Compruebe los mensajes que aparecen en /var/log/cups/error_log* para identificar la causa del problema.

11.7.10. Información adicional

Para obtener soluciones para numerosos problemas específicos, consulte la base de datos de asistencia de SUSE en http://portal.suse.com/. Realice búsquedas por palabras clave para localizar los artículos pertinentes.