Não consigo executar a impressora Canon LBP no Ubuntu 14.04

17

Fiz o download do driver Linux CAPT V2.60 da Canon e instalei os dois pacotes .deb, listados na pasta de 64 bits no Ubuntu Software-Center. Minha impressora Canon ainda não será reconhecida. Há mais alguma coisa que eu tenho que fazer? Minha impressora está conectada via USB.

O Ubuntu seria um ótimo substituto para o meu escritório, mas, infelizmente, sem o suporte da impressora, ainda vou confiar no Windows.

insira a descrição da imagem aqui

empédocles
fonte
Não culpe o Ubuntu pela falta de suporte da Canon ao Linux.
Rinzwind
@Rinzwind Acho que o Ubuntu teria poder suficiente para conversar com a Canon para obter um melhor suporte.
Empedokles
Não, você está errado lá. Simples: a Canon, como empresa, quer dinheiro. E a Canonical não pagará (é contra os ideais da empresa). Todo o suporte que você vê em relação à Canon no Ubuntu é de um voluntário (!) (Michael gruz na barra de lançamento launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind
@Rinzwind De acordo com as instruções, eu abri um terminal e fiz "sudo add-apt-repository ppa: michael-gruz / canon-trunk" e "sudo apt-get update". Algo mais?
Empedokles
11
Esse PPA é obsoleto, não suporta o Ubuntu 14.04.
bain

Respostas:

14

O driver da impressora Canon CAPT é de código fechado e as bibliotecas binárias fornecidas pela Canon são compiladas para o i386. Portanto, se você estiver no amd64, primeiro precisará ativar o multiarch e instalar algumas bibliotecas:

# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386

Instale copos se você ainda não o tiver:

apt-get install cups

Faça o download e descompacte o driver da impressora Canon CAPT:

wget http://gdlp01.c-wss.com/gds/6/0100004596
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz

Instale o driver de 32 ou 64 bits, dependendo da sua arquitetura:

  • 32 bits

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb
    
  • 64 bits

    dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/64-bit_Driver/Debian/*.deb
    

Agora procure /usr/share/cups/modelos arquivos ppd que descrevem as impressoras e escolha o que corresponde (ou mais próximo) à sua impressora:

# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"

Nesse caso, escolhemos CNCUPSLBP6018CAPTS.ppdqual corresponde ao modelo LBP6000.

Adicionar impressora:

# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0

E configure seu sistema para iniciar o daemon ccpd da Canon automaticamente:

# update-rc.d ccpd defaults

Problemas

Existem vários problemas com o driver de impressora Canon:

  • Foi construído para o Debian e a última versão suportada do Ubuntu foi a 12.04. Mas funciona em 14.04.

  • Ele inclui bibliotecas binárias de código fechado, criadas para o i386 de 32 bits, portanto não podem ser executadas nativamente no amd64 (mesmo no pacote de 64 bits)

  • captstatusui inclui uma chamada ilimitada strcpyno cnsktmodule.c que falha com erro aborted *** buffer overflow detected ***em alguns sistemas

  • O driver da impressora Canon é, na verdade, um daemon separado que se comunica com os copos por um soquete local ou de rede - deixa uma porta de rede aberta no sistema e duvido que o código da Canon já tenha sido auditado quanto a vulnerabilidades de segurança

  • A impressora pode aparecer duas vezes em xícaras (uma vez para impressora USB detectada automaticamente, uma vez como daemon CCPD da Canon), mas a impressora "USB" não funcionará se você tentar imprimir nela. Nas configurações da impressora, se a impressora estiver configurada como impressora USB, desative-a manualmente (clique com o botão direito do mouse, desative)

  • A Canon usa seu próprio software e protocolo proprietário para conversar com a impressora, e é por isso que não é integrada aos copos, não é detectada automaticamente e requer que um driver seja instalado manualmente. É razoável esperar que uma impressora seja automaticamente detectada e funcione, mas isso não é possível com o Canon LBP. Minha próxima impressora será uma impressora que "simplesmente funcione" com drivers de código aberto, provavelmente uma impressora de rede que suporte o padrão PCL - Printer Command Language , como o Brother HL-2250DN (impressora de rede dúplex barata, anteriormente impressora a laser mais vendida na Amazon) , ou uma impressora recomendada pela HP Linux que funcione com o software HPLIP de código aberto.

  • Os scripts de construção para o código-fonte são antigos e um pouco confusos. Devido à inclusão de bibliotecas binárias i386 de código fechado e à falta de suporte para multiarch nos scripts de construção, seria muito difícil compilar uma versão de 64 bits totalmente funcional. A compilação de uma versão de 32 bits, em um sistema de 32 bits, é possível depois de solucionar os vários erros no sistema de compilação.


Problema: ccpd trava

Às vezes, o ccpd trava e a fila diz apenas "Processando desde ..."

Tente uma reinicialização manual:

pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status

Problema: o ccpd não funciona - apenas um processo do ccpd é executado após a inicialização do sistema

Para operação normal, dois processos ccpd devem estar em execução em um sistema. O daemon ccpd depende da execução do daemon cups antes de bifurcar o segundo processo. Você pode usar o seguinte método para solucionar o problema:

  1. Habilite o script init do cups (padrão de update-rc.d cups).

  2. Instrua o script init do ccpd a executar após o cups init (update-rc.d ccpd assume o padrão 99) ou adicione "sleep 10 && /etc/init.d/ccpd start" no script /etc/rc.local.

Se você deseja usar regras UDEV e script de inicialização, lembre-se de que as regras UDEV são executadas antes do script de inicialização do CUPS; portanto, pode ser útil reiniciar o script de inicialização do ccpd em vez de simplesmente iniciar. Por exemplo, você pode colocar a seguinte string em "/etc/rc.local":

sleep 10 && /etc/init.d/ccpd restart

(Solução do wiki do Ubuntu )


Relatar bugs e problemas ao suporte da Canon

A Canon possui um endereço de e-mail oficial para relatar bugs e problemas com o driver:

[email protected]

Construir a partir da fonte

Se você estiver tentado a criar e instalar a partir do código-fonte, siga estas instruções (o script de construção do Arch também pode ajudar):

sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev

wget http://gdlp01.c-wss.com/gds/6/0100004596/03/Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
tar -zxvf Linux_CAPT_PrinterDriver_V260_uk_EN.tar.gz
cd Linux_CAPT_PrinterDriver_V260_uk_EN/Src/

# do cndrvcups-common
sudo apt-get install build-essential automake libtool libgtk2.0-dev libglade2-dev libcups2-dev
rm -rf cndrvcups-common-2.60-1/
tar -zxvf cndrvcups-common-2.60-1.tar.gz
cd cndrvcups-common-2.60-1/
sed -i -e 's/-lcups/-lcups -lgmodule-2.0/' cngplp/src/Makefile.am
dpkg-buildpackage -b -uc
cd ..
sudo apt-get install cups
sudo dpkg -i cndrvcups-common_2.60-1_amd64.deb

# do cndrvcups-capt
rm -rf cndrvcups-capt-2.60-1/
tar -zxvf cndrvcups-capt-2.60-1.tar.gz
cd cndrvcups-capt-2.60-1/
export echo=echo
sed -i -e 's/dh_shlibdeps/dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info/' debian/rules
sed -i -e 's/eval cmds=\"$old_archive_cmds/echo/' cngplp/ltmain.sh
sed -i -e 's:uimain.h":uimain.h"\n#include <cups/ppd.h>:' statusui/src/ppapdata.c
sed -i -e 's/cnsktmodule.la/cnsktmodule.la -lpthread/' statusui/src/Makefile.am
debian/rules configure
sed -i -e 's/RANLIB=/#RANLIB=/' cngplp/libtool
debian/rules build
fakeroot debian/rules install
fakeroot debian/rules binary-arch
cd ..
sudo dpkg -i cndrvcups-capt_2.60-1_amd64.deb

Estou incluindo isso apenas como uma nota para qualquer pessoa inclinada a seguir esse caminho. A maioria das pessoas não deve tentar construir isso a partir da fonte. Mesmo em um sistema amd64, o pacote resultante incluirá as bibliotecas i386 fechadas.

banho
fonte
Obrigado. Eu também sempre procuro eficiência energética. E o LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/…
empedokles
De acordo com a página HPLIP P1102, a impressora é totalmente suportada no Ubuntu 14.04. Requer um plug-in de código fechado para download; eles fornecem software ( hp-setup) que fará o download e o configurará.
bain
11
Obrigado pela resposta! A propósito, como você sabia que isso libstdc++6:i386 libxml2:i386 zlib1g:i386era necessário? As instruções mencionaramia32-libs , que esteve ausente em versões posteriores do Ubuntu, então eu me perguntei qual era a substituição.
9139 syockit
11
@syockit Se você executar, file canon/libcapt.soele identificará as bibliotecas Canon como "ELF 32 bits", então sabemos que ele precisa de bibliotecas dinâmicas de 32 bits. Execute o ldd da seguinte forma ldd canon/libcapt.so- o vinculador imprimirá todas as bibliotecas dinâmicas necessárias e mostrará aquelas que não foram encontradas. Você pode usar apt-file search libpthread.sopara encontrar o pacote em que as bibliotecas estão.
bain