El controlador de impresora Canon CAPT es de código cerrado y las bibliotecas binarias suministradas por Canon están compiladas para i386. Entonces, si está en amd64, primero deberá habilitar multiarch e instalar algunas bibliotecas:
# amd64 only
dpkg --add-architecture i386
apt-get update
apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386
Instale tazas si aún no lo tiene:
apt-get install cups
Descargue y desempaquete el controlador de la impresora 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 un controlador de 32 bits o 64 bits dependiendo de su arquitectura:
Ahora busque /usr/share/cups/model
los archivos ppd que describen las impresoras y elija el que coincida (o esté más cerca) de su impresora:
# grep -H ModelName /usr/share/cups/model/*.ppd | less
...
/usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)"
En este caso, elegimos CNCUPSLBP6018CAPTS.ppd
qué coincide con el modelo LBP6000.
Agregar impresora:
# lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687
# lpadmin -p LBP6000 -E
# ccpdadmin -p LBP6000 -o /dev/usb/lp0
Y configure su sistema para iniciar el demonio ccpd de Canon automáticamente:
# update-rc.d ccpd defaults
Problemas
Existen varios problemas con el controlador de impresora Canon:
Fue construido para Debian y la última versión de Ubuntu compatible fue 12.04. Sin embargo, funciona en 14.04.
Incluye bibliotecas binarias de código cerrado creadas para i386 de 32 bits, por lo que no se puede ejecutar de forma nativa en amd64 (incluso en el paquete de 64 bits)
captstatusui incluye una llamada ilimitada a strcpy
en cnsktmodule.c que falla con error aborted *** buffer overflow detected ***
en algunos sistemas
El controlador de impresora Canon es en realidad un demonio separado que habla con las tazas a través de un zócalo local o de red; deja un puerto de red abierto en su sistema, y dudo que el código de Canon haya sido auditado por vulnerabilidades de seguridad
La impresora puede aparecer dos veces en tazas (una vez para una impresora USB con detección automática, una vez como demonio CCPD de Canon) pero la impresora "USB" no funcionará si intenta imprimir en ella. En la configuración de la impresora, si ve su impresora configurada como impresora USB, debe deshabilitarla manualmente (clic derecho, deshabilitar)
Canon utiliza su propio software y protocolo patentados para hablar con la impresora, por lo que no está integrada con las tazas, no se detecta automáticamente y requiere la instalación manual de un controlador. Es razonable esperar que una impresora se detecte automáticamente y solo funcione, pero esto no es posible con Canon LBP. Mi próxima impresora será una impresora que "simplemente funciona" con controladores de código abierto, probablemente una impresora de red que admita el estándar PCL - Printer Command Language , como la Brother HL-2250DN (impresora de red dúplex barata, anteriormente la impresora láser más vendida de Amazon) , o una impresora recomendada por HP Linux que funciona con su software HPLIP de código abierto.
Los scripts de compilación para el código fuente son antiguos y un poco desordenados. Debido a la inclusión de bibliotecas binarias i386 de código cerrado, y la falta de soporte para multiarch en los scripts de compilación, sería muy difícil compilar una versión de 64 bits totalmente funcional. Compilar una versión de 32 bits, en un sistema de 32 bits, es posible una vez que haya solucionado los diversos errores en el sistema de compilación.
Problema: ccpd se cuelga
A veces, ccpd se cuelga y la cola solo dice "Procesando desde ..."
Pruebe un reinicio manual:
pkill -9 -x ccpd
pkill -9 -x captmoncnabc
/etc/init.d/ccpd start
/etc/init.d/ccpd status
Problema: ccpd no funciona: solo se ejecuta un proceso ccpd después del inicio del sistema
Para el funcionamiento normal, dos procesos ccpd deberían ejecutarse en un sistema. El demonio ccpd depende de ejecutar cups daemon antes de bifurcar el segundo proceso. Puede usar el siguiente método para solucionar el problema:
Habilite el script cups init (update-rc.d cups defaults).
Indique al script de inicio ccpd que se ejecute después del inicio de cups (update-rc.d ccpd predeterminado 99), o agregue "sleep 10 && /etc/init.d/ccpd start" en el script /etc/rc.local.
Si desea utilizar las reglas UDEV y el script de inicio, tenga en cuenta que las reglas UDEV se ejecutan antes que el script de inicio CUPS, por lo que puede ser útil reiniciar el script de inicio ccpd en lugar de simplemente iniciarlo. Por ejemplo, puede colocar la siguiente cadena en "/etc/rc.local":
sleep 10 && /etc/init.d/ccpd restart
(Solución del
wiki de Ubuntu )
Informar errores y problemas al soporte de Canon
Canon tiene una dirección de correo electrónico oficial para informar cualquier error o problema con el controlador:
sup-debian@list.canon.co.jp
Construir desde la fuente
Si tiene la tentación de intentar construir e instalar desde el origen, siga estas instrucciones (el script de compilación de Arch también puede ayudar):
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
Incluyo esto solo como una nota para cualquier persona inclinada a seguir este camino. La mayoría de las personas no deberían intentar construir esto desde la fuente. Incluso en un sistema amd64, el paquete resultante incluirá las bibliotecas cerradas i386.