11.3. Configuração Básica

Para usar as impressoras com o sistema LPD de impressão, você irá precisar de configurar tanto a impressora quanto o programa LPD. Esse documento descreve dois níveis de configuração:

11.3.1. Configuração Básica

Essa seção mostra como configurar a impressora e o programa LPD para usá-la. Ela irá ensinar o básico:

Se você estiver configurando a impressora para usar o protocolo de rede para aceitar dados para imprimir ao invés de uma porta paralela ou serial, veja Impressoras com Interfaces de Dados Através da Rede.

Apesar desta seção ser chamada de ``Configuração Simples da Impressora'' é um pouco complexa. Fazer com que a impressora funcione com seu computador e o LPD é uma parte difícil da configuração. As opções avançadas como cabeçalhos de páginas e gerenciamento são facilmente configuráveis para funcionar na impressora.

11.3.1.1. Configuração de Hardware

Esta seção mostra vários meios para você conectar a impressora no seu PC. Fala sobre portas de comunição e cabos, e também sobre configuração do kernel que será necessária habilitar para que o FreeBSD possa comunicar-se com a impressora.

Se você já tem uma impressora conectada e obteve sucesso em imprimir em outro sistema operacional, você provavelmente poderá pular para a seção Configuração de Programas .

11.3.1.1.1. Portas e Cabos

A grande maioria de impressoras que você pode ter para usar em um PC, possui suporte a pelo menos uma das interfaces abaixo:

  • Interface serial: usa a porta serial do seu computador para enviar dados para a impressora. A interface serial é comummente encontrada em computadores industriais, os cabos estão disponíveis e também são de fácil construção. Interfaces seriais, algumas vezes necessitam de cabos especiais e normalmente requerem que você configure algumas opções complexas da comunicação.

  • Interface paralela: usa a porta paralela do seu computador para enviar dados para a impressora. Interface paralela é mais comum em PC. Os cabos são disponibilizados mais facilmente, mas são mais difíceis de serem montados manualmente. Normalmente não existem opções para serem configuradas nas interfaces paralelas, tornado a configuração extremamente mais simples.

    Interfaces paralelas são normalmente conhecidas como interfaces ``Centronics'', nome este dado por causa do tipo de conector utilizado na impressora.

Em geral, as interfaces seriais são mais lentas que as paralelas. Interfaces paralelas normalmente são disponibilizadas em uma única direção para comunicação (do computador para a impresora) enquanto que a serial proporciona uma comunicação bi-direcional. As novas portas paralelas (EPP e ECP) e as impressoras podem se comunicar em ambas as direções sob o FreeBSD quando um cabo padrão IEEE1284 estiver sendo usado.

Usualmente, você somente precisará da comunicação bi-direcional se sua impressora reconhecer PostScript®. Impressora PostScript pode ser muito ``tagarela''. De fato trabalhos de impressão em PostScript são as saídas atuais que os programas enviam para as impressoras; Eles não precisão produzir papel como um todo e pode retornar resultados diretamente para o computador. PostScript também usa comunicação bi-direcional para informar ao computador sobre problemas ocorridos, tais como erros em programas PostScript ou papel embaralhado (paper jam). Seus usuários podem ficar agradecidos com essas informções. Entretanto, o melhor meio para fazer o controle efetivo com uma impressora PostScript requer que a cominucação seja bi-direcional: você pergunta a impressora sobre a contagem de páginas (quantas páginas ela já imprimiu durante seu uso, vida útil), então envia o trabalho de impressão do usuário, faz novamente a pergunta à impressora sobre o total de páginas impressas e então faz a subtraçao dos valores para saber o valor exato de páginas impressa pelo usuário.

11.3.1.1.2. Porta Paralela

Para conectar a impressora usando a interface paralela, utilize o cabo Centronics entre a impressora e o computador. As instruções que vem no manual da impressora e/ou do computador, devem dar a você um passo-a-passo completo.

Lembre-se qual porta paralela você está usando no computador. A primeira porta paralela é /dev/ppc0 para o FreeBSD; a segunda é /dev/ppc1, e assim por diante. Os dispositivos de impressora usam o seguinte esquema de nomes: /dev/lpt0 Para a impressora conectada na primeira porta paralela etc.

11.3.1.1.3. Porta Serial

Para conectar a impressora em uma porta serial, você deverá possuir o cabo serial apropriado para interligar o computador com a impressora. As instruções que vem com a impressora e/ou com o computador, deverá dar à você um completo passo-a-passo.

Se você não está seguro sobre qual o tipo de ``cabo serial'' que está usando, você pode tentar uma dessas alternativas:

  • O cabo tipo modem conecta cada pino do conector de um lado ao correspondente do outro conector. Esse tipo de cabo também é conhecido como cabo ``DTE-to-DCE''.

  • O cabo tipo null-modem conecta alguns dos pinos diretamente e troca outros (como por exemplo os pinos responsáveis por enviar e receber dados), curta-circuita outros (liga-os entre si) internamente em cada conector. Esse tipo de cabo é também conhecido como cabo ``DTE-to-DTE''

  • O cabo de impressora serial, é necessário para algumas impressoras não comuns, é semelhante ao cabo null-modem, mas envia alguns sinais que estão curto-circuitados internamente.

Você deverá configurar alguns parametros da comunicação da impressora, que usualmente são feitos no painel frontal ou nas mini chaves (DIP switchs). Altere o valor de bps (bits por segundos, chamado frequentemente de baud rate) que é a taxa de transferência entre o computador e a impressora, ambos devem ter a mesma taxa de transferência. Selecione entre 7 e 8 bits; paridade par, ímpar ou nenhuma; ou 1 ou 2 stop bits. Também o protocolo de controle de fluxo; nenhum ou XON/XOFF (também conhecido como controle de fluxo por ``hardware'' (``in-band'') ou por ``software''. Lembre-se dessas configurações para poder aplica-las na configuração dos programas, como vamos verificar a seguir.

11.3.1.2. Configuração de Programa

Essa seção descreve as configurações necessárias para imprimir com o sistema LPD no FreeBSD.

Um resumo do que será visto neste passo:

  1. Configure o seu kernel, se necessário, para utilizar a porta que você deseja conectar a sua impressora. A seção Configuração do Kernel informa à você o que é necessário fazer.

  2. Configure o modo de comunicação da porta paralela, se você está usando a porta paralela; veja a seção Configure o Modo de Comunicação para a Porta Paralela para obter mais detalhes.

  3. Teste se o sistema operacional pode enviar dados para a impressora. A seção Verificando a Comunicação com a Impressora dá algumas sugestões de como fazer iso.

  4. Configure o LPD para a utilização da impressora, modificando o arquivo /etc/printcap. Você verá o que fazer mais tarde neste capítulo.

11.3.1.2.1. Configuração do Kernel

O kernel do sistema operacional é compilado para trabalhar com um determinado conjunto de dispositivos. As interfaces serial e paralela para a utilização da impressora fazem parte deste conjunto. Entretanto, pode ser necessário adcionar o suporte para uma porta serial ou paralela caso o seu kernel não esteja configurado.

Para saber se seu kernel já possui o suporte para interface serial, digite:

# grep sioN /var/run/dmesg.boot

Onde N é o número da porta serial, iniciando do zero. Se você ver algo semelhante à:

       sio2 at port 0x3e8-0x3ef irq 5 on isa
        sio2: type 16550A
   

Então o kernel suporta a porta.

Para saber se seu kernel já possui o suporte para interface paralela, digite:

# grep ppcN /var/run/dmesg.boot

Onde N é o número da porta paralela, iniciando do zero. Se você ver algo semelhante à:

       ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
        ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
        ppc0: FIFO with 16/16/8 bytes threshold

Então o kernel suporta a porta.

Você pode ter que reconfigurar o seu kernel para que o sistema operacional possa reconhecer e usar as portas paralela e/ou serial, para que você possa utilizar a impressora.

Para adcionar suporte a porta serial, consulte a seção de configuração do kernel. Para adcionar suporte a porta paralela consulte esta seção e a seção a seguir.

11.3.1.3. Adcionando Entradas para as Portas no /dev

Nota: FreeBSD 5.0 inclui o sistema de arquivos devfs, o qual automaticamente cria os nos dos dispositivos necessários. Se você está executando a versão do FreeBSD com devfs habilitado, você pode pular com segurança esta seção.

Uma vez que o kernel já suporta a comunicação ou pela porta paralela ou porta serial, você ainda precisa da interface de programa através da qual você irá enviar e receber dados. É para isso que server a entrada no diretório /dev server.

Para adicionar uma entrada para a porta no diretório /dev siga os passos:

  1. Torne-se o usuário root com o comando su(1) . Entre com a senha do usuário root quando for solicitado.

  2. Mude para o diretório /dev

    # cd /dev
    
  3. Digite:

           # ./MAKEDEV porta
           
    

    Onde a porta é a entrada para o dispositivo para a porta que você quer criar. Use lpt0 para a impressora conectada na primeira porta paralela, lpt1 para a segunda porta paralela, e assim consecutivamente; use ttyd0 para a primeira porta serial, ttyd1 para a segunda e assim consecutivamente.

  4. Digite:

    # ls -l porta
    

    Para ter certeza de que a entrada do dispositivo foi criada.

11.3.1.3.1. Configurando o Modo de Comunicação para a Porta Paralela

Quando você for usar a interface paralela, você deve escolher entre o modo utilizando interrupção ou por polling. Driver para o dispositivo genérico de impressora (lpt(4)) para FreeBSD 4.X e 5.X usa o sistema ppbus(4), o qual controla a porta do chipset com o driver ppc(4) driver.

  • O método de interrupção é o padrão com o kernel GENERIC. Com esse método o sistema operacional usa uma linha de interrupção IRQ para determinar se a impressora está pronta para receber os dados.

  • O método de polled direciona o sistema operacional para perguntar repetidamente se a impressora está pronta para receber dados. Quando a resposta é afirmativa, o sistema envia os dados.

O método de interrupção é normalmente mais rápido mas usa uma linha de IRQ preciosa. Algumas das novas impressoras HP não funcionam corretamente neste modo, aparentemente é um problema de temporização (ainda não completamente compreedido). Estas impressoras necessitam do modo de polling. Você deve utilizar um dos dois métodos para trabalhar. Algumas impressoras irão trabalhar em ambos os modos, mas ficaram sensivelmente mais lentas no modo de interrupção

Você pode configurar o modo de comunicação de duas maneiras: pela concifguração do kernel ou usando o programa lptcontrol(8)

Para configurar o mode de comunicação pelo kernel:

  1. Você deve editar o arquivo de configuração do kernel. Procure pela entrada ppc0. Se você for configurar a segunda porta paralela, use ppc1. Use ppc2 para a terceira porta, e assim consecutivamente.

    • Se você preferir o modo de interrrupção, para FreeBSD 4.X inclua a especificação da irq:

      device ppc0 at isa? irq N
      

      Onde N é a IRQ para a porta paralela do seu computador.

      Para o FreeBSD 5.X, edite a seguinte linha:

      hint.ppc.0.irq="N"
      

      No arquivo /boot/device.hints e troque N pelo número correto da IRQ. O arquivo de configuração do kernel também deve conter o driver ppc(4)

      device ppc
      
    • Se você for utilizar o modo de polling, não adcione a especificação da irq:

      Para o FreeBSD 4.X, use a seguinte linha no arquivo de configuração do kernel:

      device ppc0 at isa?
      

      Para o FreeBSD 5.X, simplesmente remova em seu arquivo /boot/device.hints a seguinte linha:

      hint.ppc.0.irq="N"
      


      Em alguns casos, isso não será suficiente para colocar a porta em modo de polling no FreeBSD 5.X. Na maior parte das vezes, isso é devido ao driver acpi(4), mas tarde habilita para detecção e atacha os dispositivos, e então controla o modo de acesso à porta da impressora. Você deve checar sua configutação acpi(4) para corrigir esse problema.

  2. Salve o arquivo. Então configure, compile e instale o novo kernel, e a seguir reinicie o seu sistema. Veja Configuração do Kernel para maiores detalhes.

Para configurar o modo de comunicação com lptcontrol(8):

  1. Digite:

    # lptcontrol -i -d /dev/lptN
    

    para configurar o modo de interrupção para a lptN.

  2. Digite:

    # lptcontrol -p -d /dev/lptN
    

    Para configurar o modo de polling para lptN.

Você pode colocar esses comandos no arquivo /etc/rc.local para configurar automaticamente na hora da inicialização do seu sistema. Veja lptcontrol(8) para maiores detalhes.

11.3.1.3.2. Testanto a Comunicação com a Impressora

Antes de prosseguir com a configuração do sistema spooling, você deve ter certeza que o seu sistema operacional teve sucesso em enviar dados para a impressora. É muito mais fácil depurar a conexão com a impressora e o sistema de spooling separadamente.

Para fazer o teste da impressora, precisamos enviar algum texto para a impressora. Para impressoras que podem imprimir caracteres diretamente, o programa lptest(1) é perfeito: ele gera todos os 96 caracteres imprimíveis da tabela ASCII em 96 linhas.

Para a impressora PostScript (ou outra linguagem ) nos iremos precisar de algo mais sofisticado para testar. Um pequeno programa PostScript como o que segue, é o sufuciente

%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage

O código PostScript acima pode ser colocado em um arquivo e usado como mostra os exemplos nas seções a seguir.

Nota: Quando esse documento refere-se a linguagem da impressora, é assumido que a linguagem é semelhante ao PostScript, e não o PCL da Hewlett Packard. Ainda que a linguagem PCL tenha grande funcionalidade, você pode mesclar texto puro com seguencias de controle com caracteres ESC. PostScript não pode ser impresso diretamente em impressoras de texto puro, e para impressoras que necessitem de outra linguagem para imprimir, será necessário acomodações.

11.3.1.3.2.1. Verificando a Impressora Paralela

Essa seção informa à você como verificar se o FreeBSD pode comunicar-se com a impressora conectada na porta paralela.

Para testar a impressora na porta paralela:

  1. Torne-se root com su(1).

  2. Envie Dados para a impressora.

    • Se a impressora poder imprimir texto puro, use lptest(1). Digite:

      # lptest > /dev/lptN
      

      Onde N é o número da porta paralela, iniciando em 0

    • Se a impressora entender PostScript ou outra linguagem de impressora, então envie um pequeno programa para a impressora. Digite:

      # cat > /dev/lptN
      

      Então a linha por linha, digite o programa cuidadosamente como você não poderá editar a linha caso tenha pressionado a tecla RETURN ou ENTER. Quando você terminar de digitar o programa, pressione as teclas CONTROL+D, ou tecla que for fim-de-arquivo.

      Alternativamente, você pode colocar o programa em um arquivo e digitar:

      # cat arquivo > /dev/lptN
      

      Onde arquivo é o nome do arquivo a ser digitado, que contenha o programa que você envia para a impressora.

Você deverá ver algo semelhante impresso. Não se preocupe se o texto não sair como esperado; nos iremos consertar algumas coisas mais tarde.

11.3.1.3.2.2. Verificando a Impressora Serial

Essa seção informa à você como verificar se o FreeBSD pode comunicar com a impressora pela porta serial.

Para testar a impressora na porta serial:

  1. Torne-se root com su(1).

  2. Edite o arquivo /etc/remote. Adicione a seguinte entrada:

    printer:dv=/dev/porta:br#bps-rate:pa=paridade
    

    Onde porta é o dispositivo para a porta serial (ttyd0, ttyd1, etc.), bps-rate é a taxa em bits-por-segundo pela qual a impressora irá se comunuicar, e paridade é a paridade requerida pela impressora (deve ser uma dessas, a seguir: par, ímpar, nenhum, ou zero).

    Aqui tem um exemplo de uma impressora conectada via terceira porta serial a uma taxa de 19200 bps sem paridade:

    printer:dv=/dev/ttyd2:br#19200:pa=none
    
  3. Conectando a impressora com tip(1). Digite:

    # tip printer
    

    Se esse passo não funcionar, edite o arquivo /etc/remote e tente usando /dev/cuaaN ao invés de /dev/ttydN.

  4. Envie dados para a impressora.

    • Se a Impressora pode imprimir texto puro, use lptest(1). Digite:

      % $lptest
      
    • Se a impressora entende PostScript ou outra liguagem, envie um pequeno programa para a impressora. Digite o programa linha-a-linha muito cuidadosamente porque as teclas de edição podem ter significado para a impressora. Você também pode precisar digitar o caracter especial de fim-de-arquivo para a impressora reconhecer que recebeu todo o programa. Para a impressora PostScript, pressione CONTROL+D.

      Alternativamente, você pode colocar o programa em um arquivo e digitar:

      % >arquivo
      

      Onde arquivo é o nome do arquivo que contém o programa. Apos tip(1) envia o arquivo, pressione a seguencia fim-de-arquivo.

Você deve ver algo impresso. Não se preocupe se o texto não se parecer correto; nós iremos consertar isso mais tarde.

11.3.1.4. Habilitando o Spooler: O Arquivo /etc/printcap

Nesse ponto, sua impressora deve estar conectada, seu kernel configurado e comunicando com a impressora, e você teve sucesso ao enviar dados para a impressora. Agora, nos estamos prontos para configurar LPD para controlar o acesso a sua impressora.

Você configura o LPD pela edição do arquivo /etc/printcap. O sistema de spooling LPD lê este arquivo a cada vez que o spooler é necessário então a atualização do arquivo se reflete imediatamente na aplicação.

O formato do arquivo printcap(5) é direto. Use o seu editor de texto favorito para realizar as mudanças no arquivo /etc/printcap. O formato é identico ao outros arquivos de compatibilidades como os /usr/share/misc/termcap e /etc/remote. Para completa informação sobre o formato, veja cgetent(3).

A simples configuração do spooler consiste em seguir os seguintes passos:

  1. Escolha um nome (e algum apelido conveniente) para a sua impressora, e coloque-o no arquivo /etc/printcap Veja a seção Nomeando a Impressora para maiores informações sobre dar nomes.

  2. Para desligar o cabeçalho de páginas (ele é habilitado por padrão) inserindo a chave sh; veja a seção Suprimindo o Cabeçalho de Páginas para maiores informações.

  3. Criando o diretório de spooling, e especificando a sua posição com a chave sd; veja a seção Criando o Diretório de Spooling para maiores informações

  4. Veja a entrada /dev para usar a sua impressora, e coloque ela dentro do arquivo /etc/printcap na chave lp; veja a seção Identificação do Dispositivo de Impressão para maiores informações. Se a impressora estiver na porta serial, configure os parâmetros de comunicação use a chave the ms# o qual é discutido na seção Configurando os Parâmetros Comunicação do Spooler .

  5. Instalar um filtro de entrada para texto puro; veja a seção Instalando o Filtro de Texto para mais detalhes:

  6. Testanto a configuração, imprimindo alguma coisa com o comando lpr(1). Mais detalhes estáo disponíveis em Tente isso e Localização de Defeitos

Nota: Impressora baseada em linguagem, como impressoras PostScript, não podem imprimir diretamente texto puro. A simples configuração descrita acima e descrita nas seções seguintes assume que se você está instalando uma impressora que você só irá imprimir arquivos que ela possa entender.

Usuários geralmente têm espectativa que eles possam imprimir texto puro para qualquer impressora instaladas em seu sistema. Programas que fazem interface entre o LPD e a impressora. Se você está instalando a impressora e gostaria de habilitar os jobs na linguagem da impressora e texto puro, você será fortemente encorajado a adicionar mais um passo ao esquema acima; instalar um programa de conversão de textopuro para PostScript (ou outra linguagem de impressora). A seção entitulada como Acomodando Jobs de Texto Puro em impressoras PostScript mostra como faze-lo.

11.3.1.4.1. Nomeando a Impressora

O primeiro e mais simples passo é escolher o nome para a sua impressora. Isso é; você deve escolher um nome funcional e cuidadosamente escolhido, deve também escolher apelidos para a sua impressora.

Pelo menos uma das impressoras especificadas no arquivo /etc/printcap deve ser um apelido para lp. Essa é o nome padrão para a impressora. Se o usuário não possuir a variável do ambiente PRINTER definida ou não especificar o nome da impressora na linha de comando de qualquer aplicativo que use LPD, então a impressora lp será usada como padrão.

Também é uma prática comum fazer um apelido para um nome que define completamente a impressora, incluindo a marca e o modelo.

Uma vez que você já tenha escolhido um nome e alguns apelidos, coloque eles no arquivo /etc/printcap. O nome da impressora deve estar na coluna mais a esquerda. Separando cada apelido com uma barra vertical (pipe) e terminar com o caracter : (dois pontos)

O exemplo a seguir é um esqueleto para o arquivo /etc/printcap que define duas impressoras (uma Diablo 630 matricial e uma Panasonic KX-P4455 PostScript que é uma impressora à laser):

#
#  /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:
   

Nesse exemplo, a primeira impressora é chamada de rattan e possui como apelido line, diablo, lp, e Diablo 630 Line Printer. Como ela tem como apelido lp, ela é a impressora padrão para o sistema. E a segunda e chamada de bamboo, e tem como apelidos ps, PS, S, panasonic, e Panasonic KX-P4455 PostScript v51.4.

11.3.1.4.2. Suprimindo a Página de Cabeçalho

O sistema de spooling LPD por padrão imprime uma página de cabeçalho para cada job. A página de cabeçalho contém o nome do usuário que pediu o serviço, a máquina de onde o pedido originou, e o nome do job, em letras grandes. Para testes iremos desativar a página de cabeçalho.

Para desabilitar a página de cabeçalho, adicione a entrada sh no arquivo /etc/printcap. Segue um exemplo do arquivo /etc/printcap com essa opção sh desabilitada.

#
#  /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:

Note como usamos o correto formato: A primeira linha inicia na columa mais à esquerda, e as linhas subsequentes são alinhadas com uma caracter TAB simples. Cada linha, exceto a ultima, termina com uma barra invertida (\).

11.3.1.4.3. Criando o Diretório de Spooling

O próximo passo na configuração simples do spooler é criar o diretório de spooling, é o diretório onde o jobs mantém o que será impresso, e outros arquivos de suporte do spooler.

Por causa da variação natural do diretório de spooling, ele é colocado sob o diretório /var/spool. Não é necessário realizar backups do conteúdo deste diretório. Você pode recria-lo com o comando mkdir(1).

Ele também cria o diretório com o nome idêntico ao da impressora, como é mostrado abaixo:

# mkdir /var/spool/printer-name

Entretando, se você possui uma grande quantidade de impressoras na sua rede, você pode querer colocar o diretório de spooling em um único diretório que você reservou para a impressão com LPD. Nós iremos fazer isso com exemplo de duas impressoras rattan e bamboo:

# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo

Nota: Se você está preocupado com a privacidade dos jobs que seus usuarios estão imprimindo, você talvez queira proteger o diretório de spooling que o mesmo não tenha acesso público. O diretório de spooling deve ter como dono o usuário e grupo deamon e deverá ser acessivel para leitura, escrita e execução e para mais ninguém. Veja o próximo exemplo onde será feito isso:

# chown daemon:daemon /var/spool/lpd/rattan
# chown daemon:daemon /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan
# chmod 770 /var/spool/lpd/bamboo

Finalmenente, você deverá informar ao LPD sobre este diretorio, usando o arquivo /etc/printcap. Você especifica o nome do diretório de spooling com a opção sd:

#
#  /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:

Note que o nome da impressora inicia na primeira coluna mas as outras entradas deverá ser alinhada com um caracter TAB e cada linha deverá terminar com uma barra invertida (\).

Se você não especificar o diretório de spooling com sd, o sistema de spooling irá usar o diretório padrão /var/spool/lpd

11.3.1.4.4. Identificando o Dispositivo de Impressão

Na seção Adicionando Entradas no /dev Para Portas, identificamos qual entrada no diretório /dev o FreeBSD irá usar para se comunicar com a impressora. Agora, nós iremos informar ao LPD qual porta usar. Quando o sistema de spooling tem um job para imprimir, ele irá abrir o dispositivo especificado no suporte do programa de filtro (o qual é responsável por passar os dados para a impressora).

Listar as entradas do diretório /dev no arquivo /etc/printcap usando a opção lp.

Em nosso exemplo executado, nós assumimos que a impressora rattan está na primeira porta paralela e a impressora bamboo está na sexta porta serial; segue aqui as adições ao arquivo /etc/printcap:

#
#  /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyd5:
   

Se você não especificar a opção lp para a impressora em seu arquivo /etc/printcap, o LPD irá utilizar /dev/lp como padrão. A entrada /dev/lp não existe mais no FreeBSD.

Se a impressora que você está instalando é conectada na porta paralela, pule para a seção entitulada como Instalando o Filtro de Texto . Caso contrário, siga as instruções na próxima seção

11.3.1.4.5. Configurando Parametros de Comunicação do spooling

Para impressoras na porta serial, no LPD podemos ajustar a taxa de bps, a paridade, e outros parâmetros da porta serial com o apoio do programa de filtro que envia dados para a impressora. Isso pode ser uma grande vantagem uma vez que:

  • Permite tentar diferentes configurações de parametros para a comunicação, simplesmente editando o arquivo /etc/printcap; você não precisa recompilar o programa de filtro.

  • Ele habilita o sistema de spooling para usar o mesmo programa de filtro para multiplas impressoras, as quais têm diferentes configurações de comunicação serial.

As seguintes entradas do arquivo /etc/printcap possuem habilidade para controlar os parâmetro da comunicação serial do dispositivos listados nas habilidades do lp:

br#bps-rate

Configura a velocidade de comunicação com o dispositivo para bps-rate, onde bps-rate pode ser 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, ou 115200 bits-per-second.

ms#stty-mode

Configura a opção do dispositivo terminal depois de aberto o dispositivo. stty(1) explica a opções disponíveis

Quando o LPD abre o dispositivo especificado pela opção lp, ele configura as características do dispositivos para aquelas especificadas na opção ms#. De particular interesse podemos destacar os modos parenb, parodd, cs5, cs6, cs7, cs8, cstopb, crtscts, e ixon os quais serão explicados na página do manual stty(1)

Vamos mostrar um exemplo de configuração de uma impressora serial conectada na sexta porta serial. Nós iremos configurar com a taxa de bps para 38400. Para o modo nós iremos configurar sem paridade com a opção -parenb, caracteres de 8-bit cs8, sem controle de modem clocal e hardware flow control crtscts:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:

11.3.1.4.6. Instalando um Filtro de Texto

Nós já estamos prontos para informar ao LPD qual o filtro de texto que queremos utilizar para enviar jobs para a impressora. Um filtro de texto, também conhecido como filtro de entrada, é um programam que é execudado pelo LPD quando um tem job para ser impresso. Quando o LPD executa o filtro de texto para a impressora, ele configura a entrada padrão do filtro para o job a ser impresso, e a sua saída padrão é enviada para a impressora especificada em lp. O filtro está pronto para receber o job pela entrada padrão, executando a tradução necessária para a impressora, e escrevendo o resultado na saída padrão, a qual será enviada à impressora. Para maiores informações, consulte a seção de Como os Filtros funcionam

Para essa configuração simples, o filtro pode ser um pequeno shell script que execute o comando /bin/cat para enviar o job para a impressora. O FreeBSD vem com um outro filtro chamado lpf e pega os caracteres de backspacing e sublinhados que algumas impressoras não conseguem manipular, você pode então utilizar outro programa de filtro que desejar. O filtro lpf é descrito em detalhes na seção entitulada lpf: Um Filtro de Texto.

Primeiro, iremos criar um shell script chamado de /usr/local/libexec/if-simple para ser um filtro de texto simples. Coloque o seguinte texto dentro dele, utilizando o seu editor de texto favorito:

#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout.  Ignores all filter arguments.

/bin/cat && exit 0
exit 2

Deixe o arquivo com permissão de execução

# chmod 555 /usr/local/libexec/if-simple

E então diga ao LPD que utilize esse filtro, especificando a opção if dentro do arquivo /etc/printcap. Nós iremos adicionar duas impressoras como no exemplo do /etc/printcap:

#
#  /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\ :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :sh:sd=/var/spool/lpd/bamboo:\
        :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
        :if=/usr/local/libexec/if-simple:

11.3.1.4.7. Ligando o LPD

lpd(8) é executado a partir do arquivo /etc/rc, controlado pela variável lpd_enable. O valor padrão para esta variável é NO. Se você ainda não o fez, adicione a linha

lpd_enable="YES"

ao arquivo /etc/rc.conf, e então reinicie a sua máquina, ou etão execute simplesmente lpd(8).

# lpd

11.3.1.4.8. Tente Isso

Você chegou ao fim da configuração simples do LPD. Infelizmente, ainda não é hora de cantar vitória , uma vez que ainda não testamos a configuração e correção de algum problema. Para testar a configuração, tente imprimir algo. Para imprimir com o sistema LPD, você usa o comando lpr(1), que envia o job para a impressora.

Você pode combinar o lpr(1) com o programa lptest(1), introduzido na seção Verificando a comunicação com a Impressora para gerar texto para texto.

Para testar a configuração simples do LPD

Digite:

# lptest 20 5 | lpr -PNome-da-impressora

Onde Nome-da-impressora é o nome dado à impressora (ou um de seus apelidos) no arquivo /etc/printcap. Para testar a impressora padrão do sistema, digite lpr(1) sem opções -P. Novamente, se você está testando a impressora que espera PostScript, utilize um programa que gere uma saída PostScript ao invés de utilizar o lptest(1). Você pode colocar um código PostScript dentro de um arquivo e digitar lpr nome do arquivo.

Para uma impressora PostScript, você deve saber quais foram os dados enviados do programa para a impressora, para saber se este foi impresso corretamente. Se você estiver usando o lptest(1), você deve ter como resultado algo semelhante à:

!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678

Para facilitar o teste de impressão, tente fazer a transferência de um arquivo grande (para a linguagem da impressora) ou executar lptest(1) com diferentes argumentos. Por exemplo, lptest 80 60 irá produzir 60 linhas com 80 caracteres cada.

Se a impressora não funcionar, veja a seção entitulada Localização de Defeitos

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.