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:
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:
Habilite o script init do cups (padrão de update-rc.d cups).
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:
sup-debian@list.canon.co.jp
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.