Não é possível executar minha impressora Canon LBP no Ubuntu 14.04

13

Eu baixei o driver Linux CAPT V2.60 da Canon e instalei ambos os pacotes .deb, que foram listados sob a pasta 64bit com o Ubuntu Software-Center. Minha impressora Canon ainda não será reconhecida. Há mais alguma coisa que eu tenha 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, eu ainda confiarei no Windows.

    
por empedokles 09.05.2014 / 11:43

1 resposta

12

O driver de impressora Canon CAPT é de código fechado e as bibliotecas binárias fornecidas pela Canon são compiladas para i386. Então, se você estiver no amd64, você precisará primeiro 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 xícaras se você ainda não tiver:

apt-get install cups

Faça o download e descompacte o driver de 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 um 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 em /usr/share/cups/model os arquivos ppd que descrevem as impressoras e escolha aquela que corresponde (ou está mais próxima) da 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.ppd , que 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 da impressora Canon:

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

  • Inclui bibliotecas binárias de código fechado que são construídas para i386 de 32 bits, portanto, não pode ser executada nativamente em amd64 (mesmo no pacote de 64 bits)

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

  • O driver de impressora da Canon é na verdade um daemon separado que fala com xícaras em um soquete local ou de rede - ele deixa uma porta de rede aberta no sistema e duvido que o código da Canon já tenha sido auditado por vulnerabilidades de segurança

  • A impressora pode aparecer duas vezes em xícaras (uma vez para a 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, você deverá desativá-la manualmente (clique com o botão direito, desative)

  • A Canon usa seu próprio software e protocolo proprietários para conversar com a impressora, e é por isso que ela não é integrada a xícaras, não é detectada automaticamente e requer a instalação manual de um driver. É razoável esperar que uma impressora seja detectada automaticamente e funcione, mas isso não é possível com o Canon LBP. Minha próxima impressora será uma impressora que "simplesmente funciona" com drivers de código aberto, provavelmente uma impressora de rede que suporte o PCL - Printer Command Language padrão, como o Brother HL-2250DN ( impressora de rede duplex, a impressora laser mais vendida da Amazon), ou uma impressora recomendada pela HP para Linux que funciona com a impressora aberta fonte software HPLIP .

  • Os scripts de construção do código-fonte são antigos e um pouco confusos. Devido à inclusão de bibliotecas binárias de código fechado i386 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 ter trabalhado em torno dos vários bugs no sistema de compilação.

Problema: o ccpd trava

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

Tente reiniciar manualmente:

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

Problema: ccpd não funciona - apenas um processo ccpd em execução 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 forçar o segundo processo. Você pode usar o seguinte método para solucionar o problema:

  1. Ative o script init de cups (padrão de xícaras update-rc.d).

  2. Instrua o script init ccpd a ser executado após o init dos cups (update-rc.d ccpd default 99) ou adicione "sleep 10 & amp; /etc/init.d/ccpd start" em / etc script /rc.local.

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

dormir 10 & amp; & amp; /etc/init.d/ccpd restart

(Solução de wiki do Ubuntu )

Reportando bugs e problemas ao suporte da Canon

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

[email protected]

Construir a partir da fonte

Se você estiver tentado a tentar criar e instalar a partir do código-fonte, siga estas instruções (o O script de compilaçã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 um que esteja inclinado 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.

    
por bain 11.05.2014 / 15:11