无法让我的Canon LBP打印机在Ubuntu 14.04下运行

我从佳能下载了Linux CAPT驱动程序V2.60并安装了两个.deb软件包,这些软件包在Ubuntu软件中心的64位文件夹下列出。 我的佳能打印机仍然无法识别。 还有什么我必须做的吗? 我的打印机通过USB连接。

Ubuntu会为我的办公室做出很好的替换,但不幸的是,如果没有打印机支持,我仍然会依赖Windows。

在此处输入图像描述

Canon CAPT打印机驱动程序是封闭源代码,Canon提供的二进制库是针对i386编译的。 因此,如果您使用的是amd64,则需要首先启用multiarch并安装一些库:

# amd64 only dpkg --add-architecture i386 apt-get update apt-get install libstdc++6:i386 libxml2:i386 zlib1g:i386 libpopt0:i386 

如果您还没有安装杯子:

 apt-get install cups 

下载并打开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 

根据您的体系结构安装32位或64位驱动程序:

  • 32位

     dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/32-bit_Driver/Debian/*.deb 
  • 64位

     dpkg -i Linux_CAPT_PrinterDriver_V260_uk_EN/64-bit_Driver/Debian/*.deb 

现在在/usr/share/cups/model查找描述打印机的ppd文件,并选择与打印机匹配(或最接近)的打印机:

 # grep -H ModelName /usr/share/cups/model/*.ppd | less ... /usr/share/cups/model/CNCUPSLBP6018CAPTS.ppd:*ModelName: "Canon LBP6000/LBP6018 CAPT (US)" 

在这种情况下,我们选择了匹配型号LBP6000的CNCUPSLBP6018CAPTS.ppd。

添加打印机:

 # lpadmin -p LBP6000 -m CNCUPSLBP6018CAPTS.ppd -v ccp://localhost:59687 # lpadmin -p LBP6000 -E # ccpdadmin -p LBP6000 -o /dev/usb/lp0 

并配置您的系统以自动启动Canon ccpd守护程序:

 # update-rc.d ccpd defaults 

问题

佳能打印机驱动程序有几个问题:

  • 它是为Debian构建的,最后支持的Ubuntu版本是12.04。 它确实在14.04工作。

  • 它包括为32位i386构建的闭源二进制库,因此无法在amd64上本机运行(即使在64位软件包中)

  • captstatusui包含对cnsktmodule.c中strcpy的无限制调用,该调用因错误aborted *** buffer overflow detected ***而失败aborted *** buffer overflow detected ***在某些系统上aborted *** buffer overflow detected ***

  • 佳能打印机驱动程序实际上是一个单独的守护程序,通过本地或网络套接字与杯子通信 – 它在您的系统上留下了一个开放的网络端口,我怀疑佳能代码是否曾因安全漏洞而受到审核

  • 打印机可以在杯子中出现两次(一次用于自动检测USB打印机,一次用作Canon CCPD守护程序)但如果您尝试打印它,“USB”打印机将无法工作。 在打印机设置中,如果您将打印机配置为USB打印机,则必须手动禁用它(右键单击,禁用)

  • 佳能使用他们自己的专有软件和协议与打印机通信,这就是为什么它没有与杯子集成,不会被自动检测,并且需要手动安装驱动程序。 可以合理地预期应该自动检测打印机并且正常工作,但使用Canon LBP是不可能的。 我的下一台打印机将是一台“只适用于”开源驱动程序的打印机,可能是支持PCL的网络打印机- 打印机命令语言标准,如Brother HL-2250DN (廉价双工网络打印机,以前是亚马逊最畅销的激光打印机) ,或HP Linux推荐的打印机 ,与他们的开源HPLIP软件一起使用。

  • 源代码的构建脚本是旧的,有点乱。 由于包含了闭源i386二进制库,并且在构建脚本中缺少对multiarch的支持,因此编译完全可用的64位版本将非常困难。 一旦您解决了构建系统中的各种错误,就可以在32位系统上编译32位版本。


问题:ccpd挂起

有时ccpd挂起,队列只是说“处理后……”

尝试手动重启:

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

问题:ccpd不起作用 – 系统启动后只运行一个ccpd进程

对于正常操作,应在系统中运行两个ccpd进程。 在分支第二个进程之前,ccpd守护程序依赖于运行cups守护程序。 您可以使用以下方法来解决此问题:

  1. 启用cups init脚本(update-rc.d cups默认值)。

  2. 指示ccpd init脚本在cups init之后运行(update-rc.d ccpd默认为99),或在/etc/rc.local脚本中添加“sleep 10 && /etc/init.d/ccpd start”。

如果要使用UDEV规则和启动脚本,请注意UDEV规则在CUPS init脚本之前执行,因此重新启动ccpd init脚本而不是简单地启动它可能很有用。 例如,您可以将以下字符串放在“/etc/rc.local”中:

睡10 && / etc / init.d / ccpd重启

(来自Ubuntu wiki的解决方案)


向Canon支持报告错误和问题

佳能有一个官方电子邮件地址,用于报告驱动程序的任何错误和问题:

 sup-debian@list.canon.co.jp 

从源头构建

如果您想尝试从源代码构建和安装,请按照以下说明操作( Arch构建脚本也可以提供帮助):

 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 :' 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 

对于任何倾向于遵循这条道路的人来说,我都把这包括在内。 大多数人不应该尝试从源代码构建它。 即使在amd64系统上,生成的软件包也将包含已关闭的i386库。