As seções a seguir abordam alguns dos problemas mais encontrados em relação a hardware e software de impressora, bem como formas de solucionar ou superar esses problemas. Os tópicos abordados incluem impressoras GDI, arquivos PPD e configuração de porta. Problemas comuns de impressoras de rede, impressões com defeito e gerenciamento de filas também são tratados.
Essas impressoras não suportam nenhuma linguagem de impressora comum, podendo apenas ser tratadas com seqüências especiais de controle proprietário. Portanto, elas só funcionam com as versões de sistema operacional para as quais o fabricante fornece driver. GDI é uma interface de programação desenvolvida pela Microsoft* para dispositivos gráficos. Geralmente o fabricante fornece drivers apenas para Windows e, com o driver do Windows usa a interface GDI, essas impressoras também são chamadas de impressoras GDI. O verdadeiro problema não é a interface de programação, mas o fato de que tais impressoras só podem ser tratadas com a linguagem de impressora proprietária do respectivo modelo de impressora.
Algumas impressoras GDI podem ser ajustadas para funcionar no modo GDI ou em uma das linguagens de impressora padrão. Consulte o manual da impressora para saber se isso é possível. Alguns modelos exigem software especial do Windows para fazer o ajuste (observe que o driver de impressora do Windows pode sempre retornar a impressora para o modo GDI quando se imprime do Windows). Para outras impressoras GDI, existem módulos de extensão disponíveis para uma linguagem de impressora padrão.
Alguns fabricantes oferecem drivers proprietários para suas impressoras A desvantagem dos drivers de impressora proprietários é que não há garantia de que vão funcionar com o sistema de impressão instalado ou de que sejam adequados para as diferentes plataformas de hardware. Em contraste, impressoras que suportam uma linguagem de impressora padrão não dependem de uma versão do sistema de impressão especial ou de plataforma de hardware especial.
Em vez de desperdiçar tempo tentando fazer um driver Linux proprietário funcionar, pode ser mais eficaz comprar uma impressora suportada. Isso solucionaria o problema do driver de uma vez por todas, eliminando a necessidade de instalar e configurar software de driver especial e obter atualizações do driver eventualmente necessárias devido a novos avanços no sistema de impressão.
Se o pacote manufacturer-PPDs não contiver qualquer arquivo PPD adequado para uma impressora PostScript, será possível usar o arquivo PPD do CD do driver do fabricante da impressora ou fazer download de um arquivo PPD adequado da página da Web do fabricante.
Se o arquivo PPD for fornecido como arquivo compactado (.zip) ou arquivo compactado de auto-extração (.exe), faça a descompactação com unzip. Primeiro, reveja os termos de licença do arquivo PPD. Em seguida, use o utilitário cupstestppd para verificar se o arquivo PPD atende à “Especificação de Formato de Arquivo PPD (PostScript Printer Description - Descrição de Impressora PostScript) da Adobe, versão 4.3”. Se o utilitário retornar “FAIL”, significa que os erros nos arquivos PPD são graves e provavelmente causam os principais problemas. Os problemas reportados pelo cupstestppd devem ser eliminados. Se necessário, peça o arquivo PPD adequado ao fabricante da impressora.
A abordagem mais segura é conectar a impressora diretamente à primeira porta paralela e selecionar as configurações de porta paralela no BIOS:
Endereço de E/S: 378 (hexadecimal)
Interrupção: irrelevante
Modo: Normal, SPP ou Output Only
DMA: desabilitado
Se a impressora não puder ser endereçada na porta paralela apesar dessas configurações, digite o endereço de E/S explicitamente de acordo com a configuração no BIOS no formato 0x378 em /etc/modprobe.conf. Se houver duas portas paralelas definidas para os endereços de E/S 378 e 278 (hexadecimal), digite-os no formato 0x378,0x278.
Se a interrupção 7 estiver livre, poderá ser ativada com a entrada mostrada em Exemplo 12.1, “/etc/modprobe.conf: Modo de interrupção para a primeira porta paralela”. Antes de ativar o modo de interrupção, verifique o arquivo /proc/interrupts para ver quais interrupções já estão sendo usadas. Somente as interrupções usadas atualmente são exibidas. Isso pode mudar dependendo dos componentes de hardware ativos. A interrupção da porta paralela não deve ser usada por outro dispositivo. Se não tiver certeza, use o modo de polling com irq=none.
Exemplo 12.1. /etc/modprobe.conf: Modo de interrupção para a primeira porta paralela
alias parport_lowlevel parport_pc options parport_pc io=0x378 irq=7
Conecte a impressora diretamente ao computador. Para fins de teste, configure-a como impressora local. Se isso funcionar, o problema está na rede.
A rede TCP/IP e a resolução de nomes devem ser funcionais.
Use o comando a seguir para testar o estabelecimento de uma conexão TCP com lpd (porta 515) no host.
netcat -z host 515 && echo ok || echo failedSe a conexão com lpd não for estabelecida, o lpd pode não estar ativo ou pode haver problemas básicos de rede.
Como usuário root, use o seguinte comando para consultar um relatório de status (possivelmente muito longo) sobre a fila no host remoto, considerando que o respectivo lpd esteja ativo e o host aceite consultas:
echo -e "\004queue" \
| netcat -w 2 -p 722 host 515
Se o lpd não responder, ele pode não estar ativo ou pode haver problemas básicos de rede. Se o lpd responder, a resposta deverá mostrar por que não é possível imprimir na fila do host. Se você receber uma resposta como esta, mostrada no Exemplo 12.2, “Mensagem de erro do lpd”, significa que o problema está sendo causado pelo lpd remoto.
Exemplo 12.2. Mensagem de erro do lpd
lpd: your host does not have line printer access lpd: queue does not exist printer: spooling disabled printer: printing disabled
Por padrão, o servidor de rede CUPS deve transmitir suas filas a cada 30 segundos na porta UDP 631. Por isso, o seguinte comando pode ser usado para testar a existência de um servidor de rede CUPS na rede. Não deixe de parar seu daemon CUPS local antes de executar o comando.
netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID
Se existir um servidor de rede CUPS de transmissão, a saída aparecerá conforme mostrado no Exemplo 12.3, “Transmissão do servidor de rede CUPS”.
Use o comando a seguir para testar o estabelecimento de uma conexão TCP com cupsd (porta 631) no host.
netcat -z host 631 && echo ok || echo failed
Se não for possível estabelecer a conexão com cupsd, pode ser que o cupsd não esteja ativo ou existam problemas básicos de rede. lpstat -h host -l -t retorna um relatório de status (possivelmente muito longo) de todas as filas do host, contanto que o respectivo cupsd esteja ativo e o host aceite consultas.
O próximo comando pode ser usado para testar se a fila do host aceita um serviço de impressão que consiste em um único caractere de retorno de carro. Nada será impresso. Possivelmente, será ejetada uma página em branco.
echo -en "\r" \
| lp -d queue -h hostAlgumas vezes, spoolers executados na caixa do servidor de impressão causam problemas quando precisam lidar com vários serviços de impressão. Como isso é causado pelo spooler na caixa do servidor de impressão, não há como resolver essa questão. Como solução alternativa, desvie o spooler na caixa do servidor de impressão endereçando a impressora conectada à caixa diretamente com o soquete TCP. Consulte a Seção 12.4, “Impressoras de rede”.
Dessa forma, a caixa do servidor de impressão é reduzida a um conversor entre as várias formas de transferência de dados (conexão de rede TCP/IP e impressora local). Para usar esse método, você precisa conhecer a porta TCP da caixa do servidor de impressão. Se a impressora estiver conectada à caixa do servidor de impressão e ligada, a porta TCP poderá ser determinada normalmente com o utilitário nmap do pacote nmap, algum tempo depois que a caixa for ativada. Por exemplo, nmap endereço_IP pode resultar na seguinte saída para uma caixa do servidor de impressão:
Port State Service 23/tcp open telnet 80/tcp open http 515/tcp open printer 631/tcp open cups 9100/tcp open jetdirect
Essa saída indica que a impressora conectada à caixa do servidor de impressão pode ser endereçada via soquete TCP na porta 9100. Por padrão, nmap verifica somente algumas portas mais conhecidas listadas em /usr/share/nmap/nmap-services. Para verificar todas as portas possíveis, use o comando nmap-p porta_de_origem-porta_de_destino endereço_IP. O processo pode demorar. Para obter mais informações, consulte a página de manual de nmap.
Digite um comando como
echo -en "\rHello\r\f" | netcat -w 1 IP-address port cat file | netcat -w 1 IP-address port
para enviar strings de caracteres ou arquivos diretamente à respectiva porta para testar se a impressora pode ser endereçada dessa porta.
Para o sistema de impressão, o serviço de impressão é concluído quando o back end do CUPS conclui a transferência de dados ao destinatário (impressora). Se houver falha no processamento posterior no destinatário (por exemplo, se a impressora não imprimir seus próprios dados específicos), o sistema de impressão não notará. Se a impressora não imprimir seus próprios dados específicos, selecione um arquivo PPD mais adequado à impressora.
Se a transferência de dados para o destinatário falhar completamente após várias tentativas, o back end do CUPS, como USB ou socket, reportará um erro ao sistema de impressão (ao cupsd). O back end determina quantas tentativas malsucedidas são necessárias para que a transferência de dados seja considerada impossível. Visto que as tentativas posteriores serão inúteis, o cupsd desabilita a impressão da fila correspondente. Após eliminar a causa do problema, o administrador do sistema deve reabilitar a impressão com o comando cupsenable.
Se um servidor de rede CUPS transmitir suas filas aos hosts de clientes via navegação e um cupsd local adequado estiver ativo nos hosts de clientes, o cupsd de cliente aceitará serviços de impressão de aplicativos e os encaminhará ao cupsd no servidor. Quando o cupsd aceita um serviço de impressão, atribui a ele um novo número. Portanto, o número da tarefa no host cliente é diferente do número da tarefa no servidor. Como geralmente um serviço de impressão é encaminhado de imediato, não é possível apagá-lo com o número de serviço do host cliente, porque o cupsd do cliente considera o serviço como concluído assim que ele é encaminhado ao cupsd do servidor.
Quando quiser apagar o serviço de impressão no servidor, use um comando como lpstat -h cups.example.com -o para determinar o número do serviço no servidor, contanto que o servidor ainda não tenha concluído o serviço de impressão (isto é, não o tenha enviado inteiramente para a impressora). Com esse número, o serviço de impressão pode ser apagado no servidor:
cancel -h cups.example.com queue-jobnnumberSe você desligar a impressora ou o computador durante o processo de impressão, os serviços de impressão permanecerão na fila. A impressão continua quando o computador (ou a impressora) é ligado novamente. Os serviços de impressão com defeito devem ser removidos da fila com cancel.
Se o serviço de impressão apresentar defeito ou se ocorrer um erro na comunicação entre o host e a impressora, a impressora imprimirá várias folhas de papel com caracteres ininteligíveis, pois não consegue processar os dados corretamente. Para corrigir essa situação, siga as etapas a seguir:
Para interromper a impressão, remova todo o papel das bandejas da impressora jato de tinta ou laser. Impressoras de alta qualidade têm um botão de cancelamento da impressão.
O serviço de impressão pode ainda estar na fila, já que os serviços apenas são removidos depois de inteiramente enviados à impressora. Use lpstat -o ou lpstat -h cups.example.com -o para verificar a fila que está sendo impressa. Apague o serviço de impressão com cancel fila-número_do_serviço ou cancel -h cups.example.com fila-número_do_serviço.
Alguns dados podem ainda ser transferidos à impressora mesmo que o serviço tenha sido apagado da fila. Verifique se há um processo back end do CUPS em execução para a fila respectiva e termine-o. Por exemplo, para uma impressora conectada à porta paralela, o comando fuser -k /dev/lp0 pode ser usado para terminar todos os processos que ainda estão acessando a impressora (mais precisamente, a porta paralela).
Reinicialize a impressora completamente deixando-a desligada por um tempo. Em seguida, insira o papel e ligue a impressora.
Use o seguinte procedimento genérico para localizar problemas no sistema de impressão do CUPS:
Defina LogLevel debug em /etc/cups/cupsd.conf.
Pare o cupsd.
Remova /var/log/cups/error_log* para não precisar procurar em arquivos de registro muito grandes.
Inicie o cupsd.
Repita a ação que causou o problema.
Verifique as mensagens em /var/log/cups/error_log* para identificar a causa do problema.
Soluções para vários problemas específicos são apresentadas na Base de Dados de Conhecimento Novell (http://support.novell.com/). Localize os artigos relevantes com uma pesquisa pelo texto CUPS.