No puedo hacer que mi impresora Canon LBP se ejecute en Ubuntu 14.04

17

Descargué el controlador Linux CAPT V2.60 de Canon e instalé ambos paquetes .deb, que se enumeraron en la carpeta de 64 bits con Ubuntu Software-Center. Mi impresora Canon aún no será reconocida. ¿Hay algo más que deba hacer? Mi impresora está conectada a través de USB.

Ubuntu sería un gran reemplazo para mi oficina, pero desafortunadamente sin el soporte de la impresora todavía confiaré en Windows.

ingrese la descripción de la imagen aquí

empedokles
fuente
No culpe a Ubuntu por la falta de soporte de Canon a Linux.
Rinzwind
@Rinzwind Creo que Ubuntu tendría suficiente poder para hablar con Canon para lograr un mejor soporte.
empedokles
No, te equivocas allí. Simple: Canon como empresa quiere dinero. Y Canonical no pagará (va en contra de los ideales de la empresa). Todo el soporte que ve con respecto a Canon en Ubuntu es de un voluntario (!) (Michael gruz en launchpad launchpad.net/~michael-gruz/+archive/canon-trunk ).
Rinzwind
@Rinzwind De acuerdo con las instrucciones, abrí un terminal e hice "sudo add-apt-repository ppa: michael-gruz / canon-trunk" y "sudo apt-get update". ¿Algo más?
empedokles
1
Ese PPA está obsoleto, no es compatible con Ubuntu 14.04.
Bain

Respuestas:

14

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:

  • 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
    

Ahora busque /usr/share/cups/modellos 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.ppdqué 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 strcpyen 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:

  1. Habilite el script cups init (update-rc.d cups defaults).

  2. 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:

[email protected]

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.

baño
fuente
Gracias. También siempre busco la eficiencia energética. ¿Qué pasa con LaserJet Pro P1102? topten.ch/deutsch/buro/laserdrucker/…
empedokles
De acuerdo con la página HPLIP P1102, esa impresora es totalmente compatible con Ubuntu 14.04. Requiere un complemento de código cerrado descargable; proporcionan software ( hp-setup) que realizará la descarga y lo configurará.
bain
1
¡Gracias por la respuesta! Por cierto, ¿cómo sabías que libstdc++6:i386 libxml2:i386 zlib1g:i386era necesario? Las instrucciones mencionaron ia32-libs, lo que desde entonces ha estado ausente en versiones posteriores de Ubuntu, por lo que me he preguntado cuál era el reemplazo.
syockit
1
@syockit Si lo ejecuta file canon/libcapt.so, identificará las bibliotecas de Canon como "ELF de 32 bits", por lo que sabemos que necesita bibliotecas dinámicas de 32 bits. Ejecute ldd así ldd canon/libcapt.so: el enlazador imprimirá las bibliotecas dinámicas necesarias y mostrará las que no se encuentran. Luego puede usar apt-file search libpthread.sopara encontrar el paquete en el que se encuentran las bibliotecas.
bain