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/model
os 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.ppd
qual 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 strcpy
no 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.